From e27373faa33c5e01eaab1cb7cab006fdfb731cd0 Mon Sep 17 00:00:00 2001 From: Matthew Monroe Date: Mon, 6 Nov 2006 07:23:57 +0000 Subject: [PATCH] Initial import of the Molecular Weight Calculator --- ABOUT.FRM | 337 + About.frx | Bin 0 -> 2773 bytes AminoAcids.txt | 20 + AminoAcids.txt.out | 20 + Batch.txt | 136 + BatchComputePeptideMass.txt | 23 + BatchComputePeptideMass.txt.out | 9052 ++++++++++++++++ BatchConvertPeptides.txt | 9065 +++++++++++++++++ BatchConvertPeptides.txt.out | 26 + BatchSimple.txt | 8 + BatchSimple.txt.out | 23 + Column1.cap | 70 + ComputeProteinMass.txt | 16 + Differnc.frm | 193 + Differnc.frx | Bin 0 -> 2250 bytes EDITABBR.FRM | 521 + EDITELEM.frx | Bin 0 -> 2386 bytes EditAbbr.frx | Bin 0 -> 2250 bytes EditElem.frm | 685 ++ EquationsBroadening.frm | 49 + EquationsBroadening.frx | Bin 0 -> 10116 bytes EquationsOpenTube.frm | 80 + EquationsOpenTube.frx | Bin 0 -> 9753 bytes EquationsPackedCapillary.frm | 80 + EquationsPackedCapillary.frx | Bin 0 -> 10555 bytes ExampleSequence.seq | 881 ++ FINDER.FRM | 4459 ++++++++ FINDER.frx | Bin 0 -> 2551 bytes FileIOFunctions.bas | 2489 +++++ FontCh.frm | 233 + FontCh.frx | Bin 0 -> 2250 bytes GaussianConversionRoutines.bas | 294 + GlyLeuTyr.seq | 40 + HugeBatch.txt | 809 ++ Intro.frm | 247 + Intro.frx | Bin 0 -> 2250 bytes MMCONV.FRM | 1518 +++ MMConv.frx | Bin 0 -> 2380 bytes MWTWIN.BAS | 3111 ++++++ MWT_ABBR.DAT | 65 + MWT_ABBR.bak | 65 + MWT_ELEM.bak | 128 + MWT_VALU.bak | 950 ++ Mercury_FromRockwood/SN15-M | 2048 ++++ Mercury_FromRockwood/Sn15_comparison.doc | Bin 0 -> 33792 bytes Mercury_FromRockwood/Sn15_m6 | 128 + Mercury_FromRockwood/mercury_full.ZIP | Bin 0 -> 23671 bytes MsPlot.bas | 1454 +++ MsPlot/Cursors.zip | Bin 0 -> 1162 bytes MsPlot/MsPlot.bas | 1596 +++ MsPlot/MsPlot.frm | 1834 ++++ MsPlot/MsPlot.log | 2 + MsPlot/MsPlot.vbp | 43 + MsPlot/MsPlot.vbw | 6 + MsPlot/MsPlot.zip | Bin 0 -> 69478 bytes MsPlot/Old/MsPlot.bas | 1550 +++ MsPlot/Old/MsPlot.frm | 1566 +++ MsPlot/SetRange.frm | 140 + MsPlot/msplot.exe | Bin 0 -> 126976 bytes MsiSetup/Edit MwtWin_Installer.bat | 1 + MsiSetup/MwtWinMsiSetup.cache | Bin 0 -> 23552 bytes MsiSetup/MwtWinMsiSetup.sln | 11 + MsiSetup/MwtWinMsiSetup.wip | Bin 0 -> 1884160 bytes MsiSetup/ZippedForUpload/SetupHelp.txt | 56 + Mwt Dos/COMMENT.TXT | 11 + Mwt Dos/COMMENT2.TXT | 9 + Mwt Dos/MAKEIT.BAT | 10 + Mwt Dos/MAKESIMT.BAT | 9 + Mwt Dos/MWT.EXE | Bin 0 -> 133702 bytes Mwt Dos/MWT.HLP | 776 ++ Mwt Dos/MWT.ICO | Bin 0 -> 766 bytes Mwt Dos/MWT2_87.ZIP | Bin 0 -> 87886 bytes Mwt Dos/MWT_ABBR.DAT | 62 + Mwt Dos/PROMO.WIN | 158 + Mwt Dos/README.TXT | 13 + Mwt Dos/SIMTEL.TXT | 322 + MwtWinDll/ErrorLog.txt | 2 + MwtWinDll/MwtWinDll.vbw | 8 + MwtWinDll/MwtWinDllTest.bas | 15 + MwtWinDll/MwtWinDllTest.exe | Bin 0 -> 53248 bytes MwtWinDll/MwtWinDllTest.frm | 786 ++ MwtWinDll/MwtWinDllTest.frx | Bin 0 -> 130 bytes MwtWinDll/MwtWinDllTest.vbp | 40 + MwtWinDll/MwtWinDllTest.vbw | 3 + MwtWinDll/MwtWinDllTestGroup.vbg | 3 + .../EditMwtWinDll_Installer.bat | 1 + .../MwtWinDll_MergeModule.cache | Bin 0 -> 24576 bytes .../MwtWinDll_MergeModule.sln | 13 + .../MwtWinDll_MergeModule.wip | Bin 0 -> 540672 bytes MwtWinDll/MwtWindll.dll | Bin 0 -> 397312 bytes MwtWinDll/MwtWindll.exp | Bin 0 -> 1006 bytes MwtWinDll/MwtWindll.lib | Bin 0 -> 2626 bytes MwtWinDll/MwtWindll.vbp | 50 + MwtWinDll/PeptideRoutines.txt | 525 + MwtWinDll/RevisionHistory.txt | 8 + MwtWinDll/SharedVBRoutines.bas | 3028 ++++++ MwtWinDll/WorkingRoutines.bas | 4666 +++++++++ MwtWinDll/clsCapillaryFlowClass.cls | 1312 +++ MwtWinDll/clsCompound.cls | 310 + MwtWinDll/clsMoleMassDilutionClass.cls | 656 ++ MwtWinDll/clsMwtWin.cls | 443 + MwtWinDll/clsPeptideClass.cls | 2150 ++++ MwtWinDll/frmProgress.frm | 552 + MwtWinDll/frmResults.frm | 44 + MwtWin_Bug.jpg | Bin 0 -> 117398 bytes MwtWin_InternationalCaptions(Macro).xls | Bin 0 -> 833024 bytes MwtWin_WithDll.vbg | 3 + MwtZip/Batch.txt | 31 + MwtZip/Batch.txt.out | 49 + MwtZip/Comdlg32.ocx | Bin 0 -> 140488 bytes MwtZip/ExampleSequence.seq | 807 ++ MwtZip/Lang_English.ini | 1021 ++ MwtZip/Lang_German.ini | 1022 ++ MwtZip/Lang_Portuguese.ini | 1021 ++ MwtZip/Lang_Russian.ini | 1021 ++ MwtZip/Lang_Spanish.ini | 1021 ++ MwtZip/MSFLXGRD.OCX | Bin 0 -> 244416 bytes MwtZip/MWTWIN.INI | 26 + MwtZip/MWT_ABBR.DAT | 64 + MwtZip/MWT_ELEM.DAT | 128 + MwtZip/MWT_VALU.INI | 977 ++ MwtZip/RICHTX32.OCX | Bin 0 -> 203976 bytes MwtZip/ReadMe.txt | 32 + MwtZip/mwt6_19.zip | Bin 0 -> 986731 bytes MwtZip/mwtwin.chm | Bin 0 -> 197664 bytes MwtZip/mwtwin.exe | Bin 0 -> 1458176 bytes MwtZip/riched32.dll | Bin 0 -> 3584 bytes Mwtwin.vbp | 81 + Mwtwin.vbw | 35 + MyGraph.csv | 364 + MyMsgBox.frx | Bin 0 -> 2250 bytes Progress.frx | Bin 0 -> 2250 bytes ReadMe.txt | 56 + ReferenceDocs/Atomic_mass_abundances.pdf | Bin 0 -> 21101 bytes ReferenceDocs/CTerminalModifications.txt | 11 + ReferenceDocs/DilutionCalculations.xls | Bin 0 -> 16896 bytes .../DiophantineApproachToIsotopicAbuCalc.pdf | Bin 0 -> 638393 bytes ReferenceDocs/ErrorStringList.xls | Bin 0 -> 89600 bytes ReferenceDocs/Exact_Mass.html | 158 + ReferenceDocs/FlowAndBroadeningEquations.doc | Bin 0 -> 23552 bytes ReferenceDocs/InternalModifications.txt | 28 + ReferenceDocs/IonList.txt | 100 + ReferenceDocs/Isotopes.xls | Bin 0 -> 189952 bytes ...sotopicAbundanceCalculationUsingIsoPro.txt | 25 + .../LinearVelocityDemo_EdBouvier.ppt | Bin 0 -> 138240 bytes ReferenceDocs/LinearVelocityEqs_mm.ppt | Bin 0 -> 59904 bytes ReferenceDocs/NTerminalModifications.txt | 25 + ReferenceDocs/ParseEmpiricalFormula.xls | Bin 0 -> 39424 bytes .../PeptideSequenceModifications.xls | Bin 0 -> 40960 bytes ReferenceDocs/SequestPatent.doc | Bin 0 -> 313344 bytes ReferenceDocs/SequestPatent_5538897.pdf | Bin 0 -> 1639463 bytes ReferenceDocs/ToDo.txt | 3 + ReferenceDocs/ViscosityOfMeCNSolutions.xls | Bin 0 -> 26624 bytes .../ViscosityOfMeCNSolutions_ac0112622.pdf | Bin 0 -> 159471 bytes ReferenceDocs/equations.pdf | Bin 0 -> 198601 bytes ReferenceDocs/exactmas.htm | 198 + ReferenceDocs/invitetojoinyahoogroup.txt | 58 + ReferenceDocs/iupac.txt | 111 + ReferenceDocs/programdescription.txt | 10 + .../simtel_submission_directions.txt | 167 + ReferenceDocs/submit.txt | 149 + ReferenceDocs/weights.wpd | Bin 0 -> 19456 bytes RevisionHistory.txt | 501 + SetRange.frm | 146 + SetupHelp.txt | 55 + SharedVBRoutines.bas | 3086 ++++++ TestSeqForHelpFile.seq | 61 + Unused/MyMsgBox.frm | 90 + Unused/Progress.frm | 270 + Unused/frmMenuIDsAndLabels.frm | 22 + Unused/frmReportCompounds.frm | 64 + batch.txt.out | 113 + frmAminoAcidConverter.frm | 430 + frmAminoAcidConverter.frx | Bin 0 -> 4418 bytes frmAminoAcidModifications.frm | 593 ++ frmCalculator.frm | 854 ++ frmCalculator.frx | Bin 0 -> 2380 bytes frmCapillaryCalcs.frm | 2921 ++++++ frmCapillaryCalcs.frx | Bin 0 -> 2730 bytes frmChangeValue.frm | 149 + frmChangeValue.frx | Bin 0 -> 2380 bytes frmChooseLanguage.frm | 199 + frmDtaTxtFileBrowser.frm | 475 + frmEditAbbrevDetails.frm | 240 + frmEditAbbrevDetails.frx | Bin 0 -> 130 bytes frmEditModSymbolDetails.frm | 178 + frmFinderOptions.frm | 425 + frmFinderOptions.frx | Bin 0 -> 2250 bytes frmFragmentationModelling.frm | 3871 +++++++ frmFragmentationModelling.frx | Bin 0 -> 2276 bytes frmIonMatchingOptions.frm | 624 ++ frmIonMatchingOptions.frx | Bin 0 -> 3094 bytes frmIsotopicAbundance.frm | 1223 +++ frmIsotopicAbundance.frx | Bin 0 -> 2382 bytes frmProgramPreferences.frm | 839 ++ frmProgramPreferences.frx | Bin 0 -> 2459 bytes frmReportCompounds.frx | Bin 0 -> 2250 bytes frmStrings.frm | 81 + frmfindermodewarn.frm | 171 + frmfindermodewarn.frx | Bin 0 -> 2250 bytes frmprogress.frm | 552 + frmprogress.frx | Bin 0 -> 2250 bytes frmviscosityForMeCN.frm | 363 + frmviscosityForMeCN.frx | Bin 0 -> 114978 bytes html/Abbreviations.htm | 14 + html/AdvanceOnCalculate.htm | 14 + html/AminoAcidConverter.htm | 22 + html/AuthorInfo.htm | 30 + html/AutoCopyCurrentMWT.htm | 15 + html/AutosaveOptionsEtc.htm | 14 + html/Availability.htm | 22 + html/BehindScenesCalcs.htm | 22 + html/BehindScenesIsotopes.htm | 80 + html/BehindScenesPctComp_StdDevCalcs.htm | 62 + html/BehindScenesPctSolver.htm | 14 + html/Brackets.htm | 30 + html/CalcWeightsFromFile.htm | 391 + html/Calculator.htm | 61 + html/CapillaryCalculations.htm | 101 + html/CaseRecognition.htm | 30 + html/CautionMode.htm | 14 + html/CommandLineSwitches.htm | 35 + html/ComputeCharge.htm | 124 + html/CopyCurrent.htm | 17 + html/CopyFormulaAsRTF.htm | 14 + html/CutCopyPasteDel.htm | 17 + html/Dashes.htm | 14 + html/DefaultAbbreviations.htm | 364 + html/DupCurrentFormula.htm | 14 + html/EditingAbbreviations.htm | 61 + html/EditingElements.htm | 18 + html/ElementModeQuickSwitch.htm | 16 + html/ElementSubtraction.htm | 34 + html/EmpiricalFormula.htm | 16 + html/EnteringFormulas.htm | 21 + html/EraseAllFormulas.htm | 14 + html/EraseCurrentFormula.htm | 14 + html/ErrorMessages.htm | 14 + html/ExamplesOfFormulas.htm | 138 + html/ExitProgram.htm | 15 + html/ExitProgramOptions.htm | 14 + html/ExpandAbbreviations.htm | 16 + html/FormulaFinder.htm | 71 + html/FormulaFinderWarn.htm | 17 + html/FormulaFont.htm | 14 + html/HideInactiveWindows.htm | 14 + html/HighlightTextFields.htm | 14 + html/Installation.htm | 26 + html/InternationalSupport.htm | 23 + html/IonMatchListOptions.htm | 14 + html/IonPlot.htm | 30 + html/Isotopes.htm | 20 + html/IsotopicDistribution.htm | 88 + html/Keystrokes.htm | 85 + html/MaximumFormulasToDisplay.htm | 27 + html/MenuEdit.htm | 30 + html/MenuFile.htm | 22 + html/MenuHelp.htm | 20 + html/MenuOptions.htm | 20 + html/MenuTools.htm | 29 + html/MenuView.htm | 18 + html/Menus.htm | 24 + html/MoleMass.htm | 101 + html/MultiViewMode.htm | 14 + html/MultipleProgramInstances.htm | 16 + html/MwtHelp/Availability.htm | 24 + html/MwtHelp/CalcWeightsFromFile.htm | 392 + html/MwtHelp/EditingAbbreviations.htm | 62 + html/MwtHelp/ElementSubtraction.htm | 35 + html/MwtHelp/ExamplesOfFormulas.htm | 139 + html/MwtHelp/Installation.htm | 32 + html/MwtHelp/Overview.htm | 151 + html/MwtHelp/ProgramRevisions.htm | 1288 +++ html/NewFormula.htm | 15 + html/Overview.htm | 150 + html/Parentheses.htm | 17 + html/PctSolverMode.htm | 29 + html/PeptideFragModelling.htm | 562 + html/Printing.htm | 14 + html/ProgramOptions.htm | 51 + html/ProgramRevisions.htm | 1306 +++ html/SaveOptions.htm | 14 + html/SaveRestoreValues.htm | 14 + html/SingleViewMode.htm | 14 + html/StartupModule.htm | 14 + html/StayOnTop.htm | 13 + html/StdDevModes.htm | 25 + html/Undo.htm | 14 + images/DeadTimeAndVolumeOpen.gif | Bin 0 -> 1738 bytes images/DeadTimeAndVolumePacked.gif | Bin 0 -> 1754 bytes images/DownArrow.gif | Bin 0 -> 1067 bytes images/ExtraColumnBroadeningEquations.gif | Bin 0 -> 7854 bytes images/IonFragmentation.gif | Bin 0 -> 9021 bytes images/LinearVelocityDescription.gif | Bin 0 -> 2711 bytes images/LinearVelocityDescriptionOpen.gif | Bin 0 -> 2409 bytes images/LinearVelocityEquation.gif | Bin 0 -> 1637 bytes images/LinearVelocityEquationOpen.gif | Bin 0 -> 1436 bytes images/MolecularWeightCalculatorLogo.jpg | Bin 0 -> 27980 bytes images/MwtAminoAcidNotation.gif | Bin 0 -> 10386 bytes images/MwtCapillaryFlowCalculator.gif | Bin 0 -> 15426 bytes images/MwtEditAbbreviations.gif | Bin 0 -> 26035 bytes images/MwtFormulaFinder.gif | Bin 0 -> 16118 bytes images/MwtInGerman.gif | Bin 0 -> 12694 bytes images/MwtIonPlot1.gif | Bin 0 -> 19165 bytes images/MwtIonPlot2.gif | Bin 0 -> 13416 bytes images/MwtIsoAbundance1.gif | Bin 0 -> 30816 bytes images/MwtIsoAbundance2.gif | Bin 0 -> 11926 bytes images/MwtIsoAbundance3.gif | Bin 0 -> 14568 bytes images/MwtIsoAbundance4.gif | Bin 0 -> 14801 bytes images/MwtMainScreen.gif | Bin 0 -> 12721 bytes images/MwtMoleMassConverter.gif | Bin 0 -> 14970 bytes images/MwtPeptideFrag.gif | Bin 0 -> 38452 bytes images/MwtPercentComposition.gif | Bin 0 -> 11488 bytes images/MwtPercentSolver.gif | Bin 0 -> 11843 bytes images/MwtWinIcon.gif | Bin 0 -> 1078 bytes images/Old/MwtIsoAbundance.gif | Bin 0 -> 38540 bytes images/Old/MwtIsoAbundance2.gif | Bin 0 -> 16540 bytes images/Old/MwtIsoAbundance3.gif | Bin 0 -> 17260 bytes images/Old/ResolutionComparison1000.gif | Bin 0 -> 17553 bytes images/Old/ResolutionComparison1500.gif | Bin 0 -> 17785 bytes images/Old/ResolutionComparison5000.gif | Bin 0 -> 18021 bytes images/Old/ResolutionComparison750.gif | Bin 0 -> 17557 bytes images/OldLogo.gif | Bin 0 -> 9708 bytes images/PostTranslationMods.gif | Bin 0 -> 10407 bytes images/ResolutionComparison1000.gif | Bin 0 -> 10181 bytes images/ResolutionComparison500.gif | Bin 0 -> 10024 bytes images/ResolutionComparison5000.gif | Bin 0 -> 9979 bytes images/ResolutionComparison750.gif | Bin 0 -> 10049 bytes images/SourceDocs/IonFragmentation.ppt | Bin 0 -> 51200 bytes .../MolecularWeightCalculatorLogo.CNV | Bin 0 -> 1879298 bytes images/SourceDocs/isotopes.bmp | Bin 0 -> 667062 bytes images/UpArrow.gif | Bin 0 -> 1071 bytes images/VolFlowRateEquationOpen.gif | Bin 0 -> 1872 bytes images/VolFlowRateEquations.gif | Bin 0 -> 2155 bytes images/WhiteBitmap.bmp | Bin 0 -> 270054 bytes images/isotopes.gif | Bin 0 -> 7586 bytes images/monroe_address.gif | Bin 0 -> 1218 bytes images/mwtwin.bmp | Bin 0 -> 630 bytes images/mwtwin.gif | Bin 0 -> 305 bytes images/mwtwin2.bmp | Bin 0 -> 630 bytes lang_catalan.ini | 1107 ++ lang_english.ini | 1128 ++ lang_german.ini | 1107 ++ lang_portuguese.ini | 1107 ++ lang_russian.ini | 1107 ++ lang_spanish.ini | 1107 ++ lang_turkish.ini | 1107 ++ msplot.frm | 2034 ++++ msplot.frx | Bin 0 -> 2250 bytes mwt_abbr.dtt | 65 + mwt_elem.dat | 128 + mwt_elem.dtt | 128 + mwt_valu.ini | 950 ++ mwt_valu.inn | 1076 ++ mwtwin.DEP | 26 + mwtwin.chm | Bin 0 -> 178077 bytes mwtwin.exe | Bin 0 -> 1527808 bytes mwtwin.frm | 3582 +++++++ mwtwin.frx | Bin 0 -> 2514 bytes mwtwin.hhc | 360 + mwtwin.hhk | 759 ++ mwtwin.hhp | 203 + mwtwin.ico | Bin 0 -> 2238 bytes mwtwin.ini | 27 + mwtwin.inn | 26 + rtf/RTFbox.frm | 176 + rtf/RTFbox.vbp | 28 + rtf/RTFbox.vbw | 1 + rtf/sample.rtf | Bin 0 -> 2645 bytes 369 files changed, 113888 insertions(+) create mode 100644 ABOUT.FRM create mode 100644 About.frx create mode 100644 AminoAcids.txt create mode 100644 AminoAcids.txt.out create mode 100644 Batch.txt create mode 100644 BatchComputePeptideMass.txt create mode 100644 BatchComputePeptideMass.txt.out create mode 100644 BatchConvertPeptides.txt create mode 100644 BatchConvertPeptides.txt.out create mode 100644 BatchSimple.txt create mode 100644 BatchSimple.txt.out create mode 100644 Column1.cap create mode 100644 ComputeProteinMass.txt create mode 100644 Differnc.frm create mode 100644 Differnc.frx create mode 100644 EDITABBR.FRM create mode 100644 EDITELEM.frx create mode 100644 EditAbbr.frx create mode 100644 EditElem.frm create mode 100644 EquationsBroadening.frm create mode 100644 EquationsBroadening.frx create mode 100644 EquationsOpenTube.frm create mode 100644 EquationsOpenTube.frx create mode 100644 EquationsPackedCapillary.frm create mode 100644 EquationsPackedCapillary.frx create mode 100644 ExampleSequence.seq create mode 100644 FINDER.FRM create mode 100644 FINDER.frx create mode 100644 FileIOFunctions.bas create mode 100644 FontCh.frm create mode 100644 FontCh.frx create mode 100644 GaussianConversionRoutines.bas create mode 100644 GlyLeuTyr.seq create mode 100644 HugeBatch.txt create mode 100644 Intro.frm create mode 100644 Intro.frx create mode 100644 MMCONV.FRM create mode 100644 MMConv.frx create mode 100644 MWTWIN.BAS create mode 100644 MWT_ABBR.DAT create mode 100644 MWT_ABBR.bak create mode 100644 MWT_ELEM.bak create mode 100644 MWT_VALU.bak create mode 100644 Mercury_FromRockwood/SN15-M create mode 100644 Mercury_FromRockwood/Sn15_comparison.doc create mode 100644 Mercury_FromRockwood/Sn15_m6 create mode 100644 Mercury_FromRockwood/mercury_full.ZIP create mode 100644 MsPlot.bas create mode 100644 MsPlot/Cursors.zip create mode 100644 MsPlot/MsPlot.bas create mode 100644 MsPlot/MsPlot.frm create mode 100644 MsPlot/MsPlot.log create mode 100644 MsPlot/MsPlot.vbp create mode 100644 MsPlot/MsPlot.vbw create mode 100644 MsPlot/MsPlot.zip create mode 100644 MsPlot/Old/MsPlot.bas create mode 100644 MsPlot/Old/MsPlot.frm create mode 100644 MsPlot/SetRange.frm create mode 100644 MsPlot/msplot.exe create mode 100644 MsiSetup/Edit MwtWin_Installer.bat create mode 100644 MsiSetup/MwtWinMsiSetup.cache create mode 100644 MsiSetup/MwtWinMsiSetup.sln create mode 100644 MsiSetup/MwtWinMsiSetup.wip create mode 100644 MsiSetup/ZippedForUpload/SetupHelp.txt create mode 100644 Mwt Dos/COMMENT.TXT create mode 100644 Mwt Dos/COMMENT2.TXT create mode 100644 Mwt Dos/MAKEIT.BAT create mode 100644 Mwt Dos/MAKESIMT.BAT create mode 100644 Mwt Dos/MWT.EXE create mode 100644 Mwt Dos/MWT.HLP create mode 100644 Mwt Dos/MWT.ICO create mode 100644 Mwt Dos/MWT2_87.ZIP create mode 100644 Mwt Dos/MWT_ABBR.DAT create mode 100644 Mwt Dos/PROMO.WIN create mode 100644 Mwt Dos/README.TXT create mode 100644 Mwt Dos/SIMTEL.TXT create mode 100644 MwtWinDll/ErrorLog.txt create mode 100644 MwtWinDll/MwtWinDll.vbw create mode 100644 MwtWinDll/MwtWinDllTest.bas create mode 100644 MwtWinDll/MwtWinDllTest.exe create mode 100644 MwtWinDll/MwtWinDllTest.frm create mode 100644 MwtWinDll/MwtWinDllTest.frx create mode 100644 MwtWinDll/MwtWinDllTest.vbp create mode 100644 MwtWinDll/MwtWinDllTest.vbw create mode 100644 MwtWinDll/MwtWinDllTestGroup.vbg create mode 100644 MwtWinDll/MwtWinDll_MergeModule/EditMwtWinDll_Installer.bat create mode 100644 MwtWinDll/MwtWinDll_MergeModule/MwtWinDll_MergeModule.cache create mode 100644 MwtWinDll/MwtWinDll_MergeModule/MwtWinDll_MergeModule.sln create mode 100644 MwtWinDll/MwtWinDll_MergeModule/MwtWinDll_MergeModule.wip create mode 100644 MwtWinDll/MwtWindll.dll create mode 100644 MwtWinDll/MwtWindll.exp create mode 100644 MwtWinDll/MwtWindll.lib create mode 100644 MwtWinDll/MwtWindll.vbp create mode 100644 MwtWinDll/PeptideRoutines.txt create mode 100644 MwtWinDll/RevisionHistory.txt create mode 100644 MwtWinDll/SharedVBRoutines.bas create mode 100644 MwtWinDll/WorkingRoutines.bas create mode 100644 MwtWinDll/clsCapillaryFlowClass.cls create mode 100644 MwtWinDll/clsCompound.cls create mode 100644 MwtWinDll/clsMoleMassDilutionClass.cls create mode 100644 MwtWinDll/clsMwtWin.cls create mode 100644 MwtWinDll/clsPeptideClass.cls create mode 100644 MwtWinDll/frmProgress.frm create mode 100644 MwtWinDll/frmResults.frm create mode 100644 MwtWin_Bug.jpg create mode 100644 MwtWin_InternationalCaptions(Macro).xls create mode 100644 MwtWin_WithDll.vbg create mode 100644 MwtZip/Batch.txt create mode 100644 MwtZip/Batch.txt.out create mode 100644 MwtZip/Comdlg32.ocx create mode 100644 MwtZip/ExampleSequence.seq create mode 100644 MwtZip/Lang_English.ini create mode 100644 MwtZip/Lang_German.ini create mode 100644 MwtZip/Lang_Portuguese.ini create mode 100644 MwtZip/Lang_Russian.ini create mode 100644 MwtZip/Lang_Spanish.ini create mode 100644 MwtZip/MSFLXGRD.OCX create mode 100644 MwtZip/MWTWIN.INI create mode 100644 MwtZip/MWT_ABBR.DAT create mode 100644 MwtZip/MWT_ELEM.DAT create mode 100644 MwtZip/MWT_VALU.INI create mode 100644 MwtZip/RICHTX32.OCX create mode 100644 MwtZip/ReadMe.txt create mode 100644 MwtZip/mwt6_19.zip create mode 100644 MwtZip/mwtwin.chm create mode 100644 MwtZip/mwtwin.exe create mode 100644 MwtZip/riched32.dll create mode 100644 Mwtwin.vbp create mode 100644 Mwtwin.vbw create mode 100644 MyGraph.csv create mode 100644 MyMsgBox.frx create mode 100644 Progress.frx create mode 100644 ReadMe.txt create mode 100644 ReferenceDocs/Atomic_mass_abundances.pdf create mode 100644 ReferenceDocs/CTerminalModifications.txt create mode 100644 ReferenceDocs/DilutionCalculations.xls create mode 100644 ReferenceDocs/DiophantineApproachToIsotopicAbuCalc.pdf create mode 100644 ReferenceDocs/ErrorStringList.xls create mode 100644 ReferenceDocs/Exact_Mass.html create mode 100644 ReferenceDocs/FlowAndBroadeningEquations.doc create mode 100644 ReferenceDocs/InternalModifications.txt create mode 100644 ReferenceDocs/IonList.txt create mode 100644 ReferenceDocs/Isotopes.xls create mode 100644 ReferenceDocs/IsotopicAbundanceCalculationUsingIsoPro.txt create mode 100644 ReferenceDocs/LinearVelocityDemo_EdBouvier.ppt create mode 100644 ReferenceDocs/LinearVelocityEqs_mm.ppt create mode 100644 ReferenceDocs/NTerminalModifications.txt create mode 100644 ReferenceDocs/ParseEmpiricalFormula.xls create mode 100644 ReferenceDocs/PeptideSequenceModifications.xls create mode 100644 ReferenceDocs/SequestPatent.doc create mode 100644 ReferenceDocs/SequestPatent_5538897.pdf create mode 100644 ReferenceDocs/ToDo.txt create mode 100644 ReferenceDocs/ViscosityOfMeCNSolutions.xls create mode 100644 ReferenceDocs/ViscosityOfMeCNSolutions_ac0112622.pdf create mode 100644 ReferenceDocs/equations.pdf create mode 100644 ReferenceDocs/exactmas.htm create mode 100644 ReferenceDocs/invitetojoinyahoogroup.txt create mode 100644 ReferenceDocs/iupac.txt create mode 100644 ReferenceDocs/programdescription.txt create mode 100644 ReferenceDocs/simtel_submission_directions.txt create mode 100644 ReferenceDocs/submit.txt create mode 100644 ReferenceDocs/weights.wpd create mode 100644 RevisionHistory.txt create mode 100644 SetRange.frm create mode 100644 SetupHelp.txt create mode 100644 SharedVBRoutines.bas create mode 100644 TestSeqForHelpFile.seq create mode 100644 Unused/MyMsgBox.frm create mode 100644 Unused/Progress.frm create mode 100644 Unused/frmMenuIDsAndLabels.frm create mode 100644 Unused/frmReportCompounds.frm create mode 100644 batch.txt.out create mode 100644 frmAminoAcidConverter.frm create mode 100644 frmAminoAcidConverter.frx create mode 100644 frmAminoAcidModifications.frm create mode 100644 frmCalculator.frm create mode 100644 frmCalculator.frx create mode 100644 frmCapillaryCalcs.frm create mode 100644 frmCapillaryCalcs.frx create mode 100644 frmChangeValue.frm create mode 100644 frmChangeValue.frx create mode 100644 frmChooseLanguage.frm create mode 100644 frmDtaTxtFileBrowser.frm create mode 100644 frmEditAbbrevDetails.frm create mode 100644 frmEditAbbrevDetails.frx create mode 100644 frmEditModSymbolDetails.frm create mode 100644 frmFinderOptions.frm create mode 100644 frmFinderOptions.frx create mode 100644 frmFragmentationModelling.frm create mode 100644 frmFragmentationModelling.frx create mode 100644 frmIonMatchingOptions.frm create mode 100644 frmIonMatchingOptions.frx create mode 100644 frmIsotopicAbundance.frm create mode 100644 frmIsotopicAbundance.frx create mode 100644 frmProgramPreferences.frm create mode 100644 frmProgramPreferences.frx create mode 100644 frmReportCompounds.frx create mode 100644 frmStrings.frm create mode 100644 frmfindermodewarn.frm create mode 100644 frmfindermodewarn.frx create mode 100644 frmprogress.frm create mode 100644 frmprogress.frx create mode 100644 frmviscosityForMeCN.frm create mode 100644 frmviscosityForMeCN.frx create mode 100644 html/Abbreviations.htm create mode 100644 html/AdvanceOnCalculate.htm create mode 100644 html/AminoAcidConverter.htm create mode 100644 html/AuthorInfo.htm create mode 100644 html/AutoCopyCurrentMWT.htm create mode 100644 html/AutosaveOptionsEtc.htm create mode 100644 html/Availability.htm create mode 100644 html/BehindScenesCalcs.htm create mode 100644 html/BehindScenesIsotopes.htm create mode 100644 html/BehindScenesPctComp_StdDevCalcs.htm create mode 100644 html/BehindScenesPctSolver.htm create mode 100644 html/Brackets.htm create mode 100644 html/CalcWeightsFromFile.htm create mode 100644 html/Calculator.htm create mode 100644 html/CapillaryCalculations.htm create mode 100644 html/CaseRecognition.htm create mode 100644 html/CautionMode.htm create mode 100644 html/CommandLineSwitches.htm create mode 100644 html/ComputeCharge.htm create mode 100644 html/CopyCurrent.htm create mode 100644 html/CopyFormulaAsRTF.htm create mode 100644 html/CutCopyPasteDel.htm create mode 100644 html/Dashes.htm create mode 100644 html/DefaultAbbreviations.htm create mode 100644 html/DupCurrentFormula.htm create mode 100644 html/EditingAbbreviations.htm create mode 100644 html/EditingElements.htm create mode 100644 html/ElementModeQuickSwitch.htm create mode 100644 html/ElementSubtraction.htm create mode 100644 html/EmpiricalFormula.htm create mode 100644 html/EnteringFormulas.htm create mode 100644 html/EraseAllFormulas.htm create mode 100644 html/EraseCurrentFormula.htm create mode 100644 html/ErrorMessages.htm create mode 100644 html/ExamplesOfFormulas.htm create mode 100644 html/ExitProgram.htm create mode 100644 html/ExitProgramOptions.htm create mode 100644 html/ExpandAbbreviations.htm create mode 100644 html/FormulaFinder.htm create mode 100644 html/FormulaFinderWarn.htm create mode 100644 html/FormulaFont.htm create mode 100644 html/HideInactiveWindows.htm create mode 100644 html/HighlightTextFields.htm create mode 100644 html/Installation.htm create mode 100644 html/InternationalSupport.htm create mode 100644 html/IonMatchListOptions.htm create mode 100644 html/IonPlot.htm create mode 100644 html/Isotopes.htm create mode 100644 html/IsotopicDistribution.htm create mode 100644 html/Keystrokes.htm create mode 100644 html/MaximumFormulasToDisplay.htm create mode 100644 html/MenuEdit.htm create mode 100644 html/MenuFile.htm create mode 100644 html/MenuHelp.htm create mode 100644 html/MenuOptions.htm create mode 100644 html/MenuTools.htm create mode 100644 html/MenuView.htm create mode 100644 html/Menus.htm create mode 100644 html/MoleMass.htm create mode 100644 html/MultiViewMode.htm create mode 100644 html/MultipleProgramInstances.htm create mode 100644 html/MwtHelp/Availability.htm create mode 100644 html/MwtHelp/CalcWeightsFromFile.htm create mode 100644 html/MwtHelp/EditingAbbreviations.htm create mode 100644 html/MwtHelp/ElementSubtraction.htm create mode 100644 html/MwtHelp/ExamplesOfFormulas.htm create mode 100644 html/MwtHelp/Installation.htm create mode 100644 html/MwtHelp/Overview.htm create mode 100644 html/MwtHelp/ProgramRevisions.htm create mode 100644 html/NewFormula.htm create mode 100644 html/Overview.htm create mode 100644 html/Parentheses.htm create mode 100644 html/PctSolverMode.htm create mode 100644 html/PeptideFragModelling.htm create mode 100644 html/Printing.htm create mode 100644 html/ProgramOptions.htm create mode 100644 html/ProgramRevisions.htm create mode 100644 html/SaveOptions.htm create mode 100644 html/SaveRestoreValues.htm create mode 100644 html/SingleViewMode.htm create mode 100644 html/StartupModule.htm create mode 100644 html/StayOnTop.htm create mode 100644 html/StdDevModes.htm create mode 100644 html/Undo.htm create mode 100644 images/DeadTimeAndVolumeOpen.gif create mode 100644 images/DeadTimeAndVolumePacked.gif create mode 100644 images/DownArrow.gif create mode 100644 images/ExtraColumnBroadeningEquations.gif create mode 100644 images/IonFragmentation.gif create mode 100644 images/LinearVelocityDescription.gif create mode 100644 images/LinearVelocityDescriptionOpen.gif create mode 100644 images/LinearVelocityEquation.gif create mode 100644 images/LinearVelocityEquationOpen.gif create mode 100644 images/MolecularWeightCalculatorLogo.jpg create mode 100644 images/MwtAminoAcidNotation.gif create mode 100644 images/MwtCapillaryFlowCalculator.gif create mode 100644 images/MwtEditAbbreviations.gif create mode 100644 images/MwtFormulaFinder.gif create mode 100644 images/MwtInGerman.gif create mode 100644 images/MwtIonPlot1.gif create mode 100644 images/MwtIonPlot2.gif create mode 100644 images/MwtIsoAbundance1.gif create mode 100644 images/MwtIsoAbundance2.gif create mode 100644 images/MwtIsoAbundance3.gif create mode 100644 images/MwtIsoAbundance4.gif create mode 100644 images/MwtMainScreen.gif create mode 100644 images/MwtMoleMassConverter.gif create mode 100644 images/MwtPeptideFrag.gif create mode 100644 images/MwtPercentComposition.gif create mode 100644 images/MwtPercentSolver.gif create mode 100644 images/MwtWinIcon.gif create mode 100644 images/Old/MwtIsoAbundance.gif create mode 100644 images/Old/MwtIsoAbundance2.gif create mode 100644 images/Old/MwtIsoAbundance3.gif create mode 100644 images/Old/ResolutionComparison1000.gif create mode 100644 images/Old/ResolutionComparison1500.gif create mode 100644 images/Old/ResolutionComparison5000.gif create mode 100644 images/Old/ResolutionComparison750.gif create mode 100644 images/OldLogo.gif create mode 100644 images/PostTranslationMods.gif create mode 100644 images/ResolutionComparison1000.gif create mode 100644 images/ResolutionComparison500.gif create mode 100644 images/ResolutionComparison5000.gif create mode 100644 images/ResolutionComparison750.gif create mode 100644 images/SourceDocs/IonFragmentation.ppt create mode 100644 images/SourceDocs/MolecularWeightCalculatorLogo.CNV create mode 100644 images/SourceDocs/isotopes.bmp create mode 100644 images/UpArrow.gif create mode 100644 images/VolFlowRateEquationOpen.gif create mode 100644 images/VolFlowRateEquations.gif create mode 100644 images/WhiteBitmap.bmp create mode 100644 images/isotopes.gif create mode 100644 images/monroe_address.gif create mode 100644 images/mwtwin.bmp create mode 100644 images/mwtwin.gif create mode 100644 images/mwtwin2.bmp create mode 100644 lang_catalan.ini create mode 100644 lang_english.ini create mode 100644 lang_german.ini create mode 100644 lang_portuguese.ini create mode 100644 lang_russian.ini create mode 100644 lang_spanish.ini create mode 100644 lang_turkish.ini create mode 100644 msplot.frm create mode 100644 msplot.frx create mode 100644 mwt_abbr.dtt create mode 100644 mwt_elem.dat create mode 100644 mwt_elem.dtt create mode 100644 mwt_valu.ini create mode 100644 mwt_valu.inn create mode 100644 mwtwin.DEP create mode 100644 mwtwin.chm create mode 100644 mwtwin.exe create mode 100644 mwtwin.frm create mode 100644 mwtwin.frx create mode 100644 mwtwin.hhc create mode 100644 mwtwin.hhk create mode 100644 mwtwin.hhp create mode 100644 mwtwin.ico create mode 100644 mwtwin.ini create mode 100644 mwtwin.inn create mode 100644 rtf/RTFbox.frm create mode 100644 rtf/RTFbox.vbp create mode 100644 rtf/RTFbox.vbw create mode 100644 rtf/sample.rtf diff --git a/ABOUT.FRM b/ABOUT.FRM new file mode 100644 index 0000000..d15823d --- /dev/null +++ b/ABOUT.FRM @@ -0,0 +1,337 @@ +VERSION 5.00 +Begin VB.Form frmAboutBox + BorderStyle = 3 'Fixed Dialog + Caption = "About MWT" + ClientHeight = 4320 + ClientLeft = 315 + ClientTop = 1695 + ClientWidth = 5820 + ClipControls = 0 'False + ControlBox = 0 'False + BeginProperty Font + Name = "System" + Size = 9.75 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 6000 + Icon = "ABOUT.frx":0000 + MaxButton = 0 'False + MinButton = 0 'False + PaletteMode = 1 'UseZOrder + ScaleHeight = 4320 + ScaleWidth = 5820 + Tag = "5500" + Begin VB.PictureBox picIcon + Appearance = 0 'Flat + AutoSize = -1 'True + BackColor = &H80000005& + BorderStyle = 0 'None + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + Height = 480 + Left = 4200 + Picture = "ABOUT.frx":08CA + ScaleHeight = 480 + ScaleWidth = 480 + TabIndex = 4 + Top = 1560 + Width = 480 + End + Begin VB.TextBox txtHTTP + Appearance = 0 'Flat + BackColor = &H8000000F& + BorderStyle = 0 'None + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 855 + Left = 120 + Locked = -1 'True + MultiLine = -1 'True + TabIndex = 10 + Text = "ABOUT.frx":0A07 + Top = 2100 + Width = 5055 + End + Begin VB.TextBox txtEMail + Appearance = 0 'Flat + BackColor = &H8000000F& + BorderStyle = 0 'None + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 120 + Locked = -1 'True + MultiLine = -1 'True + TabIndex = 9 + Text = "ABOUT.frx":0A9C + Top = 1560 + Width = 3015 + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "&OK" + Default = -1 'True + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 360 + HelpContextID = 6000 + Left = 1800 + TabIndex = 0 + Tag = "4010" + Top = 3855 + Width = 1155 + End + Begin VB.Label lblBuild + BackStyle = 0 'Transparent + Caption = "(Build 35)" + BeginProperty Font + Name = "Times New Roman" + Size = 9 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 240 + Left = 3840 + TabIndex = 11 + Top = 840 + Width = 2175 + End + Begin VB.Line linLine1 + BorderWidth = 2 + X1 = 120 + X2 = 5160 + Y1 = 3360 + Y2 = 3360 + End + Begin VB.Label lblDate + Caption = "May 1, 1999" + BeginProperty Font + Name = "Times New Roman" + Size = 9.75 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 3960 + TabIndex = 7 + Top = 1200 + Width = 1695 + End + Begin VB.Label lblFreeware + Caption = "This program is Freeware; distribute freely" + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 120 + TabIndex = 8 + Tag = "5510" + Top = 3060 + Width = 5115 + End + Begin VB.Label lblAuthor + Caption = "by Matthew Monroe" + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 375 + Left = 120 + TabIndex = 6 + Top = 1200 + Width = 2535 + End + Begin VB.Label lblMWT2 + Caption = "for Windows 9x/ME/NT/00/XP" + BeginProperty Font + Name = "Times New Roman" + Size = 12 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = -1 'True + Strikethrough = 0 'False + EndProperty + Height = 375 + Left = 240 + TabIndex = 5 + Top = 600 + Width = 3375 + End + Begin VB.Label lblMWT + AutoSize = -1 'True + Caption = "Molecular Weight Calculator" + BeginProperty Font + Name = "Times New Roman" + Size = 18 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 390 + Left = 120 + TabIndex = 1 + Top = 150 + Width = 5265 + End + Begin VB.Label lblVersion + BackStyle = 0 'Transparent + Caption = "Version 5.07" + BeginProperty Font + Name = "Times New Roman" + Size = 12 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 360 + Left = 3840 + TabIndex = 2 + Top = 600 + Width = 2175 + End + Begin VB.Label lblMicrosoft + Caption = "written using Microsoft Visual Basic v6.0 (SP5)" + BeginProperty Font + Name = "MS Sans Serif" + Size = 9.75 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 240 + Left = 120 + TabIndex = 3 + Top = 3465 + Width = 5205 + End +End +Attribute VB_Name = "frmAboutBox" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +' Purpose: Position controls on form +Private Sub PositionFormControls() + Me.Caption = LookupLanguageCaption(5500, "About MWT") + cmdOK.Caption = LookupLanguageCaption(4000, "Cl&ose") + + ' Position Objects + lblMWT.Left = 120 + lblMWT.Top = 120 + LblMWT2.Left = 240 + LblMWT2.Top = 600 + lblVersion.Left = 3840 + lblVersion.Top = LblMWT2.Top + lblBuild.Left = lblVersion.Left + lblBuild.Top = LblMWT2.Top + 300 + lblAuthor.Left = lblMWT.Left + lblAuthor.Top = 1200 + lblDate.Left = lblVersion.Left + lblDate.Top = lblAuthor.Top + With txtEMail + .Left = lblMWT.Left + .Top = 1560 + .Text = "Matt@AlchemistMatt.Com or AlchemistMatt@Yahoo.com" + End With + + With txtHTTP + .Left = lblMWT.Left + .Top = 2100 + .Text = "http://www.alchemistmatt.com/" & vbCrLf & "http://ncrr.pnl.gov/software/" & vbCrLf & "http://come.to/alchemistmatt" + End With + + lblFreeware.Left = lblMWT.Left + lblFreeware.Top = 3050 + lblFreeware.Caption = LookupLanguageCaption(5510, "This program is Freeware; distribute freely") + picIcon.Left = 4000 + picIcon.Top = 1560 + With linLine1 + .X1 = lblMWT.Left + .X2 = 5200 + .Y1 = 3350 + .Y2 = 3350 + End With + lblMicrosoft.Left = lblMWT.Left + lblMicrosoft.Top = 3400 + cmdOK.Left = 1800 + cmdOK.Top = 3900 + + lblVersion.Caption = "Version " & PROGRAM_VERSION + lblBuild.Caption = "(Build " & App.Revision & ")" + lblDate.Caption = PROGRAM_DATE + +End Sub + +Private Sub cmdOK_Click() + Me.Hide +End Sub + +Private Sub Form_Load() + SizeAndCenterWindow Me, cWindowExactCenter, 5900, 4850, False + PositionFormControls +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + QueryUnloadFormHandler Me, Cancel, UnloadMode +End Sub + diff --git a/About.frx b/About.frx new file mode 100644 index 0000000000000000000000000000000000000000..740bc454ff65801c8ce6edbda4b59c79cbbbe2e7 GIT binary patch literal 2773 zcmX@c!N8DH!oaW(NHZ`n0-=J!e-M*l1yDo`NNWJG0uVa@F(U(58IXk?w6riV01?Cg z|NnuQf#KM(V+*1DF^XS%A{OphCx>&;yzc z(a+2Zq){*{5J2QX`k9%5@+g=Y2oU;lx&XKRVE5p*AL1U6Ja+pb?t$qa)b=xg!V(7n zg+Bu*EP;THjSa#;kgOp8!{rg;FcwH2q#vx6osAtL4(0&~Ha4h!khw4nXMqHu`XO>4 zZ6FK+P}OMq!BQYum?9MYV0~~YFb}JKsBIu~p!(s~f;54Q2P*-RQ2h{LEF?rfj<5v@ zgToI`K>-Rs7Cev%lu7UbJZ2Lo)d0zw#3`ndDv+JPwgwnj0y840C1VJr-96nbEE5$N z6c{!`Z34DR{xb;tX8^WP{{IIyOJKUN&^jP3AiWGM&n}$sT)o#K+jrOh1dTGbLXq^Y zby=r3F*=AiU_-4c~GckKqh6LpLbr%G+OvuihJOef{>Wn=frT%qq9f=+=ST`_CVHczyBNRnL~Y89k7_{C3NGkyj_~e6ifI?$J@3 zg^Yjy{byk2`m%8Gf`c+_N(>CvQ!+|Q3as??%gf94O7oKSQd3Ix>vHq+itm}#s>X!iJbK}b^_2FuOqN#c%`TB`D$r-7+nZ+f!i6tcn z>8z~$qI5lw6x=pLOG^WNkg9lywLrxdzCf;nBg_a8PtQ3&7vdbCdr)K?A`>(6^Fi{w FTmZg#1J?im literal 0 HcmV?d00001 diff --git a/AminoAcids.txt b/AminoAcids.txt new file mode 100644 index 0000000..d8bc5af --- /dev/null +++ b/AminoAcids.txt @@ -0,0 +1,20 @@ +Ala +Arg +Asn +Asp +Cys +Gln +Glu +Gly +His +Ile +Leu +Lys +Met +Phe +Pro +Ser +Thr +Trp +Tyr +Val diff --git a/AminoAcids.txt.out b/AminoAcids.txt.out new file mode 100644 index 0000000..be93634 --- /dev/null +++ b/AminoAcids.txt.out @@ -0,0 +1,20 @@ +Ala 71.037112 +Arg 156.1011062 +Asn 114.0429256 +Asp 115.026942 +Cys 103.009184 +Gln 128.0585748 +Glu 129.0425912 +Gly 57.0214628 +His 137.0589092 +Ile 113.0840596 +Leu 113.0840596 +Lys 128.0949582 +Met 131.0404824 +Phe 147.0684104 +Pro 97.0527612 +Ser 87.032027 +Thr 101.0476762 +Trp 186.079309 +Tyr 163.0633254 +Val 99.0684104 diff --git a/Batch.txt b/Batch.txt new file mode 100644 index 0000000..62af40b --- /dev/null +++ b/Batch.txt @@ -0,0 +1,136 @@ +; Set weight mode +WEIGHTMODE=AVERAGE + +; Set Standard Deviation mode +STDDEVMODE=OFF + +; Return capitalized (formatted) formulas +CAPITALIZED=ON + +fecl3-6h2o + +; Expand abbreviations +EXPANDABBREVIATIONS=ON + +etoac + +; Don't display the source formula +MWSHOWSOURCEFORMULA=OFF +etoac + +; Don't display the weight +SHOWWEIGHT=OFF +etoac + +; Convert to empirical formula +; Note: no need to use EXPANDABBREVIATIONS=OFF +EMPIRICAL=ON + +fecl3-6h2o +etoac + +; Re-enable display of the source formula +MWSHOWSOURCEFORMULA=ON +UreaC4(NH2)4Ca + +; Convert amino acid sequence from 1 letter to 3 letter sequence +AACONVERT3TO1=ON + +GluGlaPheLeu +Val-Ile-Arg + +AASPACEEVERY10=ON +; For really long sequences, can disable display of the source sequence +AASHOWSEQUENCEBEINGCONVERTED=OFF +GluGlaPheLeuVAlIleArgPheTyrMetCysValGluGlaGluGlaPheLeuVAlIleArgPheTyrMetCysValGluGla + +AACONVERT1TO3=ON +FLEELYR +MLTSCDEEF + +AASHOWSEQUENCEBEINGCONVERTED=ON +AA1TO3USEDASH=ON +FLEELYR + +; To re-enable plain molecular weight computation, use MW= +; Note: this will also disable EMPIRICAL= and EXPANDABBREVIATIONS= +; Further, it will automatically re-enable SHOWWEIGHT +MW= + +C4N8OH2 + +; Compute the mass of peptides given in 1-letter notation +ONELETTERPEPTIDEWEIGHTMODE=ON + +FLEELYR +MLTSCDEEF + +; Don't show the source formula when computing the peptide's mass +MWSHOWSOURCEFORMULA=OFF + +MLTSCDEEF + +; Enable formula finder mode using FF=, specifying the elements to use in searching +; Can also specify weight mode, maximum number of hits, and tolerance +FF=C,H,N,O,Cl,Bpy +WEIGHTMODE=ISOTOPIC +MAXHITS=5 +TOLERANCE=0.05 +403.84 +300.58 + +; The tolerance can be changed +TOLERANCE=0.02 +403.885 + +; The maximum number of hits can be changed +MAXHITS=10 +632.43 + +; The search elements can be changed +FF=N,Br,H,Li +MAXHITS=2 +389.32 + +; Can disable verbose output +VERBOSEMODE=OFF +; Additionally, could enable echo of comments +ECHOCOMMENTS=ON +; Switching back (this comment is in the source file) + +MW= +MWSHOWSOURCEFORMULA=ON +NH2 +C6H5Cl +^13C6H5Cl + +WEIGHTMODE=AVERAGE +FeCl3-6H2O + + + +; So is this one, along with the 3 blank lines above +MWSHOWSOURCEFORMULA=OFF +NH2 +C6H5Cl +^13C6H5Cl +FeCl3-6H2O + +VERBOSEMODE=ON +DELIMETER= +CAPITALIZED=on +c6h5cl + +DELIMETER=, +c6h5cl + +ECHOCOMMENTS=OFF + +; Enable Isotopic Distribution Mode +ISOTOPICDISTRIBUTION=ON +; Simply enter a formula to obtain the isotopic distribution +CH2(CH2)7CH2Br + +; Change the charge state with the following command +ISOTOPICDISTRIBUTIONCHARGE=2 +CH2(CH2)7CH2Br diff --git a/BatchComputePeptideMass.txt b/BatchComputePeptideMass.txt new file mode 100644 index 0000000..7988018 --- /dev/null +++ b/BatchComputePeptideMass.txt @@ -0,0 +1,23 @@ +; Set weight mode +WEIGHTMODE=ISOTOPIC + +; Set Standard Deviation mode +STDDEVMODE=OFF + +; Return capitalized (formatted) formulas +CAPITALIZED=ON + +; Don't display the source formula +MWSHOWSOURCEFORMULA=OFF + +; Compute the mass of peptides given in 1-letter notation +ONELETTERPEPTIDEWEIGHTMODE=ON + +SHRPTGGAGVGAHVAQVLWDNAVK +HIYAQVINPEAQVVAAASTVEK +YIAETFLENVEQVTDVR +VVNLGDEVEVLVLDIDEER +AMLQDVAILTGGTVIAEEIGLELEK +GFGFIEQESGPDVFVHFR +DFNEALVHQVVVAYAANAR +DVAGLDPVSLIAFNTVLVTADAVK diff --git a/BatchComputePeptideMass.txt.out b/BatchComputePeptideMass.txt.out new file mode 100644 index 0000000..e0a2e09 --- /dev/null +++ b/BatchComputePeptideMass.txt.out @@ -0,0 +1,9052 @@ +; Isotopic Weight Mode Enabled +; Standard deviations will not be displayed +; Source formula will be displayed with proper capitalization +; Display of source formula is now Off +3203.6097932 +4820.2836066 +1888.9417772 +3250.6107032 +4955.5827066 +4830.423205 +3813.9424038 +4942.6049172 +4958.5915816 +3240.5396682 +3260.5083698 +1806.8821566 +3258.6618856 +1894.9635744 +4861.6783336 +3264.8655998 +3237.4254928 +4885.6025592 +4828.583418 +4833.3137204 +4911.6988378 +4831.3656162 +1704.887499 +4830.671834 +4947.4592368 +2144.0901654 +2153.157907 +2775.3788644 +3018.4902176 +2079.9425058 +3109.7134642 +3514.7904496 +3393.6510042 +3545.8252542 +2979.498596 +2988.5742002 +3499.9289252 +2084.024791 +2444.3161906 +2977.4820794 +2991.4784516 +3279.6563466 +2293.1623404 +2395.1504386 +2069.0316504 +3508.7823884 +2723.358113 +2092.036401 +2825.4962714 +2924.5242764 +2318.2151016 +3376.7196892 +2934.5450106 +3344.657744 +3291.648484 +2173.0724672 +2856.4326886 +2904.48683 +2968.5333834 +1792.082166 +3045.4454214 +2697.4013132 +1972.0127696 +3366.5732122 +3128.5526158 +3043.6375256 +2558.291709 +3264.800877 +1840.9107534 +3315.66222 +2517.2386732 +2243.097042 +3011.477879 +1803.9213774 +1846.0451138 +1754.8838712 +3120.656681 +3479.7216622 +1907.0192348 +2832.473094 +1663.7689074 +3381.8547012 +2840.445166 +2801.452677 +2988.653492 +2107.9857232 +2350.1361868 +1712.9130608 +2967.6041944 +2516.2182734 +1609.7735982 +1897.8904732 +2054.9657004 +2259.1568612 +1905.8631968 +2038.1673484 +2042.9982432 +2195.056818 +2350.1440494 +1813.9209832 +1734.8974116 +2428.2749968 +1657.9654106 +2181.2004384 +3118.4876356 +1979.0323192 +1755.8315042 +2877.3676486 +2693.4176312 +3296.7266702 +2694.2998898 +2941.4708464 +1856.9155638 +3067.4748856 +2366.1252284 +1733.9311532 +2311.1834516 +1897.956715 +2958.6099148 +1970.9883478 +3149.6582598 +3072.5978316 +3291.6298586 +2297.2855012 +1713.9512186 +1730.8838712 +3027.6273556 +2796.361911 +1740.8219432 +1810.8988516 +1698.9264026 +2733.470058 +1684.8155206 +1799.86511 +1655.8729726 +3414.676489 +3443.7571782 +3319.6982264 +2808.4729126 +2259.1779896 +2385.1811614 +2609.2716274 +1713.8878334 +2112.1618692 +3322.7958092 +2121.9966644 +2145.0993322 +2673.4026508 +1983.0636176 +2699.3753916 +2134.11571 +3058.7330756 +1834.9100846 +2877.3991426 +1865.999898 +1626.9416576 +1641.825648 +1790.8144748 +1736.8521786 +1654.9253396 +2252.1647836 +2072.0724074 +2985.4727768 +1967.9509612 +3026.5568364 +2548.315916 +1716.9409888 +2091.06228 +1868.9366922 +1990.0483028 +2624.3254344 +1734.8841458 +2050.0305448 +2631.2815988 +1922.9948728 +3316.6938528 +1943.0475742 +1645.8998548 +3410.710565 +2946.388244 +1782.7332526 +1803.9631204 +3326.854761 +3037.4582666 +2965.4854498 +2827.4703498 +2919.4662346 +2363.208225 +2152.0986208 +1891.9639088 +3564.6751686 +2665.3598448 +3011.4987916 +1748.825039 +1735.8852686 +2154.103037 +3295.5560288 +1806.8828082 +2822.4660958 +2054.918084 +1981.974473 +1658.8701352 +2402.1865808 +1945.0771408 +1990.0483028 +3163.498517 +3203.6196886 +1642.821549 +1675.75499 +1782.9264026 +2499.3583876 +2274.143947 +1782.9726814 +1714.8559432 +1675.8264192 +1727.924611 +1644.872244 +2266.1844548 +1934.0220894 +3313.7022312 +1641.9664736 +2098.1673484 +1772.9195858 +1718.979104 +2764.3436038 +1629.82094 +1783.921652 +1676.9209234 +2257.1715406 +2873.3588162 +3356.7291732 +1662.8134118 +3204.7757266 +3022.5187972 +2148.2768928 +2103.1211294 +1792.9682652 +2828.4271922 +1816.9934156 +2451.3267122 +2834.417314 +3550.7666368 +2080.1125382 +3278.6604456 +2693.2143314 +2538.3077524 +1780.0358872 +2565.2216012 +3585.8790186 +1601.8008746 +3398.6146806 +1859.868299 +1761.998835 +2212.1864612 +2422.2267116 +2469.3662674 +2068.1204008 +1720.855926 +2023.1393434 +2479.1938516 +2705.5366768 +1719.9406544 +1666.9154442 +2673.3577188 +1872.9944786 +1686.9052742 +1921.9421116 +2984.3920086 +1679.8266938 +1636.8130176 +1613.84128 +2971.460498 +1671.9810598 +3494.666319 +2537.1907822 +2785.3340428 +2328.196082 +2104.0510044 +3588.7411946 +3142.5934154 +2296.179764 +2074.0258368 +1765.8899594 +2163.1422578 +1834.953679 +1787.9417174 +1801.9038768 +1955.0363412 +2026.1250916 +3093.4712578 +3042.7004396 +2488.2768482 +2920.474534 +2378.2705806 +3196.5597336 +2112.048697 +2973.573197 +2769.5428248 +1188.6390078 +2715.3999928 +2073.0741818 +1185.6393422 +2951.4664302 +2111.1585758 +1053.545447 +3583.8673914 +2208.1367188 +1157.6192768 +2463.252094 +1686.8576578 +1766.8872416 +1790.956638 +2189.0752448 +3356.8554298 +2480.3202126 +2030.0683682 +2148.0585924 +1701.8685564 +3235.7339238 +3333.6687622 +3491.8438624 +3165.6214994 +1009.5920004 +1940.9366922 +2179.1160444 +3178.6675198 +3099.5157024 +2573.3886402 +3214.7185066 +1124.6229644 +1946.0836232 +3068.5871478 +2569.3274834 +1660.889625 +2472.165572 +3357.7641764 +2450.3103344 +3034.4446928 +3235.6645274 +1141.5767454 +3389.736067 +2626.3538356 +2599.367906 +3329.943786 +2915.5425674 +3317.754658 +3272.6876024 +2456.2030184 +2785.5121192 +2578.262262 +1671.8943756 +1108.576411 +2189.1116282 +3488.4619532 +2001.002934 +2764.4196974 +2493.1964164 +3565.8608836 +3309.8448058 +2977.5444806 +3560.7581986 +1196.6400708 +3363.7219368 +1148.582559 +2386.25657 +2788.3489634 +1633.8674934 +2742.3302184 +1944.0428236 +2506.3179224 +3007.696375 +2895.310452 +1007.5651182 +3471.729843 +2845.598622 +2800.457462 +2866.4388194 +1867.8700136 +3000.5403198 +2666.5230938 +2703.5257356 +2051.0534476 +3218.8389922 +2660.351741 +1933.9017062 +1147.6600764 +2759.36601 +3238.8844826 +3537.0418734 +3356.7880226 +1148.6077094 +1813.8369834 +2515.2839062 +939.5065434 +3534.8027456 +1048.591666 +2845.5198004 +1115.618608 +3135.8243462 +2989.608336 +2577.3689518 +2209.2330744 +1636.878392 +3368.7042386 +1026.5709318 +861.4629662 +3018.6937332 +2983.6678542 +1079.5498632 +2409.293682 +1014.5498034 +2723.3343002 +2677.4413416 +2948.6374486 +3369.9824768 +954.4307578 +3437.8319514 +3161.6567408 +1679.9609944 +3112.608869 +3118.3972922 +1612.7436212 +2039.2149222 +1629.9453452 +2527.374431 +2913.6228026 +2762.4047434 +3447.9663716 +1657.9038768 +3445.8543242 +3066.5953458 +2767.4755372 +1631.8882276 +2708.52463 +3017.6733334 +2100.1578472 +3265.6943686 +3392.8495564 +2983.4272692 +1829.9482596 +3378.9224336 +3337.8356988 +1145.6444272 +1078.5368558 +3260.4793788 +3587.6448734 +3050.5500956 +2690.3710352 +957.4879352 +2910.6501388 +2937.5817456 +2739.4628642 +968.5191738 +3292.5597336 +2454.3553688 +2640.4962116 +2611.2995584 +3081.5195258 +1742.8984746 +3332.6807238 +820.444281 +3216.7579686 +3112.5828512 +977.5181706 +974.50325 +3546.0132168 +1180.5360056 +2855.4890776 +925.559639 +2764.5697668 +2739.4264808 +2654.4563726 +2426.3507398 +2321.1824058 +2705.233725 +1845.1199468 +963.466138 +2801.3093484 +1930.9974548 +2656.3529854 +919.5126914 +1075.5695516 +950.518505 +3444.8285648 +2842.347643 +3449.8784116 +3260.6183874 +2856.488349 +2954.6592458 +1617.7780316 +1902.0766868 +2752.9127994 +2902.40783 +1919.9952072 +1607.8994606 +2650.4077956 +3541.778187 +3293.4536954 +907.4035412 +819.3948902 +843.4126482 +818.3922484 +835.462572 +974.485492 +990.4592786 +803.4401992 +835.48033 +912.5756226 +917.4970422 +886.512357 +816.434111 +894.4810586 +995.5439898 +993.5130856 +957.560702 +972.5603676 +806.4286318 +941.554554 +889.5385106 +981.549469 +974.5548884 +845.5010642 +909.5072122 +914.5589104 +912.5280062 +963.477371 +834.4963136 +918.4922916 +954.6113372 +823.4551796 +966.4559082 +886.4872066 +973.4504888 +882.4235468 +928.5229212 +829.5061492 +798.4599302 +2343.243364 +1525.835132 +2337.2878086 +1563.8330232 +1520.7028044 +2073.183332 +1455.8296528 +1275.6566472 +1501.850387 +1419.6894788 +1332.7037306 +2296.3001472 +1556.9541178 +1427.7078296 +1365.7615768 +1584.8082072 +2054.0578212 +1550.8568694 +1475.7871214 +1490.9184032 +1375.7135662 +1431.787396 +1974.140072 +1562.8779978 +1518.7565516 +1285.7241304 +1985.0945218 +1472.8350722 +1587.752864 +1551.8269684 +1536.7419654 +1580.877329 +1416.7282294 +1349.7415114 +2057.0541164 +2186.115333 +1751.909356 +1401.7251934 +1272.6713692 +1317.6676816 +1348.7714124 +1834.961723 +1422.8558064 +1428.8591596 +2160.0938104 +1437.8415546 +1577.8664304 +1306.7972316 +1400.6645696 +1168.6563888 +1305.692832 +1404.8816256 +1543.8861016 +1247.6761198 +1433.634394 +1324.727818 +1308.6058134 +1581.8110446 +1366.7455932 +1396.6656326 +1253.70915 +1381.6758624 +1408.7449244 +1316.733966 +1441.8252366 +1575.7926178 +1459.734043 +1261.6336056 +1393.7605138 +1324.6734952 +1499.8347378 +1148.7029422 +1427.6779712 +1534.781325 +1301.7343004 +1286.7445302 +1343.6568428 +1234.5941862 +1465.7663872 +1449.7350888 +1337.7190454 +1434.7718066 +1500.7354404 +2129.0765824 +1457.8129406 +1371.772141 +1217.6291722 +1591.8133348 +1215.613523 +1350.6091666 +1442.6935778 +2388.1233152 +1153.6567232 +1211.7125032 +1397.8241736 +1297.7605138 +1284.5873694 +1436.737155 +1399.7459276 +1364.7047936 +1285.6513636 +1748.9341892 +1530.804168 +1331.6793088 +1115.633863 +1394.7306128 +1508.7834338 +1358.7557632 +1547.7765744 +1337.7343004 +1220.6400708 +1122.6032932 +1956.034961 +2055.1588504 +1314.6091666 +1443.7972914 +1184.572012 +1457.7361518 +1518.7605736 +1342.6768484 +1113.5778084 +2351.1545538 +1169.713172 +1543.8820796 +1308.6495892 +1317.708087 +1070.6447616 +2097.0629488 +1220.6764542 +1457.7765572 +1219.6560544 +1472.8350722 +1582.7455932 +1354.7819766 +1228.6775172 +1306.6040816 +1366.7092098 +1572.8147322 +1304.7088156 +1296.751347 +1050.5895572 +1207.5985426 +1354.6153146 +1165.707024 +1372.6986456 +985.5304666 +969.560702 +1214.5818902 +1222.5941862 +1559.7004372 +1484.7834338 +972.5352172 +1130.5243784 +1495.755823 +1507.7704264 +1372.7561574 +987.4984994 +1868.9883306 +2375.237216 +2064.09044 +1507.8762062 +1304.7088156 +1373.6687446 +1548.9213794 +1090.5658468 +2204.1701432 +1428.755369 +1128.607984 +1842.0838978 +2345.123375 +2275.272811 +1364.7240706 +1167.5519892 +2285.2266518 +1096.614132 +1407.6894788 +1459.7266506 +1208.6229644 +1490.7517412 +1400.6783056 +2314.1480714 +1403.6932262 +1062.6436986 +1094.6196112 +1353.677577 +2104.0179914 +1378.7092098 +1438.8394884 +2185.2218414 +1383.7074182 +2300.2124 +2096.0861434 +1561.8252366 +2102.137799 +2055.122467 +2062.0581982 +1546.781325 +2311.2324056 +1828.9682652 +943.5814362 +894.517442 +1168.6927722 +2353.1913314 +993.560702 +1464.7684534 +1977.1258202 +1487.6925746 +1347.6777756 +1023.5712662 +1926.022364 +1300.7642014 +1341.7503438 +1020.5716006 +872.4715574 +2298.9611292 +1648.8467166 +815.4500946 +1194.5709318 +1544.7762228 +1462.8394884 +1178.6182736 +1919.0008252 +919.5126914 +934.5487404 +1574.9031482 +956.5290692 +1377.7503438 +1326.5939116 +1056.4512174 +1353.6676816 +2075.0071688 +1110.6549316 +1193.6404052 +1009.5920004 +1556.877329 +2036.1128128 +1218.6244216 +2369.082853 +1294.7509528 +1812.0580786 +1922.0373444 +1147.619671 +1265.6516382 +1501.7987486 +1997.0078376 +2308.1474026 +1420.8264212 +1028.5072892 +1723.7953954 +1669.8998548 +924.5756226 +2210.2435788 +1880.084292 +1286.6652384 +2151.1139184 +960.4777054 +757.4333824 +1585.9078988 +1477.839154 +1132.6240274 +2037.0741818 +2279.1653166 +1206.6509096 +1113.6505752 +2285.1439896 +773.4282974 +2350.0937486 +1575.8844802 +2264.3111846 +1038.498165 +962.4780996 +758.4173988 +1344.7652644 +1314.6396766 +1526.6895558 +2344.2143304 +2116.2003786 +1402.7707436 +2391.228109 +1272.5696114 +1687.9243364 +2391.1350812 +1463.8208204 +1581.9089618 +1350.7176652 +1186.6246962 +2367.1317108 +2289.1932274 +2176.1177164 +2017.0632234 +1458.8115604 +1958.1087736 +2020.9741386 +1569.85145 +2146.149409 +1674.9264026 +2058.0817272 +1013.565787 +1207.6560544 +829.4657438 +2065.0367354 +2246.140302 +2358.1491344 +2094.2200498 +2123.2223146 +2375.3106688 +1134.5781428 +2383.2979958 +1404.707101 +2265.1964164 +2225.2378848 +2015.0170642 +2007.088768 +1474.814338 +1892.073059 +2361.1171246 +2013.039136 +1332.728881 +1670.9103592 +852.5544942 +835.4551796 +1432.74224 +1558.7125802 +863.4170816 +1902.8933896 +2330.277973 +1427.8169798 +2156.04976 +1893.0835634 +1259.6695948 +1390.8084646 +2175.062966 +2269.174225 +2239.242301 +2159.1949592 +1425.8237966 +1120.587644 +714.4275688 +716.454451 +866.4973766 +871.5603078 +993.4767022 +716.4180676 +762.4639522 +901.5232556 +714.4639522 +780.449366 +794.4173988 +757.5061492 +757.5061492 +942.535886 +693.4537224 +673.401021 +949.5167306 +685.4374044 +772.4694314 +722.4438868 +749.407169 +660.3442378 +629.3748076 +705.406106 +602.3275256 +757.4697658 +970.508335 +841.5385106 +758.4173988 +691.3653064 +661.3468796 +766.3861004 +853.4657438 +758.4286318 +587.3642434 +587.3642434 +645.3697226 +645.3333392 +803.4500946 +650.363909 +868.4191306 +827.4500946 +985.5344886 +787.4439466 +954.5749538 +987.5600332 +630.4064404 +864.445344 +663.334008 +645.3333392 +981.560702 +3675.8929532 +3972.0553186 +3891.0134134 +3216.5627858 +2421.1409374 +3157.6593228 +3299.6554204 +3605.8656596 +3866.057702 +3687.7177426 +4107.163953 +3753.9405524 +4409.188846 +2963.4738226 +3585.8525306 +2413.2587386 +4281.0938878 +2431.2674514 +3724.919878 +4329.166689 +4041.9556696 +1870.9788294 +2641.3750998 +2850.5450106 +3794.0446176 +3685.8474456 +1619.7750554 +2730.383238 +3022.545799 +4041.976798 +4329.3146912 +1678.8678278 +4164.0843096 +3041.5531316 +1576.7984142 +3918.052617 +2455.1688826 +4834.4241312 +3608.9281966 +2904.4591766 +2413.2780156 +2426.2878684 +3943.0438444 +4203.0945566 +3877.0108142 +1434.7466562 +2791.4391538 +1546.7891876 +3128.5746116 +3721.9242344 +2709.3609078 +2003.0621776 +4205.0962884 +2480.201167 +4032.1683094 +1541.7685132 +4074.0697234 +4355.1452688 +3920.9994788 +3528.944926 +1681.9474712 +4318.2557992 +4220.204634 +3551.7419232 +3799.940672 +3024.5694922 +3844.6651942 +4962.5190894 +4326.162281 +1353.7251934 +4671.5485962 +4857.5690558 +1404.6633252 +1494.792935 +2584.2768482 +2203.1411948 +1647.8264982 +4180.2167142 +3891.0264634 +1700.8216686 +2091.07101 +2521.4227162 +1148.5574086 +1558.795061 +1578.8439218 +1716.832706 +3696.792 +1381.7564918 +1580.8058998 +1588.9075644 +2802.3863926 +4574.4396608 +3602.824251 +870.528675 +2000.0326536 +2478.3117744 +4587.2801764 +3762.9831436 +1987.9962702 +2457.137567 +1343.7197142 +3759.7768078 +2268.3092542 +3230.5440844 +2382.2066462 +3680.9302294 +4253.1001382 +3424.8308722 +1122.5417594 +3336.8366088 +1412.8099218 +3205.7345926 +1041.5818304 +4753.382226 +3549.693261 +2618.431883 +3143.6081576 +3423.7945222 +1575.961269 +4005.3076524 +3426.860909 +3635.7652566 +2124.0275686 +4092.2161416 +2465.2107452 +3444.6758202 +2427.1012008 +1108.4971192 +2204.1800386 +2388.1749536 +3928.9787274 +3334.9227174 +3987.894153 +3935.006398 +4481.2820896 +3640.7181702 +1442.7663446 +2310.2430296 +3355.6982264 +1394.8496584 +3717.0737646 +2178.1724334 +2843.525461 +2914.5471366 +3719.9018788 +1289.6615336 +3416.5616052 +1708.7667388 +3692.7991178 +3202.6046484 +2871.389916 +2181.224242 +3939.046245 +2887.3994344 +4444.6021812 +3909.9127612 +2021.1044172 +4166.190518 +3598.7414864 +4577.4287794 +2866.5089018 +3029.5345062 +3938.0796978 +3684.6434932 +884.5330912 +3781.2465746 +3120.7170494 +2724.498896 +1741.987225 +2224.1024614 +3907.7677352 +1153.6091068 +2654.5158828 +2019.9982006 +2660.2944106 +3412.9346192 +1974.9396684 +3465.945912 +2913.4309902 +2068.0999584 +1979.0926876 +3476.8621706 +2841.5144854 +4450.1999574 +2946.3379432 +3681.8129926 +2283.3888976 +3902.972322 +3621.6476682 +3869.9811878 +2136.0747148 +2410.3430728 +3309.8488622 +2799.4878332 +3124.63786 +1314.641528 +1049.5756824 +1166.6559946 +3780.9759498 +4173.3009552 +3465.8077708 +3031.4410052 +3570.1077636 +1905.1199468 +2561.4178126 +3517.717167 +3861.0610126 +2137.2106084 +1055.6087126 +3261.7178976 +2558.3451988 +1818.9839144 +3603.8203678 +2377.2827236 +2941.6132254 +2836.5156254 +2413.2600762 +2358.2542626 +1528.7714124 +3447.9241148 +3242.8106872 +4412.3704286 +4173.1646218 +872.5807076 +1774.8480806 +2807.543905 +2208.1942306 +4091.1988964 +3016.655618 +2683.401605 +2897.4601038 +3303.7899956 +2604.4784536 +3531.8870798 +4536.4954408 +4743.3765746 +3824.952514 +828.4704944 +844.5017928 +828.4891198 +828.5796446 +952.5229212 +702.366035 +671.4329882 +920.4715574 +856.5381762 +864.5181108 +856.5857926 +758.4537822 +957.549469 +842.4385272 +843.481393 +663.334008 +852.4817274 +988.5453872 +986.529738 +945.549469 +587.3642434 +1822.9940844 +3337.6676992 +1638.8650502 +3524.6914866 +3413.8180432 +4906.3909368 +1806.9549234 +1706.8667648 +1742.8362548 +1739.898123 +1701.8937068 +1660.9075644 +1960.9417772 +3426.8245256 +1615.8416742 +1613.9028138 +1940.077081 +4850.5427998 +1750.9365726 +3543.7480712 +1645.846365 +1748.869285 +1661.84128 +1629.8725784 +4935.7079002 +4936.4439392 +4924.3985278 +1974.9720298 +1631.8365892 +3658.7817104 +1646.8086014 +4814.3736348 +3641.7365808 +4864.3976604 +4873.530444 +1854.8747642 +4908.6626074 +1785.805685 +1973.0469054 +4864.4580288 +1712.7893072 +4828.5901244 +1658.8853902 +4824.731715 +4810.3634648 +3860.9391104 +1213.6342572 +4480.3364458 +3871.2630122 +2406.1116292 +4024.0167068 +4211.336386 +4030.1248254 +3782.978549 +3889.7852602 +3824.9599064 +3805.9658396 +3616.977562 +1273.6553856 +1499.8307158 +3604.7585756 +3759.1733346 +4028.0060808 +3975.0879972 +2644.3958938 +2946.615093 +4323.126918 +3653.0000372 +1292.6645696 +3849.057172 +4192.0549416 +3954.8643138 +4692.4332554 +3989.1261124 +3802.9800822 +3824.4307534 +3900.2999256 +3597.9373978 +4275.2452684 +3692.746314 +4206.0921894 +2542.5977566 +3674.9704706 +3750.9315052 +4760.442181 +3670.7428676 +2436.2608048 +2405.1597584 +4292.1792678 +3694.9245688 +3751.7758614 +4075.0876202 +3689.7783238 +2535.1045712 +3784.927089 +2595.2815988 +3840.9243114 +4583.2124946 +3995.006398 +3619.8620318 +3849.9172534 +2414.1865808 +3699.836093 +2477.2260002 +2607.2928318 +2874.3936036 +2411.1604272 +3649.8377316 +3611.8036728 +2767.2154938 +2637.2995554 +2635.4948142 +3815.951528 +3073.5395912 +4324.1340956 +3732.8441522 +3851.0454658 +2561.3965028 +2489.290037 +4605.1366584 +3881.0924134 +2703.4112258 +2632.1607028 +3137.6495298 +2586.3023928 +1559.757949 +3826.9555926 +1541.7031388 +2585.2325252 +1525.7623652 +3597.8677856 +2401.2488432 +2508.180827 +1222.637962 +3931.00898 +2838.4690548 +3898.9793962 +4642.3580708 +3787.7205202 +1419.6881412 +2471.3383222 +1343.7118516 +3864.0050178 +1448.741177 +1325.6503006 +1588.8460306 +1339.6983112 +2532.2529422 +1219.6448214 +1274.63538 +2857.4133346 +3845.9627438 +1287.6670128 +3707.8690472 +4486.4013672 +2901.3458686 +3642.7782812 +3963.0509622 +2669.2278516 +4068.1577624 +1321.7870018 +4157.3727522 +3851.9616392 +1583.8994606 +1464.7500094 +1221.6240872 +3681.9432368 +3969.1232324 +3881.874722 +3810.9903546 +3724.0093144 +3977.0045638 +1231.5832876 +3964.0250832 +4057.1047094 +3986.1174188 +3904.0515712 +1291.801588 +3761.8650424 +1360.6218568 +3637.952746 +4534.2801166 +3862.0926454 +4000.1969234 +3949.0921296 +3745.0540762 +4438.9940128 +4037.1948572 +3853.1015112 +3880.0285914 +2466.2001212 +1378.7244648 +3667.0399946 +3688.9099826 +3756.9460914 +3753.079638 +2642.210428 +3613.8172892 +3651.9923894 +3646.7314188 +4325.399754 +3711.066355 +3598.827519 +3960.0503126 +1469.7725352 +3770.956083 +4250.0887602 +4047.1688424 +3600.8827062 +3930.0023162 +2824.5553792 +3788.9334184 +1464.6857912 +3884.8448828 +1222.7284868 +4752.4835906 +4069.1819298 +3880.9992042 +4558.327733 +3610.9299284 +1339.7346946 +3603.9511166 +3955.9904934 +3620.7469656 +3737.8268076 +3845.1485784 +3965.1526004 +4381.3481946 +3953.2909574 +4429.1349002 +4077.0430732 +3787.9995214 +3607.094969 +3685.870093 +3938.8930302 +3932.2362658 +3691.1082348 +1306.5710686 +4307.1821224 +1228.6299008 +3868.8880212 +3956.0624272 +3848.900224 +3773.9191838 +4152.050645 +3619.8456114 +4783.3862744 +4046.2639364 +2918.3834336 +2486.3379878 +2567.3369846 +2693.2244812 +2450.091348 +2705.5075044 +2747.2979168 +2402.251485 +2518.3390508 +2850.5027538 +2806.569098 +1570.8752202 +2822.2452924 +3018.4933722 +1567.778289 +1580.9249454 +2447.0871902 +1592.7510724 +2555.2503004 +3131.5816696 +1216.6927722 +2510.1958246 +3659.8980382 +2902.4745512 +1203.6499064 +1490.809253 +3120.5081742 +2444.1991778 +1512.6527782 +2600.3386566 +3954.985681 +1209.7332374 +3624.0475938 +1224.6390078 +2455.3838126 +1342.7859986 +1343.7309472 +2606.4067326 +3623.0813354 +1276.7754344 +3635.033719 +4401.3252726 +3772.0634558 +1578.7830396 +3890.0875604 +3823.9063122 +1502.7728696 +1547.8922496 +4017.244781 +2433.2460656 +1534.7164208 +2810.3802446 +3723.9405696 +3772.721722 +1554.8769348 +2571.390749 +2618.249966 +1408.6656326 +1198.65572 +3872.893013 +3804.0864802 +3808.8100762 +1439.7368206 +3774.7551636 +3673.9183954 +3822.0784534 +1520.7834338 +3722.9676048 +3610.8239672 +3739.0044442 +2396.3175282 +3901.1689184 +2801.4235046 +4193.1982276 +1421.689873 +4027.1504916 +3899.8852862 +1313.697917 +3701.1718774 +1519.8470338 +3995.188315 +3840.741229 +2480.3096656 +3714.9038518 +3735.0279824 +3809.109692 +4509.2525058 +3872.1848088 +4243.9715488 +1445.7343004 +1335.613523 +1242.7183168 +3823.0916422 +4069.0351316 +3800.1881356 +1369.6513636 +3873.0383652 +1270.662931 +3689.716104 +3651.0007992 +1395.8237794 +2888.5539534 +1306.7132318 +3709.7658322 +3666.9700592 +3824.8168758 +1565.830047 +3594.825393 +1277.6767886 +2848.4606166 +1228.739051 +1517.7150234 +3856.176628 +3682.9148892 +3615.1352812 +3823.00025 +2978.5348406 +1338.823445 +2594.3928152 +1492.7673904 +1286.6717634 +2612.348552 +1551.764097 +3653.052543 +2312.2335284 +1811.894787 +2245.2033974 +2127.1146044 +1876.0318652 +3029.4408268 +1996.0152726 +1799.9264624 +1907.9628458 +2007.9577608 +2162.1694744 +2003.9548018 +1644.8140806 +2290.1633264 +2318.1939732 +2032.0840174 +1922.0723902 +1875.9287698 +2221.2258634 +1867.0414262 +1775.931822 +1872.9621172 +1886.0624948 +1935.9326104 +2048.0935358 +2325.1892054 +1855.9753232 +2021.0065 +2161.9915794 +2255.8800458 +1645.9402602 +3007.4861186 +1755.0042544 +1651.0144244 +1698.9012522 +2228.1629322 +1774.9213176 +1658.983126 +1930.0352184 +1749.9260682 +2173.0646046 +2553.3510124 +1961.9311876 +1832.995723 +1598.7841026 +1905.946545 +1716.9409888 +3313.6366754 +1882.0424294 +1808.0195692 +1636.7844968 +2213.16914 +1910.9771148 +1743.8579922 +3262.6199034 +1688.8562006 +2026.0384074 +2104.0873878 +1906.927191 +2303.263704 +2136.0633004 +1656.7743268 +2097.156844 +1666.8386554 +1911.9400028 +2341.3229476 +2360.156921 +2352.1861866 +1883.9417174 +2846.4483378 +2353.2827236 +1723.925674 +1670.8474878 +1720.7620652 +2999.5538004 +1789.8634714 +3219.7403464 +2193.0912882 +1674.8828082 +2165.180373 +2362.3371994 +1848.0946434 +2957.5484236 +1755.9804082 +3386.7833318 +1657.7664216 +1827.0651366 +2909.455866 +1635.8323716 +1735.8715326 +1898.9995808 +2945.5821226 +2091.1251514 +2863.4198768 +1805.8617568 +1137.6869586 +1779.9842488 +1099.6423184 +3114.6784782 +2764.531532 +2947.6693732 +997.4868722 +1182.6396766 +2497.3011676 +1759.8668246 +1899.9901222 +2858.4344204 +1731.930759 +3088.7687902 +1138.6345916 +1605.9089618 +2646.4705738 +3223.7619308 +975.5752882 +3358.708439 +1046.5971452 +2238.1353984 +3190.6621602 +3035.7422424 +3419.9390952 +1174.5400448 +1747.9137894 +1048.558653 +2764.4606166 +2319.1818302 +1997.017733 +2263.3011504 +1800.9483812 +3381.7331526 +2623.3128972 +2239.2283836 +1096.5552826 +1157.6655556 +2279.2558414 +3192.4929192 +3341.7559956 +3476.7702646 +3311.7189434 +3241.638013 +1918.9505244 +1099.6600764 +3321.9135506 +3421.8390692 +3016.7144674 +2345.176351 +3193.6393598 +2492.387792 +3069.5882706 +2803.6282818 +3370.864554 +1164.6403454 +2844.4881676 +3143.7991026 +975.5501378 +2272.1738906 +2071.0737876 +1035.5422752 +2959.7480134 +2627.2610632 +2958.388244 +3577.8514676 +3532.7839418 +2856.5689784 +3531.7388618 +3453.945912 +2684.4795166 +3151.6665166 +2736.3235384 +3356.8158918 +963.5137544 +1950.0785382 +973.544384 +1039.6025646 +3033.5354668 +2762.5264642 +2826.5126492 +2364.1749536 +2088.9421886 +958.4831846 +3123.6233336 +848.4868124 +1652.6900524 +2439.3597252 +2293.2932706 +3334.5842496 +1941.9981834 +1772.9532848 +3546.7257754 +1638.8697582 +3456.8339244 +2790.5339498 +2798.3358172 +2518.468164 +3373.8026858 +3329.7937602 +3514.7006108 +2433.4120324 +3246.769689 +1867.0162758 +2936.6082762 +2505.3698192 +1102.5770798 +2431.2548716 +944.5079408 +3538.0146568 +2657.479851 +1167.6862898 +2138.110625 +1053.5818304 +3245.7155902 +3543.807788 +2509.093928 +2013.942523 +2467.3281522 +1949.1461602 +2951.572896 +3134.5169012 +2144.060993 +850.5024616 +887.5076064 +3219.6763096 +2627.5234282 +3017.4015432 +3095.6299376 +1028.568823 +2063.0298162 +2106.1684114 +3242.5665504 +1863.9590984 +3164.603784 +2375.1678196 +3535.591109 +3537.8367618 +3409.6578038 +989.554554 +927.5389048 +948.5028558 +929.554554 +993.5355516 +814.527612 +831.4425066 +913.559639 +800.5007298 +886.512357 +811.4551796 +806.4650152 +985.5304666 +887.5228614 +830.4861436 +837.409295 +816.4170046 +861.4200578 +841.5385106 +873.4919572 +829.5385106 +946.52359 +809.4435524 +814.4548452 +841.5272776 +1430.824508 +1510.8354664 +1566.804168 +1495.8973346 +1467.772141 +1360.746262 +1482.815401 +954.5861868 +1379.8387598 +1514.805231 +1565.7321298 +1456.7786234 +1446.7142948 +997.5807674 +1507.8721842 +1158.67606 +1487.8017248 +1140.6614738 +1225.725468 +1549.7848312 +1388.741177 +1389.7099384 +1543.6976596 +2192.1086094 +1349.7343004 +1561.86162 +1087.5985426 +1256.6724322 +970.5963568 +1402.81836 +1186.65572 +1417.6936204 +1460.7986888 +1467.7932694 +1499.7408426 +1202.66589 +1169.6040218 +2248.1222522 +1073.554554 +1460.7623054 +1358.7669962 +1540.7885188 +2046.9606154 +1089.5970854 +1208.6400708 +1572.854486 +1276.6808876 +1462.7085582 +1593.8838114 +1540.897669 +1999.9598868 +1013.6232988 +1587.8408858 +1386.7354232 +1203.6499064 +1584.8160698 +1208.6513038 +1396.74224 +1104.603962 +1207.6713094 +1335.7258622 +1335.6782458 +1140.5311952 +1470.8809568 +2124.2822524 +1342.815857 +1254.6244216 +1511.8922496 +1504.6656326 +1525.9191318 +1234.6153146 +1157.6590306 +1329.8019822 +1476.747325 +973.544384 +1519.8398228 +1061.517519 +1529.8201516 +1027.6137976 +1424.6935606 +1293.7002244 +1540.7521354 +1430.6789744 +955.5338198 +1490.79802 +2063.0130422 +1228.7080272 +2173.9075796 +1446.7830396 +1360.7714124 +1304.6975826 +1435.7247992 +1510.7932096 +1245.6981916 +1186.6743454 +1318.674164 +1463.7983544 +1528.7489808 +1259.6583618 +877.5021272 +2254.142198 +1182.5954306 +2358.1603674 +1247.6509694 +2294.13628 +2210.0412286 +2012.9703912 +1445.7473848 +2291.3113204 +1326.7506782 +1027.5410308 +1529.7990232 +1419.8561408 +1016.5250472 +2222.121858 +1504.7633684 +1468.8223992 +1379.7408426 +1453.7677248 +2199.1898742 +1985.0832888 +1082.6447616 +2136.2750758 +1552.8460306 +1595.7943324 +2056.1276118 +1047.599787 +2324.2977374 +1239.7298842 +1151.629841 +1685.0239256 +2149.0837002 +1196.567304 +2380.179764 +1175.614586 +1334.6982514 +1481.7725352 +2152.281694 +1176.5960994 +2232.1498032 +1812.076018 +2370.2403452 +2043.0497002 +2332.3967176 +2210.310986 +1477.7776202 +1916.073059 +1218.6105042 +1583.935844 +2209.2065864 +1415.7197142 +2288.205875 +1650.8549734 +2275.2297212 +2287.1847892 +1236.7077526 +1275.7186512 +1072.598877 +2200.1428668 +2112.1115684 +1997.0363584 +952.4171414 +2229.0007634 +972.5603676 +2202.1565268 +1011.6188826 +1110.7124434 +2224.3306572 +1761.9889396 +1184.593792 +2235.1833492 +2052.1843352 +1323.7186512 +1026.5570144 +2198.2422412 +1318.6768484 +2203.1484058 +748.4119196 +1941.1233172 +1522.7402336 +1665.9565782 +1453.7135834 +1943.8781944 +945.5858524 +2180.9717724 +1404.7037306 +1911.9148524 +2230.1931848 +1467.7972914 +1885.9533446 +2348.172176 +2074.0201792 +1715.8577176 +1020.5028558 +2357.2855012 +2344.0391198 +2268.1234966 +1905.1159248 +2148.1062088 +1460.878848 +2051.116319 +1722.9569126 +1796.0631636 +2024.1741652 +2009.1892844 +2009.9078542 +1735.9508244 +2039.1488618 +1472.7582834 +814.4660782 +674.3962704 +952.4865378 +715.4228182 +741.4748508 +718.4411092 +777.4497004 +918.502187 +728.443218 +671.3966048 +855.5541598 +850.5136946 +944.4926858 +915.499837 +674.3962704 +720.4170046 +753.413317 +820.4191306 +785.5010642 +546.3013122 +855.481393 +957.5355516 +952.4865378 +771.3697398 +913.559639 +515.3067316 +971.5763512 +625.416276 +458.2852688 +515.3179646 +515.2815812 +673.4486374 +606.3489286 +784.5170478 +706.376205 +821.5122972 +729.3881666 +745.3606156 +857.5446586 +686.4326538 +778.4224838 +913.4327308 +745.4156244 +901.4504888 +741.5112342 +2259.1391032 +2148.1764726 +3559.8746024 +2092.043612 +1943.9298328 +1799.9569724 +2070.0632832 +2550.260136 +2706.3248588 +3263.6326564 +1358.624833 +3002.5608584 +2921.438108 +3295.6739434 +2946.7116726 +1207.6924378 +3283.7505164 +3788.120086 +2374.1739078 +2688.4221072 +3107.735536 +1651.925674 +1494.9133182 +4265.2319266 +3722.9577186 +3841.9026702 +3562.6990574 +2916.4486296 +2264.2739338 +3386.0400818 +1226.7234018 +2893.5013564 +3296.8582864 +1835.9682054 +1287.7298842 +3614.9976102 +3957.9716106 +2122.2446418 +3700.693417 +3435.7509278 +3232.855979 +3027.5049396 +2642.5131984 +3724.963826 +3488.725367 +2979.5024366 +2749.5238224 +2609.490398 +1588.8321132 +3141.72529 +3789.870323 +1706.979104 +3114.7036286 +2523.3406296 +3309.72529 +2707.367906 +3633.7091676 +3070.5147752 +2014.9483194 +2636.504667 +3299.7149214 +1705.8886218 +3073.7049064 +3634.7468896 +2769.221429 +3707.02788 +1147.5257758 +2287.2059176 +3227.7045558 +1953.979558 +4417.4791248 +4913.5015898 +4117.017555 +3241.6626932 +790.3973334 +3752.9004054 +1269.675074 +3235.7736776 +2513.3661742 +3771.0980648 +3623.9786676 +1268.6652212 +2545.3499494 +2297.1877654 +3166.55301 +4028.115231 +4250.338736 +1176.7304 +3490.9081484 +3538.85651 +3537.8771672 +2333.3616384 +2487.350525 +3746.9889146 +3728.198031 +2488.3940424 +1722.8280152 +1984.0047256 +3301.6878436 +2364.3276982 +2070.9857658 +3710.0401254 +815.4137112 +815.475245 +842.5086096 +873.5395736 +628.3907912 +771.496648 +800.4252786 +713.4687028 +799.4664126 +612.3231094 +978.6477206 +916.5229212 +528.3383644 +940.618154 +720.4282376 +685.4850208 +687.4027528 +1781.8583864 +2902.580331 +2827.548304 +3113.567735 +3103.6792686 +2615.4897292 +3081.5368136 +2645.5380144 +2892.3765144 +3538.8531396 +2465.2702462 +3123.451312 +3139.5728372 +1642.762048 +2413.32161 +2754.3347542 +2847.4013304 +2137.149256 +3478.7830572 +2211.1018524 +2039.0422146 +1723.892661 +3471.60993 +2267.3041094 +3306.6156068 +1848.9944786 +2898.5225446 +2907.4370622 +1611.7892474 +2336.2773042 +1647.764097 +2145.2343188 +1643.9497614 +2323.3072052 +3583.9923104 +2875.5833498 +1865.041032 +2280.184849 +2363.0932014 +2863.3834934 +2272.0971018 +3053.7124012 +2930.6381174 +2614.3933736 +3353.7950634 +2249.2346958 +3529.8051888 +2094.9493824 +2493.3438014 +2821.476206 +1829.8736414 +2121.1357156 +2583.3941194 +2519.3093312 +1764.9005834 +2096.1153158 +3434.7060728 +3557.8366686 +3255.655009 +3144.5279214 +2534.447138 +1772.9672022 +1773.9624516 +2080.0240026 +3128.5130434 +2765.467932 +2180.2172894 +1965.04718 +1682.9103592 +2058.0533878 +2544.4024978 +1751.905334 +3334.7495304 +3259.6453882 +3264.6216352 +1701.836195 +1987.098938 +2006.897823 +1914.947531 +2984.5033638 +1599.901768 +3214.6749122 +2410.1997442 +2929.4338114 +2285.0963732 +2069.0065 +3163.5905952 +3065.6005666 +3060.5290868 +955.5086694 +946.4831846 +946.490577 +940.5817706 +959.5076064 +936.4374814 +817.4545108 +799.491563 +900.4916228 +865.4657438 +989.4930202 +988.4977708 +845.4646808 +885.5283406 +918.4235468 +856.440259 +988.4865378 +889.4075804 +887.5116284 +852.5068778 +820.4806644 +976.5341542 +864.3977276 +940.4865378 +943.5702032 +3593.8847896 +3294.6486542 +2486.4530022 +932.5079408 +3339.7758968 +2600.2692602 +2274.0916226 +2879.4495396 +3284.784182 +2906.5211046 +1861.0209666 +3059.532672 +3435.7812656 +3384.5143364 +3150.675505 +2331.2355014 +3525.938554 +915.5025214 +2587.3013662 +1081.6495122 +3424.9041092 +2398.283058 +3139.6512616 +2426.2850026 +3235.7788558 +1014.5709318 +3104.599762 +1697.8121076 +3204.616457 +3125.607959 +3525.7833064 +3561.9591778 +2951.4816852 +2745.434542 +3468.7200662 +2742.403499 +3133.597103 +2648.4132748 +3091.7240284 +2377.2423182 +1731.7733408 +3057.6836848 +3127.5806654 +2860.4653246 +822.4235468 +2867.5081732 +2425.3004816 +3460.7513646 +2502.2291122 +799.48033 +2439.3961086 +2450.2151016 +2956.482431 +3119.7606864 +3367.7491788 +3193.575323 +1813.019629 +2532.4764208 +3305.7997714 +3525.965042 +1030.6022302 +3214.705936 +3030.4643812 +2902.447368 +2764.356826 +3008.6181716 +3339.8050692 +3161.5922338 +2940.476283 +3428.740622 +3076.3878842 +3295.8801434 +1185.679096 +2330.2456116 +1668.7954552 +1139.5247128 +3505.7552852 +3161.6502158 +1834.0650768 +2759.3661914 +2179.0769766 +3216.6620406 +1002.5709318 +3405.6491872 +3550.6554974 +3421.8067078 +2885.4778618 +2531.3019388 +3319.7166704 +2445.3087556 +3571.9322956 +2496.4023164 +3406.8394036 +2710.3311882 +3167.7103856 +1795.906397 +929.4494258 +3563.8162434 +2775.4952256 +3273.710035 +2954.4211546 +3101.5641832 +3560.752839 +2702.427861 +2862.425965 +1860.9291042 +3496.8623662 +3242.6604456 +1742.9282986 +2225.1116282 +1996.9166268 +3295.7200064 +3574.640894 +3226.4802432 +2205.0953102 +3112.7171518 +1767.911482 +2646.3037304 +3066.5317792 +3393.7428666 +1786.8770716 +3235.7914264 +2703.3372936 +2900.5298174 +3428.7932444 +3269.7155902 +2525.4553522 +3374.7253498 +3313.7606104 +2791.3128972 +3491.7445984 +3402.6937676 +1096.4937488 +2691.4415544 +1038.480407 +3362.8495736 +2603.362821 +1853.959674 +2912.4811866 +1620.8583266 +3446.7323794 +2773.5426292 +2547.2718848 +2640.4207604 +3305.6964946 +3050.6123154 +3478.7410162 +3511.7793696 +1860.8999318 +3407.7110808 +2943.501099 +3435.7754266 +3121.6579852 +3195.7688672 +3532.785245 +3528.9303226 +1750.8597838 +3537.8825704 +1082.4922328 +1177.6454902 +1154.66589 +929.4817872 +3531.8983128 +3386.729842 +2824.470512 +1870.9900624 +1698.955575 +3643.8384004 +1993.1458856 +1820.9672022 +1755.941992 +1830.936298 +1932.9468622 +1865.988665 +1745.8664304 +1685.7718836 +1824.8675704 +3263.4840504 +1705.9137722 +1602.788913 +1683.8831426 +1879.0315308 +3217.5481398 +1892.9955416 +1724.9460738 +1981.8799262 +1893.994813 +4834.5279218 +1819.0454482 +1634.8991262 +1926.1189436 +4887.4335726 +1704.8165836 +1995.0173388 +3221.542231 +4946.7894396 +1876.9682652 +1778.0301334 +4808.4383404 +4995.587517 +4916.6333418 +1977.8050334 +1726.9213176 +1853.012041 +1973.0469054 +4982.5493248 +1856.8865728 +4945.5641866 +1762.8737012 +4894.4372156 +3634.8459286 +1957.916491 +1855.8807764 +1823.9740788 +1918.9570494 +1814.0189004 +1703.8300642 +1605.9817286 +1778.9049996 +1837.9533446 +4990.5623068 +4919.5505266 +1605.836195 +1789.99375 +4944.7382744 +3675.949779 +3642.9408868 +4383.3589544 +3682.859013 +3855.0432374 +4328.034934 +2788.4223818 +2442.264158 +3841.7708726 +3904.911834 +4244.1403814 +2449.2429698 +4105.0829294 +3883.8323892 +4115.0850382 +4608.4365914 +2938.5115862 +2511.3518626 +3798.9579932 +3670.6903618 +2401.0749702 +2449.2959894 +3888.8362896 +1321.703002 +2470.2451556 +3821.8551126 +3668.0610552 +2868.5232134 +4301.25958 +2572.2024458 +1427.7408426 +3727.8885198 +1469.7918122 +2416.1288116 +2651.4057294 +2722.3887 +3881.9183164 +1547.8194828 +2553.3801848 +3927.0026506 +3874.0798934 +1430.7768916 +4639.2937168 +2519.2729478 +4085.252369 +3912.1709846 +3855.9861968 +2949.5751862 +2940.4724424 +4040.0240202 +2833.3980796 +1347.7510126 +2916.51734 +1229.6767886 +1451.7190626 +1280.5884324 +1336.6451558 +1258.678186 +4354.2066638 +1288.6087724 +2527.3209412 +4150.0381504 +3985.8838634 +3976.1144426 +4148.3142544 +3980.8333306 +3596.8581486 +3667.9774434 +3753.9183022 +1283.610564 +1447.751801 +3603.969742 +2694.3500092 +2538.2965194 +3749.923676 +4082.224364 +4246.2742432 +3874.1104034 +4604.4924818 +3753.8971738 +4127.127295 +3932.0503268 +1572.8371982 +4573.3842244 +3824.8829362 +3857.0025402 +3644.793063 +3931.8293512 +3653.0885636 +3947.9191666 +3673.8932106 +1285.714235 +3622.9809152 +4244.4166982 +4063.9932122 +3922.0376366 +3806.9605752 +3834.1440092 +2458.2491776 +1528.7673904 +1327.7499496 +3809.0411286 +3605.958208 +2872.5558494 +3962.2079436 +4567.460849 +3918.017101 +3786.034859 +3867.0682064 +3622.0351336 +1350.7506782 +3761.9369418 +1448.7623054 +4480.3667744 +4204.2368586 +2446.3100598 +3851.1826574 +3673.0143224 +4484.3960836 +3918.9514682 +3852.282349 +1444.7595278 +1302.7183168 +3673.911003 +3806.7921398 +3649.9659774 +3682.9277578 +1376.7550944 +3770.9266948 +3657.8605746 +1434.6626564 +4210.1598712 +4545.3299806 +4454.1963914 +3887.921018 +3866.9451388 +4500.4199896 +3926.0774928 +4018.1560306 +3835.9183782 +4214.3268078 +1307.6873528 +3659.983557 +3887.0805024 +3845.9885802 +2565.2287778 +3619.8243016 +4226.4460692 +3928.0304428 +4246.2319864 +3848.896202 +2530.1894952 +2684.4206672 +4136.1276294 +3827.7560908 +1476.736092 +3851.1301516 +3810.7913312 +3618.587164 +4220.1871648 +1436.7007716 +4244.2175026 +4104.3825878 +3857.9481748 +3814.995165 +4243.30375 +3736.8994356 +4005.1237026 +3903.953654 +3912.8627776 +3602.0042122 +4549.436035 +1386.7394452 +1361.7037904 +3614.7937318 +1278.656783 +4407.3155758 +3620.0640666 +4545.4310868 +3864.8667996 +4507.4107296 +3946.1613902 +3820.9953636 +3598.8321926 +1255.615649 +2518.2745438 +4071.2414278 +3845.098459 +4412.2428344 +2454.3369248 +4485.3654966 +3824.9111682 +2499.2950368 +3631.7582412 +4688.5191512 +3725.9966242 +3617.8623236 +4522.4917106 +4297.24941 +3606.0125652 +3849.9875172 +4524.5390352 +4420.405372 +2546.1704928 +3621.8460056 +3767.038427 +3779.1460582 +4694.6063228 +4766.496521 +4059.0338558 +4219.931795 +4428.210782 +4436.4331186 +2356.3365306 +2285.1942904 +1591.8034394 +2359.2279134 +1331.6390848 +1369.7452588 +1555.7881844 +1452.7109416 +1521.855472 +2180.1728276 +1522.7514666 +2154.1333656 +2152.1163788 +2144.1688056 +1194.6356546 +1453.7452588 +1324.6662842 +1305.7880648 +1498.799083 +2253.1217982 +2321.1480116 +1515.7146292 +1318.6265476 +1440.7646128 +1170.672038 +1403.8387598 +1415.6761542 +1518.8657018 +1439.8235048 +1402.7469308 +1196.6440928 +1037.4777652 +1324.6986456 +2133.1509706 +1391.7785636 +1066.5406964 +1371.7186512 +1535.7830994 +1047.6076496 +1467.8085244 +2184.2782304 +1296.6098354 +2384.2561758 +1058.6083782 +2256.241847 +1569.8150666 +2277.2368218 +1021.5232556 +1077.5818304 +1032.5102482 +972.5068778 +1193.6080438 +1813.9057282 +1915.9930812 +1179.617545 +2381.2518022 +2142.0487142 +1113.5818304 +1867.125426 +1535.7943324 +1205.684181 +1319.7349692 +1322.7193798 +2175.1873712 +1449.7364264 +1458.7731442 +1073.6080438 +1412.6935606 +2089.1054802 +1240.7026676 +2373.1674254 +1025.554554 +1285.5938518 +1998.9996832 +1189.5727234 +868.5130258 +2235.1323624 +2255.1844122 +1108.5301322 +1920.9767206 +872.5079408 +1411.6367774 +1504.7409024 +2166.1684114 +1132.5335026 +1014.5821648 +1300.723796 +2375.1280658 +2363.2882028 +1044.574971 +2213.2823122 +2270.07359 +919.5126914 +1796.9308188 +2375.3225534 +1351.6843938 +2121.937815 +1373.7700322 +2282.2243018 +2314.2102912 +1900.0529936 +1013.6120658 +2163.2084996 +1956.0612676 +2298.317134 +2189.162615 +2343.3412812 +1526.9619976 +832.3827472 +1579.763034 +2165.1017328 +2380.2307508 +959.5035844 +2201.16914 +2230.09393 +1723.9315474 +927.481393 +1085.5828934 +2118.1870368 +2364.2364874 +1968.9363152 +2125.2418044 +1425.7867272 +1948.074122 +2378.3296114 +1001.550532 +1952.093022 +1218.5702802 +2019.9618172 +2075.0574696 +2212.9883062 +1740.9746878 +1841.9747476 +2235.216578 +1964.0559526 +2329.2444888 +2076.0626144 +1612.7620308 +2024.073059 +2074.0476512 +2392.4165084 +1520.7795932 +2245.2833752 +2383.231754 +2250.2340016 +1293.7880648 +830.4034814 +2312.2965812 +2175.1516738 +2288.1470256 +2324.372537 +2118.1684114 +1533.7344372 +2184.1473002 +1369.7564918 +2087.0687026 +1830.0726648 +1544.7933292 +886.5487404 +836.450429 +997.5920004 +912.412331 +784.4806644 +715.4592016 +656.4220896 +748.3789066 +933.5283406 +680.3493228 +686.3275256 +865.4545108 +755.3925828 +673.3798926 +662.375142 +786.4599302 +691.3322934 +644.3857062 +898.4548452 +558.374079 +558.374079 +797.4323194 +668.4220896 +869.581042 +845.4606588 +773.4282974 +893.4858092 +677.411191 +689.4145614 +635.294847 +981.5065606 +800.439196 +777.402084 +874.4759736 +845.4242754 +558.3125452 +701.407169 +995.5228614 +560.3281944 +846.4922916 +2577.5409734 +2613.3365904 +2176.1448996 +3504.7400292 +3590.877227 +1999.9962702 +3763.0341304 +3993.0808034 +3724.8154358 +1590.7500266 +2557.3427384 +1463.7368206 +2778.5027538 +3636.778264 +2038.0451482 +3322.7706588 +863.4500946 +617.3384242 +900.445344 +653.422424 +679.3540734 +620.3645778 +618.2496738 +677.3748076 +685.4486374 +684.4282376 +715.3864348 +941.554554 +661.3581126 +958.5269604 +772.444281 +841.5272776 +787.4439466 +778.4588672 +672.4170046 +899.5439898 +3457.8065264 +3426.8397806 +4037.1290126 +3355.854307 +4365.4939238 +3579.0088432 +2610.4388984 +3409.7993154 +2531.2350454 +3341.7757864 +2949.5500358 +1253.680159 +3616.9483896 +4944.374406 +2909.7289938 +1115.6087126 +1978.117229 +3009.613421 +3015.4912036 +3145.6303318 +3703.0044442 +3601.937491 +1301.6186252 +1827.9465278 +3113.611981 +2950.576995 +2972.640819 +2958.6912302 +2083.9003858 +2366.1649822 +2909.4857244 +3667.054745 +2844.488349 +2298.116773 +2332.4245524 +3549.9881688 +3354.7869768 +4969.5105154 +3082.521516 +3631.8676072 +3986.1794228 +3576.955473 +4104.1346448 +4020.1042726 +3750.8153598 +3919.2621448 +2324.3514086 +3286.8149048 +3351.797388 +3341.784335 +3903.9320554 +862.4759736 +3616.728933 +4990.856563 +3575.9285482 +3953.0652646 +4480.4092126 +4174.0877904 +2445.293682 +2791.4966656 +3616.6610556 +3255.666242 +3370.730905 +3276.6773392 +3921.9714292 +2898.7031148 +3686.758911 +3740.020136 +2969.4374564 +2774.590501 +3683.950842 +3013.7988016 +4203.3054646 +3320.828428 +3499.8925418 +2737.4948314 +2822.5177342 +3298.5893934 +3565.8424396 +4061.1804696 +3319.8350208 +3231.5570918 +3660.8721592 +3460.807025 +3440.786685 +3806.8164228 +3477.8913004 +2812.528196 +3643.8866684 +2314.2055832 +3521.8378248 +1386.7102728 +2466.252925 +3165.6603858 +3488.725367 +4482.2746202 +4696.4580288 +2177.1190206 +3766.8570238 +3682.9490676 +4984.7718944 +3242.6644676 +3622.9544272 +2793.4143976 +2433.171266 +3652.0220664 +3345.763995 +3651.8895828 +3217.8298254 +4086.1386496 +2766.6707534 +3416.7550096 +3788.0228548 +1267.7499496 +2767.3380476 +1316.6836652 +4483.406889 +3407.9040494 +3568.761946 +2742.3500092 +3777.0569906 +4719.2861876 +3788.9558844 +2955.5439982 +3637.89104 +3052.655618 +3567.9764392 +2986.370109 +3244.6589884 +2032.1356558 +3755.9451844 +4353.3894816 +4272.3078318 +3618.9256318 +3134.5130606 +1669.9038768 +3619.7836074 +1929.1298422 +3373.6175798 +3220.8645368 +3454.7309394 +3812.0069138 +3391.65061 +2492.1508662 +1481.8816854 +2068.1720392 +3959.9751594 +3822.8750422 +3137.5749116 +2959.6065018 +3412.6172454 +2615.4798338 +993.5130856 +3338.8197152 +3293.803612 +1720.0471202 +3405.6557122 +3049.597103 +3029.603251 +2858.5289672 +2670.3513468 +1782.0587474 +2513.2186078 +3361.9490524 +3404.472418 +3179.6721944 +2036.998226 +3403.8105656 +2358.2212496 +3260.7040228 +1095.628778 +831.452402 +3143.7011854 +2995.6462556 +2072.2217816 +1834.8413398 +2606.3314628 +1128.6502408 +3219.657214 +3582.8074536 +2804.6203422 +3560.731892 +3308.7880226 +2971.5211644 +950.5436554 +2788.4282552 +3490.8764386 +3368.6788724 +3209.6688412 +2642.3485692 +1800.1600178 +3408.6280224 +810.3983964 +852.5068778 +906.4810586 +903.4409876 +907.5126914 +967.5814362 +911.482456 +982.52359 +926.53376 +976.4613874 +907.476308 +842.522527 +968.4967078 +842.4133768 +867.5177764 +890.4286318 +2210.0854746 +1911.0676396 +1630.7984314 +2971.6130268 +2005.9989718 +2306.1404834 +1647.919526 +3245.765891 +1791.1233 +1864.9318818 +2141.173162 +1765.8747044 +1676.8369236 +2181.2520768 +3161.7447626 +1950.9396684 +1991.0284786 +1611.752864 +1868.0519306 +1914.0825602 +1944.0025996 +1663.707555 +1834.953679 +1863.880972 +2244.1273372 +3382.689162 +1612.878392 +1834.968934 +2275.102127 +2174.1768668 +1658.812442 +3373.8608492 +3370.7212254 +2789.4567334 +1972.029876 +3344.7476172 +2778.4802878 +2686.5057128 +2531.2866838 +2797.5085674 +3576.8824518 +3257.8281108 +1851.0577442 +3412.6785978 +2238.3085854 +1121.550532 +2180.1404662 +3193.7149832 +3509.742592 +2529.31144 +2780.4793352 +3258.6937332 +3575.8881428 +2640.5002336 +3411.8189866 +1618.8096644 +2610.460497 +2706.3751596 +3445.8464616 +2530.3650686 +1781.9271312 +1674.9126666 +3593.761869 +3359.693793 +2767.5053956 +2116.1448996 +2997.4945912 +2072.0021436 +3240.7373448 +2741.5849792 +2780.4595536 +2196.1062088 +1953.0458424 +2802.4128806 +3358.8144346 +2158.2513482 +2899.560223 +3366.8314042 +2897.7000028 +1856.0519306 +3052.6127096 +3429.8290806 +2071.1598202 +1529.84128 +1479.756886 +1378.7244648 +1261.7506184 +1472.699434 +1240.5584716 +1456.7885188 +1483.7095442 +1431.8336748 +1183.623693 +1403.7693634 +1107.5672442 +1512.8187542 +1307.6543398 +1483.7095442 +2360.135141 +1493.8929184 +1165.6355948 +1513.83984 +1837.0169446 +1365.7325858 +1349.6211282 +1547.8248424 +1027.5774142 +1538.7728696 +1030.5447184 +1553.7936636 +1022.518505 +1156.6637812 +1528.7343774 +1528.8460306 +1984.1468888 +1280.7088156 +1312.750284 +2366.1800558 +1187.6484664 +1426.7060552 +1465.7816422 +1525.857598 +2028.030939 +2114.0054968 +2013.9411854 +2305.2238742 +2090.2211128 +2045.1169878 +1717.9110878 +1537.7735982 +2393.3641414 +2299.2867628 +1435.7922064 +1403.7448646 +2185.0360838 +1315.7346946 +1481.8969404 +1761.8566718 +2351.1532162 +1008.4512174 +1510.8619544 +1513.7697576 +2385.2990416 +2260.3670406 +1129.6396168 +1250.6254846 +2224.1521106 +1447.7890518 +2145.1211466 +2240.1112938 +2249.2855012 +544.3332794 +544.3332794 +544.2717456 +544.3445124 +638.3499916 +983.5287348 +544.3332794 +1533.7674502 +1961.0873108 +1435.7419056 +1318.689419 +2031.0676396 +2366.2341972 +1549.857598 +1306.6478574 +2193.1653926 +1724.862074 +1504.7707608 +1031.4995624 +1410.7718066 +1009.5080006 +1885.030862 +1299.6670128 +1447.8034394 +1893.1311798 +2052.0010806 +1611.7317356 +1974.0904572 +2201.1116282 +2383.2899174 +1617.8977288 +2308.0860846 +1745.822003 +1256.6149204 +1769.0046486 +1747.9117566 +771.4490316 +926.6025048 +958.519568 +787.48033 +677.378178 +702.4136514 +677.378178 +702.4024184 +716.4180676 +684.4170046 +678.358824 +759.4014152 +986.5548884 +668.3857062 +696.453388 +945.5065606 +984.6219014 +689.3132738 +415.2543048 +415.2543048 +1637.7936636 +1764.8572048 +1660.878392 +1742.8515098 +1920.0428236 +1982.1775184 +4805.5152822 +4947.3673652 +4889.5748268 +1829.9410486 +1717.8919922 +1674.9191916 +1837.9308786 +1783.921652 +1736.8701524 +1938.011131 +4960.4722786 +1940.08027 +2357.2001638 +3506.7047352 +1717.802119 +3157.7619136 +3142.587542 +1899.9537388 +2322.2582846 +2880.5160024 +2164.0972832 +2191.0838988 +1964.9043308 +3145.5508242 +641.3318992 +2404.3405526 +4955.5464702 +1621.853576 +4320.3255898 +2497.2852266 +4482.3998928 +4572.4671358 +2345.3569304 +1246.6921034 +2193.1867024 +1270.6842408 +3662.8440326 +4077.9669026 +2686.3311882 +4483.2712072 +1283.6761198 +2433.2162072 +4525.2930044 +2532.2131884 +1530.8517844 +3658.867057 +1119.6903118 +4011.0434532 +2616.3547 +2100.1003354 +3190.8157722 +3764.9579172 +2841.4296526 +1960.992764 +1040.6229644 +2913.4840098 +814.4952506 +983.471223 +916.4613874 +797.5122972 +653.411191 +3352.8613822 +3251.902884 +3796.2606278 +3397.7815574 +3663.7594856 +4479.0858266 +3445.7609428 +3933.1443264 +2431.253534 +2879.4915806 +3578.9796708 +3338.8356562 +2779.2581042 +3053.640972 +4893.3960846 +1638.8212744 +2506.2976614 +3681.08366 +2372.2335284 +3203.5640282 +2583.443725 +2848.5432788 +3166.6630276 +1674.982063 +3144.6811798 +3341.6569566 +2361.2691832 +2660.4285298 +2504.2104108 +2983.4351318 +3018.548381 +2500.391358 +2883.6016914 +2951.488426 +3332.7251512 +4246.1520086 +3225.5108302 +3366.7744062 +2159.9970586 +2361.4147168 +3043.5510228 +4885.4327082 +2669.3871212 +2926.5334006 +3232.6239426 +3264.7088332 +1497.8150666 +2741.5075044 +3050.5837946 +2484.1055572 +3305.755344 +4266.1220478 +3052.615394 +3268.612058 +2705.4724586 +2605.4564152 +2014.0920786 +4260.4694878 +3285.731815 +2531.17119 +901.4981052 +907.476308 +873.4919572 +906.517442 +677.411191 +944.4814528 +3701.0263438 +4724.3752876 +2574.3064148 +2507.2907058 +2843.5180686 +1518.771155 +2737.3082064 +3794.1239438 +3762.997747 +3941.990613 +3726.9072222 +3711.955173 +1325.697917 +3647.0422676 +3947.9701534 +3795.8210538 +3773.9335714 +3762.0157542 +3822.056639 +2470.3066894 +3856.09785 +4185.1089614 +4037.115384 +4067.0528582 +3705.8008922 +3612.9263006 +3856.2624792 +3937.9382206 +3997.1783436 +4013.0790006 +3996.177691 +3756.818415 +3692.0713042 +3934.911381 +3935.2161406 +1292.7088156 +3714.1044276 +3638.9361108 +3892.729917 +1216.5757594 +3794.9485092 +3887.0153094 +4197.2782986 +3752.9406294 +3675.737054 +4259.2597786 +4152.239087 +4391.2284012 +4027.1312146 +3735.9735826 +3756.9000284 +3818.9188322 +3790.0966674 +2502.3416328 +4041.8571008 +4466.3062276 +2447.3212158 +3974.2791914 +3699.9672734 +4258.202814 +4147.2403648 +3766.8935794 +3421.740466 +2944.5908952 +3261.8045818 +3296.7992556 +3236.7516392 +2518.2352602 +2092.058867 +3354.847173 +2390.2368816 +3170.6109778 +2356.3100426 +3306.6818486 +2329.148423 +3065.6622818 +1843.9250224 +3526.7255454 +2227.1636608 +2798.3519396 +2919.5857504 +2081.0428834 +1843.9679308 +3000.5304244 +3330.6843516 +2885.3370018 +1968.0203576 +3346.697206 +2525.4104202 +2946.6177774 +2111.9734272 +1836.071996 +3041.545269 +2408.390295 +1781.977432 +1860.0144842 +1662.8940412 +1768.8851328 +3016.4314442 +1740.8980804 +1716.9886052 +1988.9802866 +1881.9220462 +1770.8610282 +2279.0957044 +2799.329729 +3191.5886648 +2674.281539 +2010.0170044 +1873.9281942 +2013.0703412 +2096.0975578 +2110.1826034 +1875.922715 +1894.0563468 +2574.2998898 +2246.2343786 +1767.8579922 +3474.7921642 +1799.912545 +1718.8667648 +2806.3887 +1650.7637626 +1767.0042544 +1723.903208 +3388.651596 +3256.609853 +1883.0668512 +2626.3754342 +3340.5320802 +1609.8562604 +1914.9720298 +3064.6039796 +1651.8239162 +2258.133091 +1931.9489284 +1886.956638 +1668.8107102 +2625.4278012 +2084.0676994 +1830.947531 +2309.155404 +2528.2984326 +3367.7597602 +1610.8991262 +3369.6801766 +2609.3111654 +2181.0604458 +1917.01667 +3330.7769092 +884.5555572 +843.5065434 +882.517442 +845.4494258 +983.5552228 +801.4530708 +883.4333996 +914.6025048 +907.4623906 +834.4599302 +844.5381762 +912.5617052 +913.4756392 +929.5406366 +859.4551796 +906.4368126 +912.5756226 +830.4861436 +949.4729548 +844.5494092 +908.5371132 +928.5566202 +917.4646808 +914.5661214 +823.4439466 +978.4440236 +889.4578812 +949.5093382 +825.4959792 +844.5381762 +952.6684548 +926.518505 +971.5076064 +990.5749538 +982.5269604 +853.4657438 +825.568746 +823.4439466 +955.6065866 +972.5491346 +950.4821216 +955.5702032 +857.4970422 +921.4668068 +987.5752882 +968.5225442 +3147.7919848 +2637.303396 +3310.7812058 +2192.2853482 +1974.0758538 +2702.769229 +1787.0668512 +2959.6202378 +2843.4235218 +2221.1054802 +3080.6300906 +3065.4649284 +3192.590655 +1884.09044 +2030.174834 +2111.079284 +3389.6818912 +3268.6695354 +2375.244427 +3361.9924654 +3012.4351916 +3015.5969834 +2484.3547 +2748.5941288 +2678.5059874 +843.3948902 +2141.1188392 +2849.5339924 +3362.6861006 +3308.7952336 +1980.9172196 +1090.6022302 +2655.339978 +2575.1745746 +2863.6257788 +2864.4178106 +972.4552394 +3137.596726 +2979.47613 +2608.6069832 +2488.1368556 +2716.3563558 +2512.3284866 +3398.8421812 +2967.4097068 +3542.9645972 +2648.499959 +2865.4045022 +3229.7896014 +2843.5028136 +2751.4554718 +1704.8538344 +3229.6328348 +3004.4301066 +2534.1560708 +1743.0545552 +3055.4683606 +2907.301424 +3477.7091676 +2810.3986886 +3013.5243362 +2963.4360924 +1780.9682652 +2082.1301766 +2426.2288376 +3267.7338214 +2475.221584 +2230.1601718 +2907.6432622 +1984.1244228 +2905.3616962 +2981.5028308 +2548.2968112 +2212.0867362 +3161.6607628 +1879.9890592 +3122.75633 +3226.8337116 +3277.4740698 +2704.360848 +2730.3223558 +3273.8600608 +2584.4158568 +3146.8542472 +2647.3870016 +2683.396897 +3199.8266536 +3242.4480186 +3539.052163 +3436.7374472 +3414.6519902 +3216.646134 +3121.8524728 +3289.6901652 +3121.5903966 +3035.6627692 +2442.2059946 +953.6749372 +3143.87571 +1654.992233 +2899.373598 +3042.8280338 +3381.6525232 +2422.2101098 +3409.668748 +3265.7193376 +2910.4722438 +3287.7838476 +3290.8659848 +3586.632164 +3587.8728878 +3543.834276 +2819.4340688 +2900.6017512 +3160.567126 +3430.4893056 +1973.0832888 +2789.3089948 +1835.9264624 +3358.0379558 +3059.4433126 +3006.6000194 +3176.6579254 +3336.8956396 +2612.4649132 +2504.189101 +2109.2044604 +3392.816362 +3286.738949 +3336.7353212 +3431.9518472 +2906.4912462 +2756.3043404 +3124.3912202 +3531.9564762 +2708.2075542 +2594.3339658 +3143.6457064 +2942.5065012 +3124.6021282 +3403.7379802 +3050.5818054 +2818.4837514 +2906.5211046 +2597.2934074 +3474.7953532 +2475.432492 +2800.3377304 +3245.5761114 +3058.4995202 +2522.3089968 +3205.4814278 +2723.5123766 +2675.3710808 +3411.8726486 +3225.7190538 +3244.5682822 +2707.4503868 +953.6637042 +2458.2309494 +2282.2633696 +2520.2509094 +2756.495937 +3139.6593056 +3156.7408622 +3138.4529668 +953.6273208 +2854.57312 +3183.3569466 +3507.8942908 +3545.6091588 +3163.5642886 +2905.5746278 +1621.9337352 +3227.6933228 +3124.5689338 +3402.6333992 +3236.7347486 +2759.4355878 +1918.0563468 +2442.3005414 +2523.40669 +3167.6282372 +1943.0210862 +2875.488803 +1794.8482762 +2234.9459532 +828.4778868 +2183.256493 +2878.5524962 +3222.8352448 +3161.6508674 +2904.5694922 +2830.2555648 +3575.6891194 +3555.80308 +3057.8236774 +3053.7270046 +2471.3032764 +3526.7852622 +2507.0984232 +2462.3494022 +3331.7445052 +3226.5655806 +3012.6243196 +3441.7026426 +2518.2783844 +3453.7635248 +3204.642945 +3167.7223138 +2795.7125562 +3570.802094 +3217.7246972 +2519.4474724 +2489.1493928 +2534.2957654 +2477.2761196 +3102.6258558 +3005.4327484 +2902.4559258 +2413.3514684 +2881.6712074 +1725.847428 +2813.5737462 +3108.7069818 +2322.123984 +3554.8078306 +981.560702 +3363.7713702 +3158.8324672 +2899.2994936 +939.5429268 +2028.268335 +1979.9006604 +3473.8492392 +3238.8092128 +3100.6412304 +3228.7631468 +3058.6457398 +2674.2678374 +2902.329885 +2964.6508076 +2881.2559164 +3470.7174872 +3029.4890948 +2691.4675722 +3524.8660112 +2852.5911698 +2959.500036 +2688.5069744 +3222.8015458 +939.5429268 +2854.5605402 +2336.4379114 +1796.8364534 +3482.9545204 +2602.3576762 +2730.4915208 +1961.1423196 +2613.4542892 +2656.509752 +3138.6169444 +2764.5380914 +1602.8940412 +3462.7306304 +2656.2728262 +2241.2229044 +2124.1214638 +2237.1439896 +1275.6566472 +1557.9017508 +2383.1993926 +1573.7947266 +1469.834069 +1366.7568262 +1443.6928492 +1422.823445 +1480.7772858 +2029.1458856 +1579.7841624 +1550.8416144 +1098.664827 +1533.7786832 +1556.7656758 +1452.7936038 +1238.6254846 +2356.2208554 +2344.2161474 +1177.6342572 +1502.8707868 +1827.0465112 +1501.7962456 +1432.74224 +2250.0850976 +2311.268789 +2299.2761814 +2250.099015 +2297.2414366 +1324.746262 +1428.7936038 +1065.6222358 +2310.256947 +2040.1254858 +1142.6910404 +1435.8285898 +1836.9693282 +2243.3768762 +2282.0854746 +1173.6406798 +1095.6036276 +1568.7616538 +1473.7575548 +1263.7186512 +2371.3442746 +1258.682208 +2102.2363678 +1591.929696 +1185.6353202 +2275.0394714 +1547.7215656 +2307.3134464 +2370.1742848 +2296.0827142 +1050.5895572 +2290.1844548 +2325.2224342 +1447.767056 +2008.0260354 +2367.3169982 +2279.1215408 +1305.6676816 +1463.8347378 +1334.6829964 +2360.2521538 +2096.990182 +1784.9137124 +1009.5920004 +2330.2563744 +1185.6353202 +2281.0280398 +1207.619671 +2102.0490912 +2346.1684458 +1288.7251336 +1149.530192 +1389.7503438 +2148.0922914 +1502.7616366 +2272.224696 +2339.2008326 +2102.1894374 +2104.096588 +2374.285561 +1044.6113544 +1438.814338 +2374.3041864 +2108.1993156 +1608.8107102 +2395.3409042 +1927.0308792 +1486.7739326 +2199.1171074 +1964.1669542 +1150.4374196 +1528.7885188 +1989.0530534 +2281.15897 +2014.0555138 +2036.987679 +1978.1138586 +2344.169217 +1910.1424726 +2108.1952936 +1909.1584562 +2297.2378848 +1719.900249 +1960.1105054 +1497.7496922 +2067.2415126 +2370.3317374 +867.5330314 +2297.2266518 +843.47016 +2019.9829456 +2258.2170908 +1929.0716788 +1367.8136094 +2273.0995622 +2052.0891024 +1462.6840594 +1043.637885 +2164.210274 +1608.9562438 +1498.7303382 +1546.8024534 +2266.1480714 +1359.7332546 +1043.5498632 +1176.6138574 +1124.582559 +1134.6396766 +1982.9367094 +2151.095979 +1886.9849774 +2230.313568 +2336.1258972 +2265.0405172 +1474.799083 +2177.2392224 +957.5130856 +1074.6073152 +2228.027294 +2371.202763 +1857.9359636 +1750.9325506 +2133.1429266 +1988.066534 +2327.4348926 +1428.8187542 +1910.0836232 +1150.4998208 +1457.7725352 +1149.541425 +866.522527 +1345.710213 +2163.0663364 +1451.7255876 +1725.8460904 +2282.2608666 +1150.5982082 +1547.7500864 +2296.1995456 +1302.7295498 +2292.0408344 +2389.2681202 +944.5766856 +843.47016 +1287.6418624 +2021.9648958 +2372.1735136 +2168.0743966 +2283.273874 +2165.233349 +2232.1908946 +1439.7230846 +1929.0027526 +2304.2576158 +2306.3296114 +1910.9737444 +2383.3957316 +2227.1630092 +2214.2847726 +956.5290692 +2216.8949836 +1313.7302784 +1555.707555 +2369.369501 +1974.9203914 +2164.0377386 +1528.7779718 +1404.6633252 +930.51342 +1373.667407 +2320.3477636 +1571.8266938 +2307.243364 +1328.6724322 +1933.0566984 +2284.174758 +2117.9289826 +2274.1643894 +2164.255206 +863.4361772 +2244.208148 +1021.4603842 +2255.3212158 +1297.696477 +1376.5877808 +1193.6655556 +1612.8572636 +1460.7834338 +2223.2011072 +2254.0436292 +2294.1476944 +2160.1062088 +871.476308 +2211.10319 +1992.848945 +773.4646808 +1383.7186512 +957.6698522 +2040.1513222 +2228.172176 +872.5079408 +1439.6561912 +2273.0559678 +2354.2341972 +2347.1385448 +2149.9936122 +2148.948062 +2160.1499846 +1314.6779114 +1344.8056698 +2347.3184382 +1411.8259054 +1866.1090482 +2018.9809554 +1459.7778188 +1455.8846616 +870.5650584 +2017.1281276 +1541.7936636 +2138.116166 +2355.3717912 +2260.1388448 +1491.7979774 +1173.5050416 +1868.0011596 +1812.9807426 +2095.1023084 +1802.979104 +2344.2610794 +1296.6210684 +1540.893647 +1333.7353634 +1114.6022302 +2104.1462372 +1801.9290272 +1640.9507818 +2272.2282478 +2002.150242 +1530.8670394 +1725.9525562 +1097.5101266 +1869.014167 +1014.5682474 +1482.7506782 +2353.2600762 +2324.0502738 +2126.2071954 +1562.8416144 +2103.2567676 +1315.804777 +1425.8164042 +1890.0713272 +1896.0580786 +2154.0956446 +1687.743757 +2301.1137542 +2361.1416234 +1546.6971438 +1039.4934144 +2294.122544 +1638.8100414 +1893.9220462 +1724.8039106 +2102.9544674 +2140.1163788 +1003.4934144 +1577.9214392 +2353.2787016 +2007.0424892 +1172.6526414 +1642.8242334 +2341.2012268 +1111.6600764 +1656.8371982 +2384.0960388 +2083.277519 +1515.9024196 +2156.9722426 +1516.8797296 +1413.8078556 +2352.2987072 +1701.9671596 +2067.1298594 +1953.8803032 +1431.7860584 +1429.7201084 +1436.8139438 +1894.9790108 +2046.0969822 +1417.7564918 +1685.7831166 +1431.6993742 +982.508335 +1370.8033796 +2208.1571956 +2063.9925228 +1003.457031 +2285.2023688 +1488.736092 +1371.783374 +1210.5941862 +1688.9058498 +1829.984643 +1560.8147322 +1787.9167484 +1518.7677846 +1023.5824992 +1581.9314278 +2108.8994758 +815.475245 +1028.6705808 +2343.1705972 +1333.7717468 +1962.2353048 +2195.1594432 +1296.6574518 +1173.537403 +1955.8934494 +2165.9534814 +1692.9859208 +2195.097042 +1243.5985426 +1633.9667482 +1876.0199806 +757.4333824 +716.4908344 +888.5068778 +716.4180676 +942.4658036 +942.5498034 +943.465075 +889.563661 +762.4639522 +726.5003356 +714.5003356 +714.5003356 +914.5258974 +758.4173988 +758.3810154 +757.5061492 +757.4697658 +941.5909374 +902.4457382 +805.5061492 +757.4697658 +751.3864348 +828.5432612 +828.5068778 +757.5061492 +987.5600332 +660.3806212 +952.595688 +660.3918542 +771.485415 +889.4908942 +901.5021272 +661.3646376 +841.5021272 +855.5177764 +783.5217984 +772.4806644 +806.4650152 +587.3642434 +988.5188992 +726.3846604 +693.4537224 +812.5344288 +650.363909 +857.4858092 +972.5028558 +790.4337168 +771.5217984 +857.573831 +602.3023752 +828.4817274 +806.4537822 +661.3646376 +789.4344454 +706.353739 +661.3217292 +696.442155 +696.442155 +641.3860406 +4068.2595202 +3658.9133358 +4196.3544784 +3674.8143556 +2146.0945816 +2694.422776 +3787.008294 +2648.3128546 +4539.4661154 +1544.7794118 +1863.1165936 +3123.6464512 +1707.0154874 +3416.6887678 +4574.2280668 +2840.4707866 +1594.9042112 +2128.1197492 +3182.6361282 +4417.3466756 +1280.6288378 +3185.4226716 +1751.7790774 +3478.7637802 +3990.0593578 +3490.864554 +665.3748076 +900.5181108 +987.5236498 +825.5435956 +744.4129826 +744.4129826 +575.2849516 +888.4552394 +958.4719516 +914.53376 +989.4665322 +739.3752018 +714.4388018 +883.6218416 +991.5603078 +886.4759736 +757.4697658 +758.4650152 +814.516379 +994.4607186 +671.4217552 +958.4719516 +757.4697658 +757.4697658 +803.486478 +821.4646808 +914.5436554 +715.4228182 +715.4592016 +715.4228182 +889.4551968 +856.5857926 +977.554554 +889.4439638 +842.4133768 +844.444281 +856.5017928 +857.5221926 +918.528675 +762.3581724 +985.544384 +3227.5642004 +3641.998657 +2085.942523 +3216.7148788 +4033.124491 +2276.957855 +3701.8703676 +2511.3267122 +2425.4467012 +828.5544942 +1611.946014 +2465.281009 +924.600773 +1656.879455 +2115.9854486 +2808.4558062 +1755.9590984 +827.486478 +2587.4042894 +3212.5745772 +987.5600332 +2048.057804 +3817.7708726 +4176.284852 +1014.6436986 +2342.306964 +4372.3339084 +4149.245614 +1014.5749538 +1814.0236084 +2568.5657894 +3868.9628208 +2316.2564504 +2316.2299624 +3168.7406808 +2159.070554 +1749.9413232 +2223.1258374 +2008.9588836 +2012.9802866 +1557.6443826 +1410.80819 +2179.1847892 +1920.0688414 +3304.8083626 +2228.038527 +3179.7092294 +3487.801331 +986.5800388 +1208.5924544 +4040.1316514 +828.3977276 +1756.8487494 +3657.7491372 +2056.0774924 +4111.2653338 +2348.2144328 +3817.435198 +828.4704944 +2327.3324488 +3121.4978482 +2083.110171 +4358.3286592 +2368.0739842 +1882.1178806 +4401.0606934 +3619.0513746 +2149.4513748 +2105.0541164 +3099.5480294 +1293.6676816 +2280.1836836 +1928.967418 +2951.5843104 +1753.072605 +1373.7150234 +2019.0748506 +2149.0585498 +4495.2878434 +4561.5854528 +3970.0436914 +1531.6500432 +4130.2859322 +3817.0487166 +4007.1420362 +3489.6025548 +2367.4603176 +3169.6739262 +3240.7981926 +2209.2106084 +2362.238812 +884.4854748 +4564.270204 +2362.283058 +2461.2448212 +2559.1741834 +3561.912899 +3606.03167 +2782.4864358 +3241.6553008 +2909.5479442 +3080.606287 +3605.8484062 +2565.511801 +2058.0203748 +1642.8763764 +3801.8480384 +2626.3794562 +2837.2043712 +2059.0784956 +4133.9000882 +3492.8503448 +884.435174 +3005.771432 +871.5490748 +2371.251031 +1724.7965182 +4095.362644 +2625.2822676 +1608.7527282 +2657.3812478 +1208.6513038 +3657.7047098 +3816.911227 +2948.6958278 +3053.625717 +3618.042903 +2058.9381494 +3652.881859 +3739.7398316 +3929.1475944 +2260.0905768 +4781.494849 +2228.1146642 +3603.9558246 +3437.8128558 +4242.162967 +1976.069037 +2606.42065 +2560.3019986 +3806.9087554 +3386.6524016 +2837.4996418 +3712.8729476 +2460.1628876 +2055.082243 +2364.1120822 +3268.7481664 +871.5854582 +3244.6781184 +2415.3637472 +3518.7052054 +3774.075083 +2899.5954502 +3659.9547474 +3106.4842652 +3295.6479256 +2186.2521366 +3638.8871224 +2313.1653926 +2989.7215082 +2066.148346 +3205.6553008 +2969.4882274 +4211.2393018 +3464.594221 +1442.7477192 +3809.8998724 +3120.630879 +3911.0894138 +3263.6097932 +3168.7909816 +3955.0398224 +3228.5394868 +3862.9358362 +3507.088821 +3681.9140644 +1442.8456364 +3260.6002322 +3400.6781276 +3337.5409724 +2179.0895564 +3315.7713702 +3679.896814 +2193.1501376 +3120.650156 +3886.089275 +3145.5084296 +3681.896958 +2969.455866 +2943.483341 +3643.8476442 +2527.2966582 +3858.207062 +3066.6918818 +3883.194086 +3920.0893854 +4284.223832 +3680.8395232 +2662.4475494 +4148.2149996 +3819.8718592 +3618.9125818 +1974.0138498 +3017.7462816 +3935.9223556 +2220.2854414 +3443.663283 +2532.3117916 +3505.8245002 +2557.3579934 +4451.256922 +3382.8407412 +3443.6902848 +2917.5660792 +3688.9723838 +3506.741075 +3318.8054208 +2957.607273 +2363.2055406 +3237.6121178 +4453.4274864 +4413.4521808 +2885.3422236 +3000.5436902 +3074.5858274 +3742.9698636 +4409.2728458 +3935.8531406 +3816.731813 +958.5811018 +3956.0067324 +3573.8718076 +3660.740543 +3021.5157196 +2841.4063536 +2470.3470948 +3880.9416924 +2907.546864 +1973.0316504 +2697.441067 +1860.0066216 +4855.5468816 +1832.9056684 +1886.0512618 +3215.5734098 +1947.0200232 +1775.8439816 +1753.9209832 +1982.0472398 +1955.093853 +1777.8747044 +1760.9712242 +3406.7554038 +1731.9116634 +4992.3827824 +4889.466544 +4929.6787106 +4966.6654114 +4830.3868216 +4966.4639194 +1734.8576578 +4887.4500274 +3256.7854264 +1765.982517 +4886.6115446 +4836.4586216 +1937.0403804 +1848.1171094 +3580.7911528 +4833.525966 +3686.9662672 +3582.706166 +1974.9785548 +4813.4647068 +4829.1837366 +1907.9713944 +4865.6554562 +4803.5658748 +4867.4846618 +4828.5589536 +4897.5846198 +4884.8029628 +3424.8872186 +1906.9595524 +4806.5860172 +4814.3788222 +1974.0268998 +4810.4270222 +3340.589592 +4894.494395 +1866.0838978 +4800.4036128 +4885.705836 +4810.442105 +4873.139289 +1647.8831426 +3393.6411088 +4857.4518616 +4839.5393868 +1953.0332626 +4898.6492656 +1611.7813848 +1720.9147754 +1789.9131206 +3704.6528982 +1830.8648688 +4872.6140506 +4943.5303822 +4406.1579844 +4289.0884258 +4702.323025 +4049.0017072 +2429.3239174 +4524.2297054 +3859.9842664 +4445.0824146 +3870.9308536 +2530.277517 +3715.96716 +2589.3689518 +2547.2856208 +3681.756784 +4042.9177246 +2846.412606 +3693.0187558 +3648.8689702 +3644.9030806 +4100.2243812 +4210.0763852 +2757.2420436 +4519.428669 +3811.0997206 +3927.9675714 +2742.4625298 +4747.5381516 +3678.9006972 +4435.4001482 +4166.9760248 +3826.1831702 +4516.2502754 +4169.063927 +3861.1210274 +3756.710033 +3936.0088584 +3602.847403 +3678.8171676 +1499.8194828 +2860.4606166 +4168.3768512 +3636.0761146 +4556.6366686 +3756.732499 +3765.0279996 +4020.0083882 +2913.4503108 +1343.7118516 +3679.8310424 +3806.0774836 +4302.1399872 +4002.2419608 +3780.1056102 +3599.7169886 +2653.4876204 +3822.9508166 +4136.0052478 +4071.0233088 +3807.9426024 +3971.9666016 +3882.5655006 +4251.1872864 +3882.8481914 +3941.0652646 +3854.0325516 +3760.7855774 +3615.8904502 +3678.7314978 +3881.9813692 +3760.7703224 +3967.1134566 +3929.0546832 +3760.0257348 +4487.3722992 +4317.0647154 +3935.1604802 +1344.6561142 +3718.1508088 +3736.7519128 +4256.006776 +4217.1658662 +3824.0042294 +2636.3544254 +3967.166912 +3980.9577358 +4561.1857056 +4468.2391802 +3935.9912818 +3794.5157582 +3903.9740964 +3951.121226 +4030.0680088 +3932.2282218 +3860.9907488 +4048.1037234 +4103.0679318 +3701.0272112 +4697.584027 +4150.884893 +4250.1547862 +4564.1009012 +4462.1129844 +4531.5840888 +4380.457892 +3912.2273402 +3722.9287276 +3647.8967006 +3726.84634 +4041.9893686 +4377.0390948 +2999.5028136 +4098.0789672 +3867.9462616 +3792.0925258 +4457.2820552 +4255.3235316 +3822.960026 +4222.0400018 +3750.991222 +3868.7455692 +3700.9939824 +2722.2708198 +1527.8620142 +3682.867743 +4487.3515032 +3803.8519752 +3630.8034316 +1377.7543658 +3902.1868152 +3903.209718 +3746.6901662 +3960.9766358 +1526.8377738 +2454.3414514 +3880.4044992 +3626.7099134 +3848.1623336 +3679.028257 +3837.0648532 +3623.8180604 +3740.0479708 +3675.8630948 +1333.7465964 +4739.4504044 +3625.9765588 +3838.986137 +4009.8746632 +4126.9469314 +3852.0380308 +3903.0474752 +3759.9670576 +1586.7398566 +1502.765007 +2580.2284434 +2457.308937 +3753.0133962 +3802.8711134 +4473.2292068 +4595.2436906 +3783.7809464 +4148.9760076 +3948.2166118 +4074.2410934 +3609.7936812 +3902.035922 +3852.9685574 +3637.8583462 +2459.17992 +4227.1388026 +3827.8246198 +4161.1626326 +4560.4372774 +1298.63538 +4601.6199058 +3836.0431158 +4414.2490928 +4092.9895388 +4166.2599144 +3843.187252 +3682.9952298 +2912.4748086 +4483.1109972 +4358.344428 +4005.0107118 +3681.0199212 +4749.4143128 +4372.1527118 +3689.170712 +4590.3234364 +2504.3274236 +3902.963294 +4350.1032846 +3875.0878948 +1529.8048966 +4191.3459044 +3858.0962114 +3664.946366 +4383.2174428 +1202.6295066 +3794.8846194 +3859.9350144 +4218.0829892 +4023.7263348 +2491.2641154 +3832.9517256 +4205.0677676 +2485.2634466 +4490.4146918 +3798.9067084 +1548.8470936 +4414.1855354 +4104.1074616 +4320.2389056 +3794.1207548 +2465.2662242 +4248.036076 +3601.9177094 +4475.2542376 +3781.9282564 +3601.7901152 +4094.2838994 +4322.4986916 +4479.25002 +4201.2282816 +3919.988793 +4675.5601038 +1370.7479006 +2717.446152 +3049.4847638 +2459.3906466 +1301.5961592 +4441.1479754 +4079.2543754 +3948.1564248 +3947.0692694 +1251.6710348 +4176.9491426 +4530.347387 +1416.7612424 +3842.9996774 +2657.4063982 +1217.6251502 +2469.4066728 +2596.3219616 +1338.9074448 +2460.30074 +2930.4743556 +3687.959195 +3844.9217294 +2558.4067326 +2427.3961086 +4475.3669396 +4347.3589544 +4372.9806568 +4475.2800396 +3613.9388378 +3924.1388046 +4003.8154338 +3599.9245262 +4212.0398822 +4178.8899922 +2866.402436 +2506.3035348 +4043.132836 +2491.3375338 +3753.9115614 +4100.119253 +4088.1075498 +3333.6510042 +4886.7022508 +2521.3750998 +2605.302333 +2946.5086272 +2644.2543822 +2666.2135826 +4297.2804338 +2549.1968278 +3953.074474 +2891.3891712 +2479.200558 +2531.217939 +2471.2655554 +3005.4769944 +2906.4184794 +2562.2192604 +2469.304915 +3019.4158548 +2677.3499494 +3931.0981672 +3879.93521 +2407.075639 +1570.8752202 +2708.4384252 +3728.7804924 +2551.3420696 +4513.3889324 +3743.9542124 +3813.844668 +1317.7655988 +1339.7459276 +2458.3569902 +1317.7655988 +1447.7306726 +3820.945533 +1520.903817 +3034.4770542 +4165.246907 +2980.430974 +3908.126464 +1204.583622 +1445.860557 +3790.990992 +2467.3685576 +2525.3529084 +1399.7306726 +2790.3169962 +3734.9453202 +3956.0431158 +1504.8249022 +4359.3532624 +3857.9126588 +3902.813704 +4018.1447884 +1301.7376708 +1504.7383994 +3793.835561 +3614.7813426 +1575.8732472 +2466.3189854 +1501.7677248 +1573.9555152 +1506.8405514 +3855.0046834 +4198.0348144 +4001.0805196 +1201.703002 +4165.3884186 +3901.1136208 +1523.7830994 +3997.0777076 +2452.2597418 +3607.7550866 +3829.7700052 +3876.0038524 +3855.988186 +4125.1832472 +2478.4142182 +3805.8766524 +3874.047532 +3849.9399008 +4198.0512348 +2495.1901042 +1541.8241736 +3646.8062092 +3821.0991106 +3823.9604536 +3616.9000872 +1433.682662 +3935.9284104 +3889.073034 +3658.7906654 +3597.8753938 +2593.2382962 +4731.4773484 +3823.0703324 +1429.69898 +4041.1508858 +1505.7037904 +3714.9983986 +2625.4060212 +4353.3497278 +3829.7901496 +3622.8816604 +4168.1551804 +3824.9318994 +4058.8868032 +2665.4173566 +4332.457206 +1416.6844536 +3771.9670576 +3008.5916836 +4335.4251962 +3606.7953532 +2639.5009622 +4280.1712238 +3839.8924972 +4370.2250936 +4499.3481328 +3947.965264 +3963.9722794 +4213.0717308 +3976.1407584 +1262.7346348 +3935.944317 +3977.0025746 +3654.9476276 +2432.2685742 +2531.4183 +1248.5954478 +1369.7465964 +1507.767056 +2747.5333236 +1210.7145694 +2578.444179 +3718.9389908 +3683.1725462 +3696.7955518 +3942.7927124 +3938.9736596 +2571.3543656 +2431.1221336 +4343.3600174 +4185.2109006 +3765.9255132 +1216.6662842 +1362.6779114 +1291.6771828 +3693.8567684 +3975.946443 +3771.6439614 +3675.828049 +3975.123729 +4169.0194996 +4017.1129834 +4522.2412302 +3599.8340014 +4693.4965544 +3873.0206072 +4465.2819528 +3816.9970782 +3911.0474894 +2515.2879282 +4118.3513066 +4071.2561782 +4284.4446262 +4108.0450462 +4037.052396 +3620.7362464 +1316.7485694 +4527.410455 +4293.1738656 +4063.947883 +3636.0653518 +3653.840725 +3872.1271156 +3682.9192092 +1212.570949 +3755.8470514 +4166.1085418 +2751.4140824 +3763.968679 +2492.363807 +3904.9160374 +4166.8658906 +3598.5971182 +4128.1029694 +1283.563815 +3780.9997534 +3813.900147 +3811.9981746 +4126.2313004 +2812.2020922 +3699.9902096 +3932.0966056 +1372.7714124 +1496.8786666 +4207.2296456 +2412.2608048 +3865.8979622 +3812.9161306 +1495.9132756 +1499.746716 +1239.5883726 +3936.154392 +3866.965797 +3800.0293798 +3754.0840968 +1455.6629908 +3877.1360868 +1497.7404484 +2726.3663272 +2417.3425428 +2630.2910574 +2265.2116714 +3241.7320896 +1193.6331942 +1025.5869154 +2954.97999 +2993.4109684 +3399.7879972 +1115.6702464 +3491.8445484 +1163.5684886 +3042.4352088 +3146.625111 +3227.6663554 +2880.691213 +1600.7885188 +1036.591666 +3267.7991958 +2513.2397362 +3435.6833484 +2807.145686 +2881.479395 +2783.4969402 +1954.9610714 +2950.3256472 +3544.8120654 +2812.452754 +2989.592097 +1978.1210696 +1856.8726554 +3016.3848766 +2928.631712 +2633.3071434 +3164.7668942 +2799.583899 +2989.812719 +3484.7882434 +2865.608415 +3576.8575558 +3028.4794578 +2501.2186078 +2495.23388 +2456.186598 +3305.6839148 +2867.4664302 +3281.5318654 +1054.6062522 +3013.6599744 +3175.5582338 +1022.5872498 +3020.5024964 +2548.2817376 +2634.438031 +3382.87829 +2012.9737616 +3486.7824846 +3124.5803482 +2559.2604704 +3166.6107032 +3017.5542878 +3240.5814112 +2548.2961252 +2501.2913746 +3491.8887944 +3237.7091676 +1669.9613886 +3435.8558746 +2945.25065 +3345.794505 +3432.788811 +1667.8994606 +2760.4115602 +2377.2892486 +3014.5420516 +2861.5524456 +3427.5796946 +3112.5392568 +3193.6214204 +1800.9217118 +3147.5763688 +1753.8845998 +3358.5728008 +2712.3693034 +3179.8181982 +2662.3853296 +3169.7109612 +1980.09044 +3367.7847292 +1174.641984 +2574.5399702 +1949.214905 +3063.6140898 +1628.7946668 +2136.2629754 +1967.0071688 +3020.4937664 +3389.7800242 +2821.3036706 +3545.8147072 +3538.7037654 +3398.8309482 +2799.4554718 +2675.3309642 +3239.6290702 +3544.943177 +2635.3016642 +2795.4493238 +1719.8480968 +2061.8987472 +1189.6706406 +3135.741684 +2971.6202378 +2443.1841376 +2753.3958512 +2875.6621622 +3020.695465 +2699.2997682 +2458.3066894 +3393.8084224 +3076.3704242 +1684.0035258 +3346.6568006 +3018.4405684 +3106.568265 +3423.8050692 +2983.4312912 +2837.633761 +2714.5450552 +3293.6865992 +3318.7763954 +3019.5191316 +3370.7641338 +3265.742671 +2723.321078 +1174.620204 +2578.4575826 +2842.5275272 +3503.0060656 +3019.513772 +3444.615624 +2500.1816154 +1602.773658 +3104.8113216 +3357.8216882 +3122.547925 +3017.4994604 +2677.3739344 +2795.2919056 +2876.4097574 +2674.2633108 +3016.6326726 +2849.5544692 +1792.8089956 +3400.8176064 +3242.6988182 +3395.643022 +3541.8627006 +2598.3109414 +1916.9631802 +2286.0835786 +2324.1647836 +2807.3799274 +2696.4431332 +3199.6737276 +1832.9241124 +3381.6776736 +3078.6171258 +3312.7545982 +3190.7787028 +3410.8785646 +3250.8018204 +3397.571987 +1650.8828082 +2709.4927054 +3018.5683096 +3407.7108994 +2231.0689184 +2963.5829728 +1922.9777664 +2244.1571956 +2777.5775868 +2158.142198 +3213.6354168 +3485.9707878 +3115.6552836 +2534.25801 +3296.6586114 +3507.8039474 +1189.6706406 +1061.6232988 +2894.4384424 +1728.9118164 +1974.0170044 +2522.4300316 +1183.5396932 +2966.4919322 +3123.7153774 +2483.2147844 +2586.3515282 +1084.5552826 +1018.5117054 +2173.0044084 +2784.5497014 +1108.6240274 +3017.417312 +2904.4439216 +2652.52607 +2394.1057558 +2777.3727336 +2075.2214472 +2395.3045208 +2989.4814278 +2684.4154798 +1943.923778 +3019.3246784 +2696.3631554 +1701.839384 +3019.6314708 +2562.2859724 +1172.567304 +3336.8629154 +2781.2980364 +2597.4248422 +2922.5135166 +3370.5959528 +1099.6600764 +3098.6035854 +3379.861518 +1074.5743022 +2230.0411262 +2680.349615 +3368.9119576 +1770.9264026 +2309.2001638 +3579.6728014 +2060.057804 +2789.4962714 +3190.5781604 +2589.3107884 +2069.8788632 +1966.0986036 +3558.9224428 +1799.920589 +2108.1377818 +1970.0220894 +2375.248449 +1886.0117238 +3129.547395 +2241.2150418 +1648.7692418 +1753.975992 +1809.9108132 +2197.9738214 +2142.1466314 +1641.8950444 +3318.8186522 +2981.5861446 +2293.0134364 +1638.8729128 +2063.9812898 +1846.9788294 +1818.936298 +2188.1235898 +2156.042549 +1845.9220462 +1934.9771148 +1783.8852686 +1739.9609944 +2200.1085162 +1734.019175 +1704.852967 +2810.4748258 +2150.0127078 +1933.9421116 +1902.9839144 +1788.850464 +1684.8532416 +1614.8464248 +1897.8845998 +3149.6284014 +2055.0247312 +2252.016747 +2238.08376 +1832.9824572 +2254.1554638 +1947.0901056 +1835.1104456 +1865.9522816 +2019.9624688 +1686.800146 +1800.9985006 +3364.8465974 +1629.8573234 +3089.5609942 +3222.6704342 +1708.8532416 +1818.9951474 +2014.106682 +1696.8177256 +2298.1235138 +1629.7957896 +1853.029799 +1683.8112432 +2095.9156408 +1801.9421116 +2804.4020418 +2688.5537234 +1694.774721 +1741.9151098 +2122.1017926 +1921.9380896 +1742.8739758 +1137.6869586 +2948.636797 +1980.9401558 +3192.585947 +2140.9483366 +2447.2783074 +1898.0360068 +1970.9519644 +1892.1345928 +2111.0621776 +3221.5098696 +1735.8012688 +2170.1633264 +2495.366843 +2248.0687624 +3267.893091 +2858.546255 +2759.478712 +2010.9857658 +829.4657438 +843.47016 +968.5079408 +807.4490316 +815.4289662 +863.4938704 +866.4385272 +877.4769768 +939.3821382 +883.5313168 +829.4657438 +863.486478 +909.4919572 +872.5330912 +946.5851238 +829.5385106 +860.4715574 +841.5272776 +901.5457216 +869.558576 +921.4767022 +872.5443242 +923.4236066 +869.558576 +849.5184452 +863.475245 +872.5330912 +901.4981052 +800.5007298 +855.4198592 +946.479344 +816.449366 +855.481393 +941.4494258 +887.5228614 +898.52359 +952.6433044 +970.4719516 +968.4207864 +880.4766424 +961.526626 +840.5068778 +814.4912286 +916.5130258 +842.5086096 +814.5639954 +843.5217984 +905.4817872 +992.613069 +816.434111 +814.527612 +845.4606588 +985.5920004 +814.527612 +882.4922916 +904.5381762 +824.4868124 +831.4086262 +845.5486806 +845.5374476 +3455.7684112 +915.477371 +831.4450096 +924.4664724 +800.4868124 +2485.3977472 +3238.6621602 +3044.3344968 +2494.275014 +3492.777578 +1091.62263 +3038.526978 +2882.4193468 +3493.8439586 +2814.407521 +2519.411089 +2434.3491184 +3228.6759924 +2785.5561838 +2703.391435 +2987.5940244 +2501.4270128 +885.4708288 +3486.7896612 +3238.6428832 +3569.8768926 +2952.432037 +3189.6628888 +1966.0311964 +2173.1225866 +993.4991682 +2178.169749 +2152.1639952 +3199.8087142 +917.4826546 +3369.8329212 +2700.4519656 +3186.6229992 +3240.7937004 +3076.451235 +1019.5651182 +2912.5242764 +1591.929696 +1376.7775604 +1509.8262996 +1957.0996068 +1489.8180256 +1392.8088588 +1480.7633684 +1547.8381082 +1279.6619278 +1413.7292154 +1447.7419056 +1532.8562006 +1406.6789744 +1499.7215656 +1503.7164806 +1393.69898 +1587.7317356 +1341.7503438 +2126.1231956 +1502.8456364 +1202.6692604 +1470.7652816 +1535.8194828 +1448.8211548 +1490.824508 +1236.7805194 +1550.7576146 +1825.8805778 +1535.7983544 +1148.6189424 +2145.2044604 +1431.6881412 +1572.9086274 +2011.9567322 +1202.677123 +1085.54651 +2245.1297976 +1665.9637892 +2095.2112772 +1233.708087 +813.5072122 +1994.9367094 +2300.2561758 +1347.7397796 +1439.770701 +1489.7928752 +1588.9664138 +1340.741177 +1447.7922064 +1538.79802 +2133.0524018 +2137.2146304 +1735.8562776 +1089.6215842 +1097.4633776 +1996.0702814 +1013.6596822 +2315.1617648 +1257.723342 +2029.0016896 +2294.1946248 +2201.180373 +1041.5930634 +1278.6931664 +1401.866705 +2177.1237286 +1431.768119 +2342.2151016 +1635.7991428 +1352.6823276 +2201.0799528 +2094.0996666 +2203.261578 +2026.9887248 +2190.1942478 +2347.0815124 +1056.6291124 +1205.5822418 +1366.7859986 +1896.9529078 +2187.9767186 +2210.2422412 +2040.1155904 +1402.7667216 +1302.7151622 +2039.1818748 +1438.7303382 +2213.2459288 +2266.2320712 +1458.775177 +1517.7759056 +2277.0621158 +2233.1558154 +1760.9672022 +1511.8531818 +1925.0403804 +1924.078144 +2232.0304688 +1205.6264878 +2294.0531476 +2243.1797042 +1383.8125464 +2319.3089198 +1976.021602 +2263.1591686 +1376.8027108 +2201.195628 +1169.6516382 +2364.19206 +814.4912286 +2171.1109594 +2254.1785814 +1108.558653 +1744.9511588 +900.5140888 +2369.3529084 +1252.6887502 +1232.6400708 +2248.3380496 +1295.8063984 +1588.9187974 +956.5766856 +2176.1123568 +1792.9359038 +1367.7084812 +2234.121858 +2379.3783506 +1922.904348 +2380.2498464 +1839.9056086 +1411.767056 +1014.6185482 +1985.1057548 +1011.5937322 +1528.7984142 +2320.3014848 +2247.062966 +1431.8197574 +2298.158516 +814.4660782 +2185.174225 +1531.7664044 +913.5344886 +1409.7441958 +1306.7496152 +1961.1019142 +1269.7629144 +952.5930036 +1465.7201084 +1673.8089186 +872.617091 +1998.0243968 +2196.1360672 +2375.3688322 +2259.269852 +2301.0140292 +2087.076095 +2063.1890858 +2245.1677 +2213.191606 +2232.1749536 +2165.189103 +1744.8280912 +676.3907912 +2030.0717386 +2390.0886636 +1201.5767454 +2171.2135846 +916.4726204 +1506.834678 +1674.8980632 +830.4133768 +837.4595958 +1359.8237794 +1099.5985426 +1716.823976 +2197.0095958 +2236.3340276 +2154.0156668 +1603.929696 +1794.8900192 +2103.1080794 +2391.2856208 +1797.7612576 +2395.231754 +2152.1601546 +1923.983127 +1788.8853284 +2249.2782902 +855.5905432 +1191.5618846 +2075.1962968 +1372.6582402 +2167.2146476 +1959.9763862 +1242.668016 +2062.0880566 +2155.0432776 +2148.0376798 +2389.2964596 +2026.179919 +2008.0880394 +2313.1674254 +2130.1796444 +1811.0304678 +2168.0749104 +2177.1857326 +2354.3783932 +1320.7261966 +2228.1185048 +1974.16656 +2052.030939 +2193.172099 +2169.0928072 +1972.9570666 +1903.9210004 +2087.1488618 +1594.8929782 +1632.728048 +1524.7684534 +1358.6789744 +1014.5709318 +2361.161552 +2319.281085 +1975.098938 +2169.217031 +2348.2514678 +2387.1084908 +1674.8578392 +2389.0909112 +2287.2279134 +2174.2422412 +1117.6607452 +1781.9423862 +2160.1466142 +2260.3014848 +1829.9873182 +1122.7124434 +2105.0864778 +2147.9620128 +1299.7146292 +2104.1019912 +1965.0934588 +815.5340944 +1801.7318552 +2027.9621942 +1315.7030192 +2030.0142268 +1975.1757268 +2310.317134 +1755.9590984 +2112.2027792 +1521.6178946 +838.4184618 +2272.2677858 +2368.151459 +1604.7893072 +1371.7132916 +1100.6189424 +1373.6647226 +1751.0417008 +838.5024616 +2118.0904572 +1762.9114222 +2336.198664 +1127.641074 +2027.1931078 +1419.7867444 +2002.0622202 +2391.1462798 +1424.8714556 +1323.7186512 +1674.8623658 +1370.813275 +815.5268834 +2296.2096224 +2169.2044604 +1889.9118762 +1460.7656758 +1099.623693 +1324.727818 +1453.7677248 +2144.0645448 +1559.8882276 +1711.857145 +1972.9682652 +1282.7720812 +1452.8313248 +945.4767022 +2383.3626842 +2314.0793266 +1414.7608482 +1185.6869586 +973.559639 +2243.0454036 +2230.1779298 +1971.141744 +1999.0638922 +1389.692832 +2065.1254432 +971.5763512 +1110.67606 +1784.0712076 +1883.158062 +2000.0764294 +2321.3259066 +2157.2705208 +2013.1179576 +2157.9140366 +2032.0808628 +2047.1941708 +2136.1322266 +2332.3412386 +1315.786333 +1915.8700136 +1787.8536956 +685.412254 +855.5065434 +2070.1261546 +1574.9296362 +1414.8507214 +2194.2261978 +2268.1037058 +1803.897746 +1888.1985272 +2266.0905596 +715.4228182 +1613.9464082 +1001.4638478 +2314.1777484 +2391.3525142 +2376.2551128 +1582.8136864 +1552.8249022 +1025.5406366 +1491.7780144 +2186.115333 +2012.240407 +1476.7718238 +1423.9238226 +1711.0104024 +942.502187 +820.4918974 +762.366035 +986.5620994 +913.4981052 +674.359887 +725.407169 +972.4777054 +772.4191306 +674.3962704 +944.4787684 +916.606921 +898.4759736 +915.5389048 +915.5389048 +945.4767022 +986.5694918 +916.5051632 +944.5225442 +737.4257944 +673.3758706 +673.412254 +745.4486374 +718.3861004 +718.4224838 +720.4282376 +741.4748508 +741.4748508 +609.3056858 +674.359887 +745.4333824 +685.412254 +901.574894 +670.4489718 +753.4497004 +901.5385106 +565.2859974 +720.4170046 +615.334008 +576.268968 +546.3013122 +718.4047258 +614.4227584 +614.386375 +614.4227584 +655.4632236 +614.3499916 +614.3499916 +614.386375 +614.386375 +625.427509 +687.4642866 +785.5235302 +703.3864348 +703.4228182 +613.3798926 +515.2954986 +874.4144398 +655.4632236 +873.4555738 +576.3383644 +576.3383644 +458.2852688 +982.508335 +771.4238812 +771.4602646 +664.3907912 +801.4708288 +664.3907912 +961.5245932 +744.4857494 +744.5221328 +744.449366 +744.4129826 +573.2910824 +545.3172958 +747.4166702 +785.4871468 +671.4329882 +665.3748076 +715.4704346 +498.2914168 +834.532697 +785.4759138 +715.495585 +715.4592016 +715.495585 +715.495585 +715.4592016 +888.3937056 +615.3703914 +858.4559082 +573.2870604 +3794.8403734 +2947.4827482 +3138.4814876 +945.4879352 +845.4970422 +992.5443242 +788.4578214 +788.4578214 +901.5232556 +585.3598272 +863.4137112 +928.5090038 +863.4217552 +939.5752882 +737.4435524 +755.4177332 +855.492626 +788.4690544 +862.4912286 +714.4098108 +843.5177764 +843.481393 +737.4547854 +756.471832 +737.407169 +585.3234438 +713.4799358 +713.4799358 +713.4799358 +713.4799358 +713.4799358 +717.402084 +932.5330912 +977.5797044 +777.4384674 +808.3966646 +904.5163962 +781.408232 +805.4181274 +932.5694746 +685.4486374 +685.4850208 +771.4714976 +756.3765992 +872.5555572 +772.4078976 +978.5208124 +843.492626 +826.3973334 +904.4878754 +696.3918542 +862.4912286 +972.5828336 +758.4650152 +977.543321 +808.444281 +773.4395304 +759.4312736 +759.4126482 +961.5232556 +952.4865378 +941.5446586 +741.4748508 +741.4748508 +741.5476176 +741.4748508 +741.5112342 +989.565787 +759.3762648 +3506.7873882 +799.4412622 +799.4776456 +952.5051632 +989.554554 +759.4490316 +2766.449264 +1543.8721842 +3755.0603884 +3591.8540668 +1007.637885 +2481.1798238 +2215.1266258 +3137.4699992 +2031.0921384 +2276.1840606 +3280.8757698 +3151.7248958 +1805.1250318 +2662.2961424 +1399.6726906 +1117.4887236 +3782.9565532 +2045.1381162 +3094.6021454 +2271.258619 +3401.5370436 +2273.2782902 +4512.3970534 +1460.7292924 +1099.6600764 +814.5864614 +814.4773112 +3543.8428338 +1082.6335286 +3421.7399958 +3705.878367 +1307.7336316 +3671.9562016 +2789.3830992 +2047.2040662 +800.3776622 +2325.386882 +1353.7478408 +3540.9091942 +814.4184618 +3777.9035174 +1374.6448984 +3488.7112338 +3311.8473706 +3680.7494686 +2672.3306126 +3721.7762322 +3655.9064936 +1676.855549 +3191.5998978 +3821.121758 +4012.9877898 +3296.835639 +3952.0077954 +3656.7860334 +1199.608061 +2965.4165236 +3275.7513048 +2785.3492978 +1271.6357144 +3651.9194412 +3313.7094422 +3510.6722856 +1270.626729 +2937.6090666 +1054.5770798 +4013.1989136 +2009.946922 +1934.963849 +3652.0582684 +2165.1077876 +3278.6128292 +1732.0947366 +2625.4034838 +2610.4056696 +1933.930227 +1459.7419056 +1848.9515702 +3651.8996596 +3294.740012 +2748.2457656 +1183.4855518 +3020.725975 +1715.894101 +3276.8339244 +2461.2205038 +2696.1951558 +953.4705542 +3219.6338806 +3612.9011502 +2025.8704078 +2563.417546 +3926.957067 +3233.6787366 +3792.8858952 +3726.042903 +2811.364947 +3074.3992024 +1450.803105 +2998.5399256 +3989.909107 +3451.7420022 +3993.0931926 +3022.4428758 +2913.4705718 +3018.6613718 +3988.6742566 +2790.5279042 +2491.3103942 +969.560702 +1517.7031388 +3992.2356142 +2211.1615692 +3072.645448 +1985.0078376 +2705.5447552 +3580.8776212 +3728.930734 +2609.286701 +2848.1883562 +3650.873205 +3322.5597508 +2487.5012368 +1649.9351752 +3862.9820806 +3724.88034 +3219.8243462 +2523.3233418 +4910.3555232 +3241.7590822 +3239.8359906 +2914.6014594 +3868.9805788 +3477.8327398 +3829.081078 +3639.9333586 +4553.5677536 +2255.0211206 +3760.2651544 +3440.802626 +3122.4953026 +1079.5570742 +4540.3964606 +3454.742138 +2570.3718682 +2786.5403816 +4891.3351062 +4031.2193388 +3369.6768406 +3582.7508092 +2297.133624 +4911.4792342 +2028.1506362 +3357.8666202 +3492.8552686 +4910.474055 +2317.0974362 +2369.3641414 +3124.5664308 +2967.6504732 +3391.4673554 +3814.238179 +2217.9953268 +3021.4985788 +2489.5712088 +1409.7918122 +3627.9717656 +3073.8755904 +3823.9063122 +3358.6306662 +3659.821901 +3126.6000194 +3112.6614914 +2925.5208634 +3590.8350046 +3122.6585942 +3869.9429966 +2306.2117312 +1695.9882708 +2523.5488532 +2680.542765 +3950.0319 +1087.6640984 +3294.7705564 +3230.6035854 +2636.3113356 +3259.5803462 +3297.5148522 +4029.1084568 +1519.763034 +2593.280553 +3018.5050024 +3681.9367462 +2033.0680338 +3720.717244 +2630.4114406 +2608.3979174 +2858.4371048 +2157.0953102 +2784.5689784 +3749.7843786 +3337.7200236 +3794.0828524 +1562.8191484 +3664.8816776 +3264.610916 +3753.0490936 +3821.1026624 +3697.7302514 +2249.2167564 +1294.6921034 +2913.5783752 +2354.310986 +3707.8869866 +2453.3715338 +3191.6282372 +3359.8497266 +4180.2351582 +3211.7523678 +1932.0117998 +3945.9907062 +4896.7890798 +2257.9554118 +2253.2633098 +3538.7700072 +1460.7219 +1105.507349 +2014.0516732 +2012.987679 +2292.196082 +2977.3187878 +2348.2508162 +2049.0418204 +2369.31 +2574.3764972 +1751.898123 +2230.097952 +2448.1307076 +2607.2638408 +2145.1027026 +3794.1021294 +3283.8251346 +2359.2858954 +1709.9351752 +4534.2826196 +1225.6553856 +3021.610232 +2276.2110624 +2193.0485612 +3553.8819776 +2572.2157116 +2845.3558228 +2672.4622288 +2787.2479342 +2675.3059952 +3539.874877 +3161.8498908 +2378.2189422 +3166.5049234 +3101.7950634 +2417.2397362 +3179.1606218 +2886.4623484 +2798.5873464 +2766.4273026 +3340.7733604 +2473.2488432 +3217.4924794 +3443.7585158 +2904.4212742 +2958.566139 +3100.6457226 +2823.4839926 +2841.4078726 +2723.4355878 +3571.9105156 +3513.7925158 +2956.5478054 +2587.3105756 +3137.8049496 +1752.9046054 +3577.8415722 +3055.5939312 +2443.9763416 +2844.3646298 +3240.7829376 +3239.8056276 +2025.0063044 +3594.1922772 +2892.490852 +2810.369046 +3241.741985 +3021.5817456 +3559.9949856 +2637.4311716 +3489.9279726 +2640.5761894 +3576.6161378 +2893.3881842 +2500.2590902 +2377.2448212 +2684.3326454 +3238.74616 +3593.0060828 +2860.4354662 +3285.8733266 +2940.499582 +2957.640972 +3188.520759 +2948.5534488 +3505.7076688 +3491.7756222 +2636.3566304 +3292.7614322 +3207.7437168 +2040.0540566 +2336.3103172 +3135.5545888 +3229.8284878 +3500.6591252 +2582.3274408 +3543.8857422 +2857.3729292 +3518.9499938 +1861.9097502 +3157.7320896 +3544.814922 +3230.700851 +2860.5116034 +2895.4647156 +2680.290114 +3143.6699802 +2639.2979168 +3174.562117 +3035.55043 +3484.8524708 +1144.6716438 +3239.6198608 +3140.635278 +2954.5348406 +3260.642489 +2249.2492992 +2875.4522382 +1647.7991428 +3111.530776 +3257.8281108 +3233.8247404 +3583.0754032 +2058.2272608 +3196.6677184 +3251.8063136 +3065.4873944 +2945.4037574 +2668.4448478 +3426.859092 +2027.0244566 +2859.4303214 +3364.763465 +3007.5364194 +2896.5771592 +2513.3560974 +3041.5754162 +3275.8718602 +2534.3665086 +2688.3407826 +2896.5744748 +2486.2149202 +2380.1505916 +2824.4183598 +814.4912286 +2934.5490326 +2496.3335716 +3403.7921216 +2977.5005234 +3488.8668786 +2171.0323192 +2047.106149 +2958.5272526 +3229.7921044 +2376.2814194 +1623.7450014 +3113.5755976 +3424.8876888 +3414.7953532 +2792.5435534 +1863.9438434 +3196.5675962 +3587.9562016 +3116.639986 +2073.928787 +799.491563 +3487.9587836 +2903.406234 +3448.4257654 +3258.7698704 +3436.8492726 +1043.5610962 +1814.9202546 +2956.451235 +799.491563 +3113.607959 +3320.7067416 +2775.4442388 +2174.0563022 +3005.4875758 +2592.2207966 +3242.8026088 +3132.6890424 +2430.472563 +2824.3828438 +3005.5908526 +1909.9367428 +2856.3291138 +2493.4641846 +3564.8180178 +3157.4331598 +1976.0101876 +929.4494258 +2622.3288808 +1945.0519904 +2227.079661 +2426.2673916 +1686.738142 +1974.162538 +2952.5138318 +2293.0821812 +2713.691822 +2687.3127016 +2996.5090214 +3158.516431 +3192.7294478 +3333.7641764 +3301.9349536 +2104.0647404 +2411.3656776 +2476.2682904 +2389.0768216 +2378.26674 +2657.459888 +3394.7744994 +1040.4814528 +3246.6519902 +2222.1099734 +3264.6014178 +3244.7818746 +1658.793998 +3569.7783238 +814.4912286 +843.3973932 +2983.381642 +2547.2071964 +2022.0156668 +2255.1625978 +2184.0949758 +2197.127476 +2838.4915208 +2103.9643202 +1747.892661 +2572.3284866 +2725.4663106 +1723.743757 +2638.5268412 +3007.467709 +2366.1787182 +2074.9483194 +2094.0758538 +2856.4414186 +3112.6717404 +1834.0464514 +1745.8848744 +2241.1124166 +1769.8366064 +3386.7788396 +3316.9458522 +1886.963849 +2237.1439896 +2985.3638424 +3405.7496074 +3063.715196 +3201.729312 +2977.4643214 +3390.7968722 +891.492626 +845.4792842 +913.4981052 +799.4300292 +943.5926692 +819.4602646 +971.5651182 +964.5051632 +819.4086262 +954.5749538 +799.502796 +845.5374476 +814.4548452 +881.4282974 +974.4708886 +915.477371 +894.4922916 +919.4221666 +894.4810586 +845.4130424 +987.5348828 +818.4320022 +872.4967078 +873.4079574 +864.5068778 +895.3923082 +938.3842044 +873.4443408 +914.544993 +913.6548718 +895.3923082 +870.6014418 +870.4922916 +870.5650584 +914.4708886 +939.5065434 +829.4293604 +923.4249442 +829.4908942 +3015.6055412 +3578.8255886 +2775.6348858 +2701.435982 +1852.9392742 +3111.5664734 +2607.4576424 +3536.6703582 +3531.8356228 +3481.7438364 +2687.3251 +3394.6051622 +3472.9292596 +1962.1077106 +3172.5325504 +2177.1149986 +2883.4977286 +2772.4016648 +3270.8412996 +2242.11571 +3415.7438192 +3421.6878436 +3488.764905 +2438.3353034 +2099.0356896 +3399.9784376 +3547.946899 +2645.4176312 +3226.6118594 +2967.5334604 +3139.7433054 +3547.668368 +3529.8455942 +3219.51871 +2692.330338 +3338.9448064 +2551.2587558 +3270.5688578 +3004.6385116 +3421.733941 +3394.7416678 +2689.2726904 +2463.2361874 +3170.518934 +2619.3325856 +3224.6788724 +3166.564243 +3250.6648446 +1845.9519046 +3404.8230684 +1970.0757606 +2791.37762 +2495.0402598 +3366.622529 +1768.0206322 +3246.884894 +3414.65152 +2650.3714122 +2938.5664136 +3267.7834706 +3266.6467096 +3051.5736844 +3488.6314718 +2803.5271756 +3133.7208566 +2961.58443 +3018.555592 +2754.3151448 +2658.468541 +3319.7451568 +3477.9243134 +3050.6260514 +3410.5472734 +3493.9943168 +2536.4924642 +3281.6931242 +3312.7182148 +3339.7237538 +3493.8561756 +3333.7931674 +3332.6815568 +3223.7493602 +1914.0838978 +2807.4161294 +2752.545954 +3513.8446588 +3164.6968118 +2938.6368588 +2520.1940928 +2530.245337 +2721.5540578 +3412.6839574 +3271.0005692 +3488.756175 +2959.4814106 +3489.8070848 +3168.6924128 +2780.412153 +3057.622151 +3087.7960068 +3497.6852616 +3119.4795146 +3268.6866418 +3403.679601 +2916.328898 +3455.856433 +2573.4805026 +2735.3727164 +1829.0086706 +1122.5920602 +3084.5151694 +2690.1778852 +2904.2662424 +2849.3646552 +2892.521362 +3169.62678 +3446.8296106 +2910.4419152 +3410.8178982 +2890.3957296 +2282.1867622 +3265.6288128 +2940.5595968 +1753.8820968 +3154.6482428 +2308.2790188 +3462.7782468 +3241.6294644 +2588.4074014 +2767.5612374 +3050.4542112 +3226.499736 +2420.4412818 +3266.863491 +2870.4344204 +2932.4871046 +3036.4239586 +3153.6709328 +3228.6925942 +3586.8571616 +2920.5706342 +2702.3874556 +3216.8166366 +2581.3977472 +2632.2921032 +2939.3968524 +2794.6618278 +3478.7664554 +3143.687268 +2832.493057 +1638.7637626 +1838.963849 +4831.5039732 +1699.9355694 +3514.5961342 +3383.7149214 +1968.0025996 +3230.7194764 +1735.7432868 +4918.3495566 +4951.572718 +1928.9802866 +1856.991701 +1877.955652 +4792.2885102 +4863.5038364 +4978.6354364 +4873.529611 +4982.5042458 +4914.3189442 +1647.890535 +4889.4239244 +4855.587287 +4934.5164932 +4916.5017256 +4924.3594256 +4808.755244 +4857.4434852 +1732.9359038 +1984.1138758 +1662.800146 +4970.5696202 +4822.6848698 +4867.5111498 +1758.9151696 +4966.402567 +4828.6999606 +1855.0090648 +1984.0952504 +1854.0032684 +4993.6134386 +4934.5302636 +1755.9327918 +1981.02684 +1983.088768 +4989.4126428 +4920.6897906 +4990.5002684 +4844.557386 +3397.6586712 +3345.565153 +4940.763439 +4857.4044174 +1939.9322334 +4830.6771936 +1762.955198 +1677.8647158 +4794.5377148 +1787.9893338 +1677.840903 +4939.4281684 +4899.5811734 +1946.9625114 +4880.5994614 +4793.4108492 +4891.609753 +4845.5003454 +1662.9384686 +4811.2314524 +4800.5444384 +4893.4686356 +4942.4659178 +1763.9569724 +4881.5511164 +1602.804168 +4899.5128988 +4945.5807448 +4808.3431076 +4840.2093998 +3246.6811626 +4852.7473956 +3341.6203574 +4811.5488262 +1823.9893338 +4843.388298 +4881.5553198 +3559.84543 +1853.984643 +3279.7383572 +1612.0075478 +3296.6411514 +3618.8683014 +3685.9951498 +3949.7778678 +3675.692808 +3823.0815654 +3826.8830416 +3605.7017164 +4188.235065 +4478.2644502 +4098.242431 +3702.9554902 +4690.5108154 +3682.9304422 +3745.9334782 +1288.7026676 +4084.9224154 +3601.9336504 +1597.9806656 +3970.1349022 +3774.8240898 +4241.956767 +3721.7998292 +4056.1361638 +3846.1213618 +3602.8740724 +3849.851046 +4699.4450802 +3970.0564434 +4043.2684742 +3734.1318064 +4498.4917106 +3637.6226202 +3937.9743882 +3797.8198854 +3687.015584 +4357.0614818 +3678.835107 +3732.7625388 +3688.8107278 +4707.4113224 +4535.3265594 +3650.8103336 +3849.9610292 +3815.006398 +3742.9099998 +3717.7945486 +3605.0204704 +4481.6286358 +3821.0548646 +3789.15773 +4006.1074302 +4516.2365394 +4502.4654972 +4101.065367 +3986.920032 +4407.501838 +3919.976576 +3833.2181562 +3631.801184 +3925.0044706 +4575.4407836 +3722.89454 +4192.2133782 +4597.6872106 +1376.718711 +2562.4209246 +4485.2370694 +4449.3200852 +2537.3965028 +1207.6448214 +4019.8482512 +4306.1484912 +3770.9339058 +3858.071894 +1254.7295498 +4298.2488628 +4034.9901144 +3861.641955 +3639.9008158 +4204.0971984 +4246.2194158 +4417.5294256 +3742.828205 +3685.7643132 +3672.5091926 +4226.2230608 +3991.2680182 +4377.236737 +3738.806116 +3877.9024544 +4522.3158484 +4305.1898066 +3742.8645884 +3704.7786754 +3934.0872858 +3947.9535608 +2917.488958 +2923.513772 +3889.0051566 +3602.9632596 +3932.8836314 +3682.892712 +4112.833663 +4250.2295858 +3930.0215932 +1593.8766004 +3618.9011674 +3770.0405956 +3831.3106466 +3752.149077 +3969.301093 +3687.8891126 +3875.9726564 +4217.001923 +1204.6451558 +3972.0759332 +4011.1522406 +3596.9201526 +3663.022109 +3883.0296382 +1530.7314012 +3863.9149632 +3738.8503964 +3711.0128652 +4418.4819084 +3755.9959554 +2472.2430468 +3766.7188826 +4536.5331618 +4074.1676406 +3983.9574014 +1255.7611826 +3764.886488 +2574.368816 +4074.0294994 +3812.9817208 +3760.8524708 +4000.104763 +3684.8207022 +3979.7929678 +1205.6040218 +3737.0013748 +4044.9259814 +4372.2470864 +4307.1420706 +3967.1305286 +3999.3193728 +4597.378351 +2563.2991612 +3698.8247556 +3601.9507224 +2433.1885538 +4361.2501984 +3641.7383156 +4566.3254256 +3606.9581746 +4481.5657644 +3809.8516044 +3898.7301156 +3898.7238886 +2471.244427 +3754.0126676 +3848.0875432 +4461.4642812 +4260.1961786 +3882.9526336 +3841.8694414 +4390.2812728 +4002.1664752 +2604.4281528 +4532.1519468 +3810.778109 +4150.1196472 +1362.7870616 +3604.9166798 +3928.9146906 +1244.5859294 +3929.9102724 +2630.26841 +3865.1359054 +3883.2529354 +3827.000706 +4062.198185 +1339.7459276 +2605.4678296 +3757.05459 +1205.504767 +3641.86903 +3617.8961696 +2491.3449262 +1324.6703062 +1444.7826454 +3997.9876196 +4068.1678392 +3945.1210274 +3690.7928938 +4151.0268748 +4406.2998496 +2618.3162078 +1316.7815824 +4683.3819342 +3832.949555 +2491.5477902 +2559.395457 +3681.9003628 +3973.0561434 +4341.0628984 +3884.9743284 +4009.1483038 +1338.7883992 +2463.221584 +1371.6530954 +1529.8241736 +4072.118797 +2519.1847446 +1315.6983112 +4587.1871486 +2510.431883 +4019.014442 +2470.3026674 +3694.8650678 +2933.4810164 +2614.395225 +2519.2120656 +2471.3284268 +3886.9530896 +2592.2563126 +2426.1746962 +3631.8786244 +4483.3056014 +3811.9325114 +3837.9828092 +4393.2552834 +3800.7934602 +2906.3762226 +4372.256468 +1320.6561142 +3785.7717988 +4386.2303742 +2666.2710944 +4035.3503966 +2515.201244 +4354.9898398 +2616.3620924 +3635.7353982 +3670.9126842 +1443.6769082 +3789.9809922 +2445.3478234 +1300.77275 +3925.0049752 +3730.415715 +3597.7330148 +3758.0161312 +3692.0235064 +2412.3052322 +3723.9569808 +3672.0181326 +3881.0500096 +3640.957599 +3926.0855712 +3631.1340368 +3970.8893852 +3812.0327502 +3775.96716 +3685.8092108 +3771.9358616 +1343.82618 +4439.2230324 +3717.9536368 +1259.6720978 +4646.4401746 +3874.8608644 +3828.874192 +3648.7174254 +3978.9706074 +3693.90971 +3811.8692428 +3733.8166376 +4357.052924 +4491.7647206 +4663.4951266 +3812.8663436 +3820.9819164 +3894.2061946 +4045.0089972 +3685.9540928 +4385.3833336 +3903.00754 +3815.021653 +4028.9371212 +3929.8755894 +4044.1175384 +4232.3352014 +3823.9339656 +4243.3843794 +3796.9569474 +4200.3091694 +4033.1206504 +3935.9392806 +3957.9828436 +4086.9060264 +3714.6857328 +3942.086316 +4537.5788934 +3792.8378086 +3931.2257614 +4708.1364516 +3628.9981858 +2426.1259144 +4512.293733 +3778.8895574 +4287.2189618 +4355.4678208 +4039.2331538 +1483.7095442 +3825.9744328 +3976.0145018 +4000.0509196 +3884.0107544 +1349.7780762 +4096.9177074 +3637.7643132 +4221.2506544 +4247.0909116 +1460.8173142 +3654.8885968 +4523.206151 +3721.896581 +4248.881554 +3967.2653338 +3868.0530902 +3997.1109364 +3998.949856 +4353.1656402 +3796.0093144 +3821.0813526 +4126.1333832 +3782.0107716 +2685.51499 +4179.2360682 +1322.6942294 +2338.2129756 +1761.010978 +2207.1294034 +2022.0996666 +2332.1806314 +1532.892584 +2306.2930466 +1763.909356 +2172.0938104 +1829.964382 +2094.124817 +1942.907914 +2258.0702196 +1308.6826022 +2357.2378848 +2163.289129 +2284.1053616 +2210.8974694 +2257.1185646 +2286.2162436 +2340.2913148 +2311.2833924 +2342.2343786 +2138.148346 +1054.5770798 +2309.146674 +1358.6942294 +1574.7423596 +1893.9618 +2244.1937604 +1570.9015268 +1795.0031914 +1540.9551808 +2121.143794 +2126.2291568 +1608.8405686 +1479.772141 +1490.809253 +2290.2796876 +2289.1634034 +2332.2862298 +2203.1418808 +1776.857675 +2297.3041266 +1339.7459276 +2183.8970356 +2369.1148172 +2374.2168162 +2356.2024114 +2286.1603674 +2091.144933 +2183.1414694 +2337.1811614 +2315.3034578 +2328.2800818 +2353.1962208 +1519.7994174 +2300.201167 +2146.138176 +1629.996332 +1428.8551376 +2102.1999844 +1013.6232988 +2048.0724074 +2351.2095626 +2296.406613 +2318.1964762 +1763.943055 +2096.1669542 +1451.7230846 +2393.320547 +874.4144398 +2283.1858522 +1390.7496152 +2356.251184 +1580.7358174 +2042.9883478 +2347.080347 +1346.7418458 +1687.0395748 +2059.1789158 +2296.2790188 +1834.957701 +2239.1960222 +1750.8824312 +2329.2376102 +2153.173162 +1549.9415978 +2286.0287512 +1498.7851656 +1637.8664304 +1548.8008148 +2296.1271416 +2018.1159846 +2031.1363844 +1515.9096306 +2339.1109594 +1478.8894122 +2335.1906626 +2366.251485 +1456.7885188 +1987.9996406 +1740.0052748 +1360.6662842 +2205.1316936 +2368.384147 +1586.772218 +1519.8465636 +1311.7074182 +1201.6890846 +1503.002403 +1894.8081454 +2346.2542626 +1610.8319004 +1524.7210528 +1898.0809388 +1411.6744984 +2353.1439308 +1412.8463052 +1611.8112432 +2281.340887 +1309.5898298 +1429.7888532 +1370.7854402 +2327.1731792 +2354.4134298 +1359.747172 +1592.8489896 +958.5997272 +1050.5596988 +1940.7871366 +1410.8921898 +1309.7829798 +1646.8562178 +886.5851238 +2157.1541596 +2069.155404 +1282.651698 +1379.8136094 +2389.2649656 +1375.75332 +1703.8374566 +898.5136946 +673.3646376 +959.4923514 +964.4977708 +941.5797044 +899.482456 +627.3955418 +784.5170478 +902.507272 +784.4806644 +945.4767022 +961.559639 +942.5385704 +868.455514 +714.4024184 +845.4970422 +869.5195082 +787.4300292 +785.4507634 +784.4918974 +845.5082752 +558.374079 +787.4664126 +674.3235036 +656.458473 +786.4711632 +786.4711632 +687.3802868 +687.3802868 +687.3802868 +687.3915198 +687.3915198 +687.3802868 +787.4075632 +985.508868 +770.4901656 +853.5021272 +663.3591584 +857.4606588 +985.6508498 +716.454451 +717.3657006 +686.4326538 +560.3281944 +2198.1867622 +1535.761971 +1349.6550086 +1415.7255876 +1268.6070578 +1504.7633684 +1200.6349858 +1349.676137 +1503.7820364 +1546.8606168 +1395.7067666 +1940.0326536 +1243.6771828 +1892.9164312 +1261.7281524 +1484.8085842 +1330.7105474 +1484.7834338 +2303.0851574 +1336.7139006 +2373.2215668 +1484.8422832 +2094.103037 +1183.61246 +1949.97341 +1300.723796 +1455.750361 +1843.0526592 +2379.2837694 +1580.8449676 +1299.7397796 +1129.6342572 +1241.70915 +2339.3145094 +1768.851904 +1972.1356558 +2332.1334852 +2296.0357494 +1321.6625966 +1551.750361 +2346.2582846 +1308.6785802 +1224.7189856 +2303.2650416 +1612.9260084 +864.434111 +2390.4161142 +2277.0227592 +2206.138176 +1801.9533446 +2258.2090468 +2274.2047948 +2290.111688 +2264.2891888 +2136.1326968 +2338.2267116 +2359.3150678 +2297.1902684 +2269.2688062 +2388.2623238 +2338.1335024 +2161.0625718 +2231.2670744 +2365.3051896 +2049.1265062 +2162.2898576 +2255.1797042 +2332.2610794 +1679.8226718 +1536.8043666 +2337.1851834 +2365.110702 +1991.0323192 +2112.0560894 +2286.0803896 +2307.3161308 +2256.1392562 +2206.2433042 +2359.2283836 +2132.0789324 +2391.3161308 +1939.0250058 +2390.3143564 +2216.1068016 +2023.0162758 +2103.0860836 +1956.056741 +1610.8627428 +2370.2887946 +2262.2259232 +2054.1272176 +1385.7150234 +2339.423155 +1962.2141764 +1678.8889562 +2198.2170908 +2021.0211034 +2145.0953102 +1021.5192336 +2237.1255456 +2032.0952504 +2382.3899008 +2355.3426188 +1498.7164208 +2184.0078214 +2097.2560988 +2334.1783068 +2211.0290856 +2025.0683084 +1498.9122552 +1796.8904134 +2064.0859478 +2103.111234 +1875.864733 +2281.0127848 +2342.322219 +2091.9894706 +2205.2594692 +1444.750284 +2321.0341878 +1740.0481832 +1020.596751 +1991.0727246 +1965.8778002 +1853.023274 +2296.0930798 +2165.923623 +2105.1340942 +2272.0357494 +2204.0975578 +2149.1180508 +2386.1626748 +2344.3378682 +1383.783374 +1019.5651182 +2392.4140054 +1013.5869154 +2108.0214206 +2279.1280658 +1553.874979 +2210.1542194 +2147.0906984 +1236.6093652 +1558.8354664 +2034.180982 +2347.2283836 +2128.2394464 +2347.3561592 +2286.321156 +1113.6869586 +1945.9116016 +1875.0175202 +2389.4168428 +2286.1895398 +2375.1691572 +1735.9395914 +1829.8934322 +2241.2156934 +2230.2071022 +2105.1084392 +1340.6684102 +1425.7714722 +2329.340887 +2239.2193212 +2299.3051724 +1376.7928154 +2302.0495026 +1313.7302784 +2011.0520076 +1677.9664736 +1532.8085842 +1950.0686428 +1532.892584 +2182.1970254 +1451.6892042 +2238.317967 +1043.5545712 +1045.555617 +1828.9974376 +2232.9971974 +4889.5191664 +2910.4915208 +3637.9071624 +3474.921782 +3903.1005678 +3617.946975 +3256.7688246 +4737.4324244 +4042.029774 +2370.1466314 +2336.1728276 +2702.3373362 +3093.5693472 +3944.0365908 +3384.7023082 +3785.0508426 +3756.1030728 +3617.8616376 +3216.6899098 +3330.6553606 +3128.4807164 +3916.9594504 +3498.698955 +4687.436566 +3165.545578 +2343.232131 +3839.2121186 +3314.6227246 +3846.0314886 +4562.5156166 +3706.0052752 +3101.554983 +3021.4501294 +3878.9406466 +4560.4776828 +3928.0450462 +3500.9241746 +3144.5223804 +3579.9394042 +2580.3012102 +4142.1799366 +3393.938701 +3679.0015876 +3589.8774854 +3839.0773478 +4755.4167164 +2221.2429698 +4371.3046316 +3779.0833682 +3754.805053 +2223.2222356 +2636.264768 +3154.5893934 +3716.8069804 +2315.1558914 +3910.8100934 +3527.6765488 +3424.8135844 +3839.8724176 +3445.9547444 +3164.6325936 +3479.5786316 +3913.0597682 +3680.927545 +3635.067418 +4087.0445304 +2997.5711642 +3267.651673 +4482.3187192 +2686.4864358 +2719.6291148 +2081.1091252 +3798.6662744 +2975.3494174 +4022.002909 +4691.3324076 +3799.0076424 +2284.217485 +3826.9569302 +3286.6154112 +3353.5365734 +3562.7222094 +3031.6276302 +3365.8193808 +3360.7076678 +3853.8486454 +2442.2965194 +2767.322141 +3956.2000638 +4477.1806996 +3549.8143302 +3757.0413242 +3322.7944716 +2625.4601626 +4177.3666042 +2264.1607616 +2210.270762 +3697.7966746 +2057.184395 +4484.3093994 +3241.601811 +3700.5668068 +3702.8443508 +3821.9492236 +3960.0056694 +3544.6563476 +3337.4210938 +2315.2232986 +2863.5038766 +4236.2653936 +3454.655851 +2366.1461754 +2093.1156502 +3435.9524542 +2911.7082596 +3479.0310346 +2805.63672 +939.5389048 +988.5309996 +901.5232556 +618.2860572 +794.4762482 +794.4762482 +630.4064404 +618.2609068 +915.492626 +841.4293604 +941.5181706 +941.5909374 +617.2768904 +677.411191 +888.4916228 +862.4548452 +787.4439466 +803.4024782 +787.48033 +917.3840514 +671.3966048 +671.3966048 +899.5439898 +869.569809 +939.5541598 +757.4333824 +939.4735304 +919.5126914 +859.5167134 +3454.7830572 +1485.7310668 +3456.6699468 +3861.7824826 +1541.7797462 +2023.0407746 +3049.622758 +3097.4675104 +3564.8066034 +1673.8624084 +1368.7845414 +2021.1091252 +2490.1895742 +993.4879352 +1465.7598622 +2635.4108144 +810.4235468 +1667.931822 +3456.9316602 +2296.1150412 +4273.3235488 +3487.7840776 +3196.5505242 +4821.4506962 +4506.3595218 +3624.8382788 +2696.2692602 +2989.5364366 +2338.283058 +2336.1243782 +3216.8054036 +3076.470512 +2087.0581556 +1455.8772692 +3362.7702474 +2538.3661316 +4417.3051048 +1756.9505072 +1987.0202978 +3739.040323 +3861.9271488 +2082.2245764 +2577.3332544 +3241.6995468 +2950.561054 +2294.3031234 +3855.0828098 +2263.3197758 +2950.4125472 +1720.9835202 +2295.076702 +2129.0752448 +3135.6610546 +4072.1632244 +4117.2250926 +2494.3657202 +1379.7408426 +1670.93888 +3198.469603 +2192.2754528 +4412.503201 +2975.0482826 +1932.9845832 +1519.8762062 +3522.9132334 +3045.610918 +3219.6167742 +3983.138377 +3023.3693804 +3992.865692 +3384.8880658 +3764.8281088 +2562.220598 +2785.460951 +3307.7961436 +3169.7503522 +3617.8775786 +3083.8083028 +3856.9960152 +916.5593046 +3630.9350478 +3308.7251512 +3689.8690644 +3580.8612008 +2088.0633004 +3857.9362558 +3569.765058 +993.4879352 +1903.0600516 +2818.391889 +4116.9228268 +3728.906451 +2622.3917522 +993.5243186 +2456.18189 +2644.4587652 +3494.7880398 +4596.4825722 +3238.674442 +1719.9770378 +3217.6593228 +3872.0325688 +2512.298158 +3974.1363422 +3753.7526242 +1257.681599 +4092.044953 +2342.1979952 +2312.2959296 +3127.7693232 +3470.873205 +2316.219381 +3416.780846 +3121.5414426 +2493.3260434 +4352.0144916 +1372.731007 +3875.0557148 +4471.244249 +2623.339601 +3230.6585942 +2921.5062012 +3702.0448922 +2660.3168766 +2314.0186946 +2782.331404 +2968.6207536 +3093.3490576 +3220.633838 +2908.3910388 +3419.7045558 +3621.9055066 +2838.5160196 +4480.4692274 +3372.7440512 +3818.9220212 +3336.572897 +3216.6890424 +2373.0872662 +3085.6182314 +1014.5821648 +2483.3706836 +3231.491536 +3121.5476696 +2442.3329028 +2513.274782 +2368.3226132 +3123.514835 +3179.6787194 +2459.2040216 +3334.9775448 +3603.6683092 +3649.694701 +3138.7004396 +4447.1550618 +3801.851879 +2386.2327572 +2685.3705052 +3673.9626414 +3678.882542 +3702.9918736 +3084.4861784 +2055.2230686 +1977.031925 +2354.1753478 +2026.0846862 +2387.1909372 +2186.0531132 +2115.1727678 +3052.4876184 +2163.0595956 +2288.2851668 +2874.4948912 +1849.0923958 +2842.4752028 +1752.8538344 +2034.1724334 +3347.6971634 +2991.6216636 +2261.0559678 +1748.0671856 +2890.167543 +2609.3408424 +1666.8790608 +1626.8769348 +2250.29869 +3347.5905162 +2419.0704952 +1760.9348408 +3405.7423964 +2799.4222774 +3185.5418986 +1695.930759 +1818.8933896 +3513.9481262 +2803.4292584 +1740.9005834 +3412.7269002 +3461.8696816 +2338.2379446 +2485.2158302 +3435.7680342 +2901.4063536 +3337.8693978 +3018.4866658 +3258.6488356 +3297.6072284 +2795.49647 +3408.6342494 +3345.69478 +3512.6753642 +3296.9196388 +3042.7260946 +2160.1459626 +3265.6413834 +2829.3278948 +2528.4372598 +3488.9526954 +3202.7560554 +3239.5927212 +3141.6974208 +2486.9139242 +2423.259682 +3109.608336 +2444.2222954 +2804.3703664 +2861.5043498 +1673.9252798 +3283.6961936 +3143.7175966 +2909.5148968 +3051.719218 +2473.158137 +2932.5003704 +2589.3510124 +2704.4084644 +3257.8328188 +2190.2130546 +1856.9883306 +3337.745174 +2360.3044438 +3218.5335374 +2869.4683434 +3201.7369932 +3262.6365396 +3363.848845 +2805.445775 +2430.3845412 +3246.54284 +2690.39887 +2397.2592878 +2606.3168594 +2919.6255042 +3577.9482194 +2739.4740972 +3175.6222706 +2266.1844548 +3430.5503692 +3346.709125 +3191.642336 +3032.641505 +1763.9781008 +2780.518403 +3262.7025656 +2750.439094 +2779.4715152 +3308.5373608 +3051.5487154 +2961.3771812 +1799.9376954 +3562.863721 +2868.4392136 +2126.1807074 +3125.3921616 +2984.3185466 +2891.6919416 +1674.8994008 +2685.4013132 +2220.1538252 +1621.835132 +2986.4970172 +1997.0978922 +2836.56842 +3140.3792566 +2942.4409454 +3364.8797918 +3177.5849346 +3329.6567408 +1868.9955416 +2997.4719094 +3397.5944622 +2460.2794302 +2398.145387 +2870.6268844 +2689.5682498 +2797.4876204 +2662.2584214 +1867.907083 +3001.4911326 +2541.3914178 +3242.6208732 +2848.505044 +2675.1948558 +2752.4844202 +3564.9190896 +2734.3159332 +3110.7927134 +2676.303929 +1981.0124524 +2435.200181 +2655.3590736 +1893.0718602 +2956.6120236 +3000.436059 +3175.6777496 +3413.7724504 +3586.8491176 +2577.3649298 +2466.1987836 +3430.8095452 +2675.447977 +2804.7254704 +2766.3823706 +2871.1914064 +3077.6203574 +2992.3607102 +1004.5290692 +3000.490019 +3317.7717644 +2474.4120922 +2961.5765238 +1790.0020098 +2813.5623318 +2961.439548 +3027.5763688 +3414.7546154 +820.444281 +2930.43105 +3146.7286766 +2298.3647504 +2442.305901 +2655.4345248 +820.433048 +3407.6852788 +2841.4911864 +3016.5050784 +2927.6088092 +2732.3737368 +2659.441829 +965.4678698 +1746.9304246 +1872.0104622 +3366.8106082 +2605.3654202 +2182.1997098 +2751.3835724 +2476.3397196 +2542.3365478 +1885.9355866 +3293.5353736 +2717.3428752 +3591.0537752 +3179.5893508 +3319.7352614 +2172.1861866 +3139.54026 +3250.5126046 +2506.263781 +2539.3409042 +3337.5957998 +1855.9137894 +2932.4678276 +2744.349238 +2318.0929014 +2434.1863062 +2721.3397794 +1865.012041 +2937.6360684 +2780.5509458 +2683.4180254 +3016.2789154 +3506.7892052 +3030.5072896 +3015.6809832 +2055.100001 +2537.4038952 +1857.9736846 +2603.4468208 +1864.8737184 +3015.5294384 +2646.431506 +2884.7119644 +1747.9243364 +3277.6366754 +3196.6336566 +1986.932276 +3215.483571 +3320.843683 +3437.784335 +2966.6453284 +1036.4937488 +2789.455866 +3380.7846866 +2792.5983808 +3490.682637 +3152.3985244 +2781.273572 +2639.3264376 +2630.3200484 +2513.4130954 +2759.3626396 +2198.1768668 +3394.9020936 +3437.751322 +2655.4271324 +2340.4031494 +2789.5075044 +2248.1527622 +3015.0544306 +842.522527 +2820.4710612 +1686.8729128 +1103.587114 +843.458927 +814.4449498 +842.511294 +842.522527 +906.4810586 +907.4035412 +906.4810586 +820.444281 +902.522527 +994.519568 +907.4399246 +949.5014756 +958.5698688 +943.5524452 +983.5035844 +875.3872232 +928.4878754 +865.4657438 +984.5491346 +984.5603676 +994.52359 +900.5280062 +943.5589702 +888.5392392 +958.519568 +958.5447184 +912.5756226 +988.5262916 +996.596751 +953.6160878 +888.4891198 +959.5287348 +855.4238812 +959.5175018 +814.4799956 +987.4847634 +866.4133768 +856.5745596 +823.462572 +856.5857926 +813.4497004 +856.4541764 +982.6174852 +594.3601616 +594.3601616 +594.3601616 +725.407169 +928.5090038 +829.4882098 +638.386375 +743.4065002 +529.2972304 +716.3704512 +887.5552228 +928.5453872 +759.4351142 +742.4701002 +742.5064836 +742.5064836 +719.3159754 +759.4238812 +928.606921 +1588.8307756 +2364.2688488 +1961.8577348 +2147.260515 +1707.9294214 +2266.1520934 +933.5395736 +1326.7043994 +1158.6356546 +1360.7900378 +2065.1167132 +1240.8118178 +2327.2080436 +2168.3255722 +1512.7533798 +831.4887854 +1312.7714124 +1303.6771828 +831.4450096 +1511.9762494 +2150.0465882 +2389.4507232 +1948.055678 +2109.8722592 +1506.819423 +2206.304838 +1406.7710182 +2207.1625978 +1563.8256308 +2385.0879522 +2265.0847632 +871.5351574 +1361.6020326 +2384.4253408 +2183.1671244 +2282.2179582 +1446.7466562 +2219.9357062 +1413.7548704 +2221.2106084 +2096.254143 +1229.6503006 +2118.1261546 +2278.0662766 +2336.982138 +2194.1415464 +1390.7608482 +2319.1633862 +1361.693895 +2371.2171506 +2279.3800652 +2107.08118 +1524.8511156 +1229.7899608 +2242.082697 +2244.1028728 +970.6287182 +2180.1523852 +1388.6717806 +1505.7837682 +1322.7669962 +2370.2219012 +2206.1857924 +2321.1010812 +2168.1364442 +1910.0624948 +1514.809253 +1581.836195 +2248.1058318 +2355.2222356 +2346.1789928 +1983.9505842 +2203.1704016 +1330.7390682 +1935.1053606 +1722.985252 +1929.024714 +2367.2222356 +1971.0262502 +2055.064485 +1078.5770798 +2392.1918644 +2045.9960918 +1326.812212 +1504.8361352 +2300.183409 +2052.1189608 +1450.7667216 +2331.1754866 +2146.1031302 +2073.2747242 +2311.2330916 +2166.0817272 +1551.5976508 +2329.2099568 +2173.141212 +970.5811018 +1547.8453192 +1823.9417174 +1431.772141 +1985.0792668 +2163.2011072 +2319.0362966 +1408.6317522 +2179.0942644 +1151.618608 +1526.8779978 +1907.0125284 +1910.160412 +1867.0209838 +2162.1808888 +970.5698688 +2172.2339844 +1593.7786832 +1328.7914778 +953.4705542 +1653.7820536 +1715.9066716 +2262.247919 +2180.1436552 +1920.1521552 +2099.1996672 +1008.6443674 +1456.8435276 +1550.820486 +953.4454038 +1376.7887934 +2177.0065 +953.4817872 +1372.6227242 +2360.0628444 +952.4654094 +2051.1414694 +1009.6171508 +2072.9650316 +2256.1320452 +1128.6839398 +2247.1858522 +1247.6332114 +799.4664126 +2244.256269 +1453.9959206 +1730.9777664 +2178.2887946 +2283.2262576 +1899.9400028 +2237.1374646 +1467.6339998 +1032.5385876 +1466.9448912 +2309.2102314 +1433.7877902 +2178.2272608 +1328.6823276 +1331.6568428 +2285.3272442 +1389.7350888 +1307.4823182 +944.4926858 +2389.2827236 +798.3256296 +2017.8460458 +1324.8554122 +1824.0621006 +1712.858052 +929.565787 +1000.5552826 +2188.1375072 +1732.7322068 +957.4879352 +2147.9528126 +1250.646613 +1772.9936902 +2177.8889744 +944.5290692 +1619.8769946 +886.534823 +1564.7732638 +2027.9799522 +1907.9740788 +1110.5669098 +1485.9170058 +2152.167547 +862.4912286 +1674.9039366 +1499.8744916 +1690.768573 +1255.7499496 +1325.6503006 +700.448303 +1841.9985604 +2053.1054802 +1485.7384592 +2389.325632 +1802.8645942 +2244.970528 +1807.0427638 +1599.694882 +1690.8777232 +1937.980621 +1302.7659332 +862.5639954 +1197.6981916 +2003.105086 +2128.0799954 +1000.5525982 +1759.903208 +2336.246099 +2145.2560988 +1883.0839576 +1901.9345236 +1252.568367 +1339.7346946 +1247.6734354 +1201.6778516 +675.3439034 +675.3439034 +654.3449066 +2176.145767 +2252.0796184 +1202.7135064 +1302.7117918 +1498.8830828 +702.3911854 +2080.0709674 +1773.8896848 +926.5436554 +800.450429 +662.4115254 +944.5403022 +799.4300292 +944.4926858 +957.5243186 +943.5086694 +800.427963 +678.325811 +940.595688 +781.408232 +926.5548884 +678.3886824 +983.6127346 +675.3439034 +544.308129 +544.3445124 +984.5127512 +758.4537822 +758.4173988 +544.308129 +884.5330912 +789.4232124 +985.6535342 +559.3077946 +559.3077946 +758.4173988 +985.5807674 +1585.8562604 +1273.6149802 +1530.8227934 +1576.8096472 +1288.6233758 +2256.386043 +2266.078675 +1209.5737864 +1472.7219 +1390.6993144 +1322.6652384 +1308.7652644 +2270.2058578 +1481.856535 +1373.7302784 +1112.6301754 +2062.1898144 +1215.620734 +2268.9644824 +1554.8980632 +1410.6891444 +2018.8817006 +1984.045131 +2063.851525 +2017.1505936 +2018.9643628 +1042.5770798 +1935.9923272 +2304.1570142 +830.5013986 +1275.6822678 +2014.084216 +2305.1947018 +544.296896 +664.3907912 +674.359887 +700.4231526 +913.5344886 +1643.8630772 +1786.9828514 +1620.89471 +3324.564167 +1955.0073502 +4856.3732984 +1688.8993248 +4945.9217844 +1743.889016 +1846.0087304 +1939.9634386 +1707.908293 +1719.8791206 +4919.571655 +1844.073059 +1719.8943756 +1854.8127602 +1968.1771242 +1934.0036454 +1720.8882874 +1719.8871646 +1721.1654372 +1719.9228964 +1719.8613626 +4862.6378512 +4959.4614762 +1599.954058 +1612.8500526 +3209.3941944 +1601.8201516 +1965.8286648 +1686.9039366 +1980.2207186 +1601.7257862 +1780.7274988 +1925.9232906 +4920.4377912 +4793.307391 +4809.6000704 +4798.453338 +4948.315512 +4897.2742756 +1729.8674934 +4825.310806 +1986.2280938 +2789.4176312 +3489.8538682 +1237.6454902 +4258.113636 +4072.2683526 +4482.1993504 +741.4748508 +3892.9727162 +1507.8358008 +1504.6025798 +677.378178 +4480.4301596 +3684.1242012 +3554.849608 +2360.2153002 +3893.9811878 +2660.4094342 +3487.8608664 +3356.2728252 +3183.6095976 +3855.8986452 +4486.082142 +883.5239244 +719.4363586 +884.5330912 +911.5664558 +855.4351142 +935.65314 +887.5051034 +971.5148174 +885.568746 +886.5487404 +953.554554 +715.3864348 +873.4919572 +799.5755628 +677.411191 +993.5031902 +808.455514 +901.4981052 +901.4981052 +901.5093382 +900.5980886 +952.5341542 +3300.6521888 +4081.9608336 +3417.5625122 +3845.1251284 +2636.3656584 +1722.8949086 +4075.158868 +4076.3928854 +1371.7146292 +3685.8739336 +1593.9453452 +2738.394848 +2662.1598182 +3687.840801 +1197.6141918 +1276.6662842 +3618.7953532 +2527.2642968 +3576.8438198 +4972.6799976 +2315.3728542 +3687.9756154 +1958.0366928 +4379.3813272 +2017.0883738 +3366.8134648 +3356.9592112 +1503.768119 +1196.78292 +3302.6505502 +3355.479926 +3358.7264128 +2747.2296858 +3418.8328786 +2655.5825614 +1951.0778096 +3230.4897616 +3973.9036542 +2588.315539 +4949.6351952 +2071.2087742 +1659.8328418 +3363.604238 +2389.3653858 +3813.8929704 +1957.9930984 +2167.098105 +1286.7782292 +3415.7855966 +3356.7628722 +2449.4419932 +2609.3562788 +4735.430339 +3480.8310678 +1196.8556868 +2227.2496934 +3875.003895 +2799.4891708 +907.5014584 +1656.7538844 +3418.8248002 +3450.7517588 +3684.9110456 +1015.5603078 +2240.1760166 +3485.8122042 +2162.2098798 +2556.419595 +2350.089908 +3342.4574204 +2641.3670558 +1318.6728264 +2729.3958512 +2167.996486 +3888.8724916 +2370.1590298 +873.4919572 +3897.789875 +3752.9835378 +3451.7499084 +4335.0588592 +3388.7342926 +1782.9264026 +2863.3922234 +1087.638948 +2983.4715152 +4966.276427 +1286.7418458 +2661.3476764 +1976.0816076 +2985.5823972 +3187.8179236 +2966.6626162 +2137.0646046 +3441.7608404 +2205.0043152 +2614.3469478 +4537.3857434 +2964.5411872 +2208.1425922 +1025.5141486 +3650.9421312 +2420.1760166 +3778.1402618 +2402.1787182 +2902.4534228 +3050.6181888 +4482.292594 +3341.6852616 +3802.9297906 +2406.1293872 +4485.2055754 +3313.9389756 +3048.6692516 +3162.6332482 +4678.2662428 +1960.0112506 +2470.3139004 +2380.2466574 +3646.7152142 +3340.8393864 +2161.134001 +2558.431883 +2483.3131718 +4403.1492908 +3161.6912728 +3488.7382356 +1982.145843 +3299.5765988 +3785.9510406 +4891.5626412 +2933.4776804 +2682.4214292 +3016.5619042 +2945.4679664 +2307.1679128 +4784.4594688 +4896.6091612 +2398.3299884 +2791.3531556 +3123.5624514 +3549.7550106 +1494.6891444 +1598.8667648 +4894.5779246 +2843.4486722 +2522.233727 +3765.119176 +3394.6428832 +3416.7795084 +2530.5573512 +2686.4515714 +3151.7729824 +3147.655009 +2638.3647058 +4887.419185 +3531.8547184 +2642.3074778 +2686.1993906 +2484.3043992 +3310.8989046 +856.5130258 +2586.4506016 +2515.207769 +873.4668068 +2641.3809732 +2729.262716 +3767.0297314 +2379.0560874 +3462.958817 +3714.93324 +3227.6906384 +3502.8320112 +3496.759443 +2425.4393088 +873.4443408 +872.423941 +2347.2688234 +1175.652307 +3201.5341636 +3868.0594338 +3719.9211558 +2431.3294898 +2443.3514512 +3988.0879546 +3217.6578038 +2866.5439476 +3419.6116446 +3952.0681638 +2680.159654 +1957.0704344 +4885.6374236 +2862.2858002 +3330.9350134 +3302.5863412 +2661.489335 +3637.6544678 +2303.1491942 +3492.8013816 +3052.5657448 +906.517442 +4237.0234284 +3910.0364804 +3713.9375934 +3904.7510454 +3691.8905526 +3883.926103 +3947.0711208 +4351.1575648 +3888.8912984 +3712.0007658 +3982.9772256 +3991.1219708 +3730.9140218 +4417.1260536 +4355.1935368 +3624.0224434 +3858.9548386 +2608.3019986 +3751.0096316 +2811.3278776 +3639.1384702 +4032.3614594 +2402.4345582 +4261.230966 +1250.6362474 +3829.140579 +3780.0474124 +1306.7132318 +3665.9375934 +3951.1388026 +3742.8697758 +3998.1257952 +3603.992208 +4075.1053782 +2476.2671342 +3794.9857256 +4732.2772772 +3982.2187206 +3826.9410236 +1199.6509694 +4103.1658834 +3713.9919162 +3612.0296544 +4008.9560212 +3829.9467004 +4101.2506544 +1265.7230674 +3831.9122302 +3765.1881022 +3708.8384602 +3725.8683784 +3979.3243646 +3860.9213524 +4010.9123072 +2491.2917688 +3597.8426352 +3678.0044868 +2647.4656418 +2563.3268146 +3761.075993 +4000.2092052 +4124.0318828 +3798.9400538 +4035.1540576 +3716.9922678 +3775.809228 +2728.3019986 +4267.3597336 +3742.8526694 +3887.9944364 +1269.7292154 +3615.836093 +4173.1136694 +4200.971492 +4384.3602586 +3615.5135318 +3597.9782734 +3638.817726 +3855.1449952 +3896.0334018 +4125.6631178 +4185.1698436 +4200.4982974 +3596.965266 +3596.967769 +4622.51109 +4209.2996084 +2462.3929966 +3681.0035008 +4676.5136102 +4185.234234 +2651.4017074 +4674.0329386 +3641.0219894 +3991.011483 +3897.0091928 +3758.0666134 +3920.8775766 +3701.9303824 +2617.3598448 +4325.1576408 +3816.0725972 +4406.2367968 +4016.1303046 +3930.1004056 +1279.7499496 +3634.8266516 +3995.8787612 +2654.2962448 +3841.3355804 +2554.434465 +2747.4857072 +2734.3390508 +4043.1314984 +4594.0319578 +1221.6618082 +2537.259229 +4018.1059112 +3621.8896 +2413.332843 +3946.1573682 +3597.8942736 +3780.909708 +3600.0051556 +4135.0737028 +3748.9973528 +4327.2031484 +4013.2109796 +3718.8808274 +1565.8888964 +4075.14984 +2625.3941022 +3615.9412212 +1435.7922064 +1565.8048966 +2406.2079838 +2398.3041864 +3831.0980648 +4332.9913902 +3760.0944796 +1291.786333 +2479.1350022 +1299.6458844 +3629.044499 +3733.9621712 +3738.0792864 +1425.678263 +4275.318549 +4352.1065354 +2656.2584042 +2737.4869688 +4067.9937848 +1329.6611566 +3810.6605824 +3607.8186096 +4046.1331876 +1524.9351154 +4317.0880144 +3760.9014684 +4372.1208298 +3965.2180092 +4186.2247754 +1300.6339228 +1595.7943324 +2637.2492546 +4327.2177174 +1324.6986456 +3884.8763382 +3724.1402446 +3695.9317372 +3598.827519 diff --git a/BatchConvertPeptides.txt b/BatchConvertPeptides.txt new file mode 100644 index 0000000..2542c2f --- /dev/null +++ b/BatchConvertPeptides.txt @@ -0,0 +1,9065 @@ +; Set weight mode +WEIGHTMODE=ISOTOPIC + +; Set Standard Deviation mode +STDDEVMODE=OFF + +; Return capitalized (formatted) formulas +CAPITALIZED=ON + +; Don't display the source formula +MWSHOWSOURCEFORMULA=OFF +AASPACEEVERY10=OFF + +; Switch to Peptide Weight Mode +ONELETTERPEPTIDEWEIGHTMODE=ON + + +GKSIETGEGIDWATGEALAFGTLVLDGQNVR +MQEETEQQVALEEAEMFGSLFGVSAIEHGIQKEQEVLDVWEK +ESYVIPDELLEEGQLR +ASKFNILLDDVSITYMTFSPEFTNAVEAK +RVGAILAATSSVAYLNWHNGQIDNEPKLDMNKQKISPAEVAKHNK +HAMTNAKETESLVSKELKDLQSTLDNIQSARPFDELTVDDLTK +KGSVTSVQAVYVPADDLTDPAPATTFAHLDATTVLSR +LKLHCIRPLPQRSVWLSGYKQKARCIHSSAANGDFMSWFKRK +LIVAEAPTANPAREDIAVAAFVLPNEPISNETKLTDFEVPIDALER +SPTFVGDLTMAHEGIVGGAEFGYDISAGSISR +LGLGGGGDMPGSELADFVENADGFAEVFPQHK +GYLVAMTGDGVNDAPSLK +DGQLVEIPANEVVPGDILQLEDGTVIPTDGR +PGDILQLEDGTVIPTDGR +KRDRNKKILLVKRESKKLANGNAIIDDTNGERAMRNQDILVE +ALKKIRLESEDEGVPSTAIREISLLKELK +AMEEANPEDTEETLNKIEGDNSLEAADFR +VRAQICISFSFLLEFRPDKLVSHLDGIVQFMLHLITTVNEEK +LHFLASSGDSISAPVKKRSSTTLSRGVILPHDTKGPQDIDLDTIR +DKLDEYQAAVEQRKKEKLDSGEVDADGDIDMGEDKENVPVEKV +MLLFPRRTNIAFFKTTGIFANFPLLGRTITTSPSFLTHKLSKE +AWEPTEENPIIFNLPATVEVASPNVYADQIEYFATHITEREK +YKVLEFHPFDPVSK +VTLKSIRNIEASVQPSRDRKEKITDEIAHLKYKDPQSTKIPV +LYHKDLLSADKDAEYDEVVEIDLNTLEPYINGPFTPDLATPVSK +AQALAVAIGSGYVYQTTFER +EAAEAAIQVEVLENLQSVLK +GYDASKSEYTDMLATGIIDPFKVVR +SGVHMIESPQQAEDVAKEMLNHNLITK +YEKEFDEAYDLFEVQR +VETILSALNIAANKNTIPGDKSALFPSGLR +HYVDEVKEVIQIMDPEQEIALKEFDKLEK +FKSADEVINMANDSEYGLAAGIHTSNINTALK +IFLPDAETEVGLVTSGSASPTLNNINIGQAYVQK +GLKPIVEFMSFNFSMQAIDHVVNSAAK +RGSYVMNLLSDAAQSETWPAIKPLLTK +VTAVIGAIVDVHFEQSELPAILNALEIKTPQGK +ARQELSEILSAFEFMDAK +LELLGKLEGIDVFDTKPLDSSR +FAKDLLESVDNFGHALNAFKEEDLQK +KQAIETANKADQLANDTENSLKEFEGK +EKLLDYFKNDTFALIGYGSQGYGQGLNLR +FANILESATLNTVQQDGIMTK +FVPALTIEDELIEEGMDAFEK +KYVDEQVELADAAPPPEAK +VGDILQSELKIEKETLPESTSLDSFNDFLNK +VYVEESIYDKFIEEFKAASESIK +SEGIEFFASPVTLGPDGIEK +IIGDKWQSLDQSIKDKYIQEYKK +FIQGSLLDKEDLHSLVNIANENVASAK +ALKDAGLSTSDISEVLLVGGMSR +ALFPQTNPANHQQVLANVTQATEKDVMNAVK +LRKPIHADPPSFAEQSTSAEILETGIK +RDGQTNWYNITVFNEPQINFLTEYVRK +AVLEGKYDNIPEHAFYMVGGIEDVVAKAEK +DLHPMAQFSIAVTALESESK +ALFNLADLVEKHQETLAAIESMDNGK +LLDAAVVGQEHYDVASKVQETLQTYK +FANAVLSGFKGERDVIEPSFVDSPLFK +VTVLGAGGGIGQPLSLLLK +LKDYTESLKVGDPFDEEVFQGAQTSDK +IIGDKWQSLDQSIKDKYIQEYK +NITEVGTMNVFFVFLNK +DKATNKDSSITVAGSSGLSENEIEQMVNDAEK +THLQDATPLTLGQEFSGYVQQVENGIQR +IGVLANHVPTVEQLLPGVVEVMEGSNSKK +YTSQHEWIAVHQDKTAFVGITK +ILVPEGTKDIPVNKPIAVYVEDKADVPAFK +LAAQIFGSYNAFEPASR +GALVYVEADAANYVFERDDGSKGTTLSLVQK +YKVENEDQYKAYLDELKDVR +NDTFALIGYGSQGYGQGLNLR +YGSLHGSVLGLEVVMPNGQIVNSMHSMR +DATSDKITQDAAEAIKK +SSKVEFEKPLLLLSEK +GLVWEGSVLDPEEGIR +NVEKLNQAEVVAVGPGFTDANGNKVVPQVK +FQTAPNKFEALAAHDAIVECSGALNTLACSLFK +FLSQPFAVAEVFTGIPGK +GSYVMNLLSDAAQSETWPAIKPLLTK +FISEVENTDPTQER +QFVESEKLPVIKPLPLHLESPVPSDIDISR +VVGDVTFGPMLAHKAEEEGIAAVEMLK +KEYWSYTFEDSLDLLGKLPVIASK +VTAVIGAIVDVHFEQSELPAILNALEIK +AALNAGASHAVTSNHWMEGGK +LGEGVNVEQVEGLMSLEQYEK +MISAAVDQLAELSPLR +IIGETGGKNFHLVHPSANISHAVLSTIR +KGALVYVEADAANYVFERDDGSK +GINSSYAVWNDVTGK +DIGGSSSTTDFTNEIINK +NAPHSLEDLITSSNWDTR +IPSAVGYQPTLATDMGLLQER +LIDEYGDDFAKGYDASK +ASLLKGVETLAEAVAATLGPK +KGTMKDPIIIESYDDYR +IIPDFMIQGGDTDLTNGFGGK +TIEQSPSFGKFEIDTDANVPR +LLDAAVVGQEHYDVASK +TVIGEVLLEQAYGGMR +AAIEDGWVPGKNLFTVEDAIKR +IVKEEIFGPVVTVTK +VETILSALNIAANKNTIPGDK +SADEVINMANDSEYGLAAGIHTSNINTALK +TAQNLAEVNGPETLIGPGAK +EVAAFAQFGSDLDASTK +DLFEYTLANQMLTAMAQGYAAEISAR +HIKELVPIIYTPTEGDAIAAYSHR +FSHLPMTVPIKLPNGLEYEQPTGLFINNK +YDNIPEHAFYMVGGIEDVVAKAEK +YTGKPNPSTGKYTVSFIEGDGIGPEISK +SAYVTTEEFLDAVEKR +YFQSMPYHVDHTTGLIDYDNLQVLAK +YDNIPEHAFYMVGGIEDVVAK +GAVELAHAVVDATKEPK +VLFDVSKETVELESEAFELK +STVAQLVQTLEQHDAMK +LSINGIGKDAPTFQESALIADKLLSVMK +SQVFAQHPDKSQLDLMK +SHLPMTVPIKLPNGLEYEQPTGLFINNK +VLDEADRLLEIGFRDDLETISGILNEK +DFQSYIVSSLPGSTDKSLDFLNQSFIQQK +VNVIGGHSGITIIPLISQTNHK +VLQQSISEIEQLLSK +HLDETTITNAVDFKK +QSTKVQGSVIGIDLGTTNSAVAIMEGKVPK +GPNGAAVGVGAQHSQDFSPWYGSIPGLK +YTSQHEWIAVHQDK +YTVSFIEGDGIGPEISK +LQGTKVEEGRDIINK +RQIEDLVPVYAVLDYTNSEIIKR +GSIDITTTNSYEKEK +SEYTDMLATGIIDPFK +QIIENAGEEGSVIIGK +ITSTDPNADYGKNLAQLLGYENKDFIDLMR +KGALVYVEADAANYVFERDDGSKGTTLSLVQK +VLIYGAGSAGLGIADQIVNHMVTHGVDKEEAR +NKHVEAVKDRIDSVSQLQNVAETTK +VQGSVIGIDLGTTNSAVAIMEGK +LHSELKLDELQTDNTPDYVR +MKLGEGVNVEQVEGLMSLEQYEK +GKTLYFSHGFSPVFK +FVVTAADVIHDFAIPSLGIK +SLLSVASDLMALTLLKPPAHYGADIVLGSSQR +STNGDTHLGGEDFDIYLLR +TIFEAENIPIDWETINIK +FSGGSHGFLIGHIVPEAAEGGPIGLVR +ISSIQDILPALEISNQSR +INFSVFPGHQGGPHNHTIGAMAVALK +AIDEQFGSLDELIKLTNTK +KAFHELGIPVIPNPSHIVPVLIGNADLAK +FSINPFDDIAVEEAIR +ADQLANDTENSLKEFEGKVDKAEAQK +TAFKPHELTESVLPAAR +VRDQITSLKELVAR +AKNGAGSATLSMAHAGAK +WENMPSTEQQDIVSK +QTISNFFGFTSSFVR +LATAVILQALEEGTAR +RLDIEKEDPDALTPEEVKR +GMALNLEPGQVGIVLFGSDR +ASYPEHTIIGMPALSPTMTQGNLAAWTK +IHPIGELSSEEEEMLQK +MHEDIMKDLLDKIEHVPLPENEIIR +ELSKEYPDLTLETELIDNSVLK +NVQFSLEAAEILQKK +EYPDLTLETELIDNSVLK +TGDLAGTATTSSFTEAVIK +HLNDQPNADIVTIGDKIK +KSTSIEVPPMAESLTEGSLKEYTK +RGYQQNLWLFGPEK +LMGLDLPDGGHLSHGYQLK +DLLESVDNFGHALNAFKEEDLQK +LREEVKGDYSKETIEK +ITPTPGHTNDLSDILINAVDDVFNELQLPR +SQFVKENPTLRPAEISK +SSLKTELQTASVLNR +QNQYSPLATEEQVPLIYAGVNGHLDGIELSR +ENGHSPSEAFNETVEEATQSLYPLIGK +SDAHDEETFEEFTAR +NKLPFLYSSQGPQAVR +LSSTSTTLLNLLSGLTAGLAAAIVSQPADTLLSK +AGTVWINTYNNFHQNVPFGGFGQSGIGR +GFTPEEPDGLNNALKDTDMVLIPAGVPR +KINFSVFPGHQGGPHNHTIGAMAVALK +TALHDLHVSLGGTMVPYAGYSMPVLYK +TMGYSDLNAFIEELVPPNILK +NLAQLLGYENKDFIDLMR +YVDIGKNEGATLITGGER +MQEETEQQVALEEAEMFGSLFGVSAIEHGIQK +KPIHADPPSFAEQSTSAEILETGIK +SHGGAPNVKPGQSLPKEYTEENIDFVAK +GMDELSEQDKLTVER +DALGNPIDGKGPIDAAGR +SEYTDMLATGIIDPFKVVR +GVNEELASFISAYSEFKENNEYISWLEK +FKDIFQEVYEAQYK +IEQIKGSIDITTTNSYEKEKLQER +SREDDDEVHFDKTTFSK +SLEFNSQPDYREKLEK +NVTMIDDLIHFTLK +KYQKGEETSTNSIASIFAWSR +TFEDSLDLLGKLPVIASK +IEQEQVPGGAPGETVKVPR +ELVYHGPPFSNLDEELQESLEAYLESR +ELKDLQSTLDNIQSARPFDELTVDDLTK +SKFEQLGIHYEHR +IGSEFTEHTSANNNR +IASDFGVLNDAHNGLLK +VTLELGGKSPNIVFADADLDKAVK +ALLNNSHLFHQMHTEAQKR +ELVTAPLDGTILEGVTR +VKQPVVELDGDEMTR +DATSDKITQDAAEAIK +LDKFTDGGLFTLFVR +VVNEPTAAALAYGLEK +YDVSLPLKDLYSLVEATNAR +VVDALGNPIDGKGPIDAAGR +YSIIVAATASEAAPLQYLAPFTAASIGEWFR +GTTLSLVQKDINLLK +DLTHVEPPKDLDVILVAPK +GISELGIYPAVDPLDSK +RTGNIVDVPVGPGLLGR +VQGGEEVNAEELKTKTEELQTSSMK +VQGGEEVNAEELKTK +TQYSLSHDPSLKGVPR +LVLEVAQHLGENTVR +GLWHTPADQTGHGSLNVALRK +DVARVCHAHPTLSEAFKEANMAAYDK +VALTGLTIAEYFRDEEGQDVLLFIDNIFR +EMKETGVINLEGESK +IAVVPQGGNTGLVGGSVPIFDELILSLANLNK +LLDYFKNDTFALIGYGSQGYGQGLNLR +SAAAGSLIGIGEIVLLPLDVLK +FTVTLIPGDGVGKEITDSVR +TIKPILSSEDHDVIAR +ISIFYNDPVSSLSFEPSEKPIFNAK +SEIPEHVIQLLDSLPK +STTTMGLVQALSAHLGKPSIANVR +GMDFPNVHEVLQIGVPSELANYIHR +NPNPSKPRPNEELVFGQTFTDHMLTIPWSAK +TTGFDITVASELMAILALSK +ILGAHIIGPNAGEMIAEAGLALEYGASAEDVAR +MMGNEGLPFSSVIAMLNSNYMMTR +NALKPVFQDLYESTKNGTETKR +NILGGTVFREPIVIPR +TDEILRNEVFHMHHSETAMLR +LRITPTPGHTNDLSDILINAVDDVFNELQLPR +IKGVSDEANLNETGR +ATNKDSSITVAGSSGLSENEIEQMVNDAEKFK +MGHSGAIVEGSGTDAESKK +IINVIGEPIDERGPIK +NFHLVHPSANISHAVLSTIR +VIEDAKKDPELEILYGGQYDK +NVAAQAIRSSLKTELQTASVLNR +LSDAAQSETWPAIKPLLTK +ELEDFAFPDTPTIVK +LGLFSYPVLQAADILLYK +GGASEVEVGEKKDRYDDALNATR +KKPIEKLDIAKDFPEINIEPQLK +LLQSTQGIPSYIVSSK +KAGQTHLGQPVFASVK +EYWSYTFEDSLDLLGKLPVIASK +IIGDKWQSLDQSIKDK +QAVVNPENTLFATKR +DEEGQDVLLFIDNIFR +DSSITVAGSSGLSENEIEQMVNDAEKFK +NAVVTVPAYFNDSQR +EMSVDALQNYLQVK +IAGEKWQNLEADIK +QDAGKDEPVNILNVCLAGGIAGMSMWLAV +VEFEKPLLLLSEKK +QLAYGEDVISKEFHAVQEEEGEGGYKINMPK +FELTEEDEEVSELIEELIDTR +ALACGNNERSAYVTTEEFLDAVEKR +GVPQIEVTFDIDADGIINVSAR +VTVVEFQPQIGASMDGEVAK +QTLNDFIYSVEPNSTELLDWFKEWTGTSIR +SASPLPASKRPEPAPSFNVDPLEQPAEPSK +IEQIKGSIDITTTNSYEKEK +PYLDVDLKYYDLSVESR +RPTSAYFLYLQDHR +VTPVDGLEGTVKEDHILDVK +VDALGNPIDGKGPIDAAGR +FSLVETPGKNEAEIVR +FDRGFISPYFITDPK +SDAAQSETWPAIKPLLTK +YIPQAGIPPGVINIVSGFGK +FSTVDEVIAMANDSQYGLAAGIHTNDINK +ALKQYDLAIELENKLDGIYVGIAPLVGK +LLQEVASKTNEAAGDGTTSATVLGR +VTGADVPTPYAKELEDFAFPDTPTIVK +GSALSSPYLSLAAGLNGLAGPLHGR +NYDGDVQSDIVAQGFGSLGLMTSILVTPDGK +PVFQDLYESTKNGTETKR +SEQAKIGLAQLKLQMEKIDEAIELFE +LVHVIDDIPLVKDIEGTHGVVIGGFK +ALELYGLDPAK +SLQDIIAILGMDELSEQDKLTVER +DEVVVDNFDQKLGVDIIR +KKLYSEYQK +ANNFVYVSGQIPYTPDNKPVQGSISEK +KISSIQDILPALEISNQSR +AVHETIAEGK +ARVALTGLTIAEYFRDEEGQDVLLFIDNIFR +AAPLQYLAPFTAASIGEWFR +HIYQSAAAGLK +FGVPMGYGGPHAAFFAVIDKLNR +DNGKHALIVYDDLSK +SSCYVANDAVLSLLGQK +IGRIEFELYDNVVPK +QLLELQSQPTEVDFSHYR +DLAAATAESAPNAAILVISNPVNSTVPIVAQVLK +GLGVGTPSEALLYVITSPVGPYYK +LGNDDEVILFRDAEILAK +LVVLPNHEEGEVVEEEAEK +IRPAILEDGGDIDYR +KIDPVNSTLKLSSLDSPDYLHDPVKIDKV +KQAIETANKADQLANDTENSLKEFEGKVDK +ELPKAEGSTEPLPEALFWLLLTGEIPTDAQVK +DLMNDVMSLGIHRLWKDHFINKLDAGK +AVDALVPIGR +YVDEQVELADAAPPPEAK +VFGLNNIQAEELVEFSSGVK +PSLLKHNEIVTFFHELGHGIHDLVGQNK +DDQVDLTVTSQFRQGDRLMFMLSWVL +LAAFSKIKVKQPVVELDGDEMTR +LTKVRNNLFEVYLRNSHLPDPCGFVKR +LIEQPFGPPK +GSQVAVEKVIEFLSANKK +EHVKSYVPAEQRAKQKEAWYSFLFK +TVDIKTDNKDEEKFIENYLKK +IIQVGARPDSSTYVR +ENTEGEFSGLEHESVPGVVESLK +SITELLNSKTLVKTQFGQVFEFCENKVQK +SHLIPHLPKHDVVDMITGIGGSK +TVDYVIDFYSTDLNDANSQQQPLIYL +QTYKSLQDIIAILGMDELSEQDKLTVER +AAIEDGWVPGK +EIVSRFKTETGIDLENDRMAIQRIREAAE +YIAPEKKLGPLQGSMPPELVCPPY +PLFKAAPETGIMELENNGLITVSR +IKIAQKFLYTTIGSQRLLKQDASLPELKK +IGVLANHVPTVEQLLPGVVEVMEGSNSK +KDRLLEYSLLNYVDVEISRLTDYQLFL +NSPLGERGSGAMSAIKARAPVLGGNFGVWGGLF +EITTSEEIAQVATISANGDSHVGK +TSYITPVPGGVGPMTVAMLVSNVLLAAK +VGGASEVEVGEKKDRYDDALNATR +NTIPGDKSALFPSGLR +VQETLQTYK +GLILQSYEANSTPAQHVYAK +FQACLTVSLTNAEEFASTSNGSSSENGMEGNSGY +GYFIKPTVFGDVKEDMR +YENRTIYGDIDFRYHGVKLHLR +YFQAPYSFTGEDVLELHVHGGK +KAMVRNHPDRGGSPYMAAKINEAKEVLERSVL +QGPKAKDVLEPLLSKTAPGKDLKELFFGQR +LLAAVCNPEFIDTFWCELTPIRVSLK +LYHRGEQGAIDIKGGNVNRDNSLRPFMFDEL +VVDALGNPIDGK +THNLGLQCTGVLFKVPHPNGPTFNCTNLLTK +YTGKPNPSTGK +LGLKFDDLIAEENPIMQTALR +DAKEALNAVHATVKVMGDEFNWSEK +LQLPNELTYSTLSR +VADRVNAGTVWINTYNDFHHAVPF +FSLVETPGKNEAEIVRR +YVNLSLVANPSHLESQDPVVLGR +TKPKSIATNTGTKDLQMVSLTLRVLHR +SDEAKSEESKENNEDLTEEQSEIKK +LKDTVASFK +SDIIMISKSNMKMYSEEEIKINEQLETLR +ILTLMNNTIEKTANELKFIAELKAK +QMMAAQVSLAKQREELETTALSLPR +SPVFIVHVFSGEETLGEGYGSSLKEAK +HSGQAEGYSYTDANIKK +SELIEELIDTRIRPAILEDGGDIDYR +ARPVITDLFKKIPEQNSSKRGLAV +MVLPRLYTATSRAAFKAAKQSAPLL +NSSIDAAFQSLQKVESTVK +PNENVIRKFKNVDVSVAVATPTGLLTPIVK +DTPLHTPTPANTAATATAGNIGVGGISR +FNSTGPNANDVSEIQTQL +VIEFLSANKK +DMTVLANEQVDAQGRSWRSGAIVEK +KLGLVTGPIKYGVKILASGKFHYNLPIALE +QTDIINKVKSPKPKGVLGIGYAKGVKHPKGSHR +RESLGDKTTAFLKIEQLHPFPFAQLRDSL +NLFTVEDAIK +ENTFQKPYSDEEVTK +QDIIAILGMDELSEQDKLTVER +LFEQLYK +ELLDNQDAVILSYGCTGDRKLNIPGELGTKGVF +IEFLSANKK +STPANQTSAIAIIRISGTHAKYIYNR +LEKELDTIR +EWKRIKSGKISDAEVNRAKAQLKAALLL +PAASIGTKDVSGEGVQQSLLKIIEGHKVE +QIEDLVPVYAVLDYTNSEIIKR +IQQYQLTDVLTHRVLNLR +GVATDLSHIPTNSVVK +MSRASKITFAASCLITAATVVGVHYVQEMER +AEAVAATLGPK +LLASAMEK +LRRKRENGLDIHLTNLETIEITSLGK +RIINKTPGLNLSISERASNRLAEIYR +ESELLGGTFK +ILNALESTNSMDRGDLLLPLPK +HVVFGEVTK +EFWTWNKNELINLSSHYKTGEK +RYVDYKYQGLENMRKLTLFLK +FSPYSLNPKGPITLEGLKSLAALRYTL +INAVFLIALCVSILIEALQRIIAPPVIENPK +HAHGDQYK +TALGHANPKVAEILHHQANKLVHSSNLYFTK +ATAVILQALEEGTARIEQEQVPGGAPGETVK +NVLIEQPFGPPKITK +CNIVMTLVDNWLEDYINLYNKGKVKK +LFSRVGSADDLYNEMSTFMVEMIETSF +LQGACTSCSSSEVTLK +IRDKQRCKELILKQIR +QTGIAGKPVSAVYIVK +VETDKSQIDVEALDDGKLAKILK +KDHGLWGKKTLITDPISFPLPPLQGR +DETTEGIIMLGEIGGKAEIEAAQFLK +LLLLGAPGSGKGTQTSRLLKQIPQLSSISSGDIL +VGDQVLIPQFGGSTIK +PPNALKPAFGPPDKVAAQKFKESLMATEKHAK +MSDALALLRQQQQTSVDVELLHTMLAR +LQLGQLYESGNPVNDANLLGAEVLIK +RFVDESLLSTLPAGK +MFLPRLVRYRTERFIKMVPTR +EQVSGTTVFIRNKRTKSKSSLSPLAQR +HLSETKLADLISKYDIVR +GILMTASQVVTYDVFKNYLVTKLDFDASK +LGKKVFFDPAVNGTKIGRIEFELYDNVVPK +MESEAFDYLDAPIQRVTGADVPTPYAK +ELKDLQSTLDNIQSAR +EHRKDFANTRNLRILVQQRQAILRYLK +TIALEKGISLKDVHGTGPRGRITKADIESYL +LADGLFVNVAK +DVIEPCLKY +NIAFGIFYNSGEVCCAGSRIYIQDTVYEE +SPDSNEFWEYPSPQQMYNAMVRKGKIGGSGEV +QTKDKFLNYFFGKDKKGQPVFDASDK +GLYIDAGSRFEGRNLKGCTHILDR +NPSGAVAAGSK +KAALLLSLDGSTAIVEDIGRQVVTTGKR +MKKVSDVLNASRNKHVEAVKDRIDSV +QKMYGGAKIEVSPEAQKKIDTYKK +PGYGHAVLR +IIPDFMIQGGDTDLTNGFGGKSIYGSKFADE +RKQKNEAKQATLKASTDKVDPV +QKALKEIAPSGSNGRLLKGDVLAYL +MLMLLMMILTNNKVFMETLYY +EYKGISNQSGNRFGGISFGLTAEDIKFF +MTIVLQGQDGVVEQAR +STGRVLGSVESGNSATISEKTASVNKQQQLQE +GVNFVASK +QKVSVILIGHSLGGSICTFAYPKLSTELQK +LREEVKGDYSKETIEKYLWDTLNAGR +SLFGKDPSK +AEAAAASSGLK +MWRLTRKIGTRIHISNQLSPIFNKAIGTVPV +EVNSDLYGER +QKAFSYLGYVTATTTIMSGVSYALKR +SLLALQGPK +NLLSGLTAGLAAAIVSQPADTLLSKVNK +EQILFSNLENKMKYTNKIPNTSK +KSPHNRLVVSHQTRRHLMGFVR +MFKSVAKLGKSPIFYLNSQRL +FESADPDILMTIISLSTNQKV +SASSGMVSETSSEVSSINSSQPVSFSK +IIEGHKVEITVKRPVK +VVDNFDQK +TYMGWWGHMGGPKQKGITSYAVSPY +GFMGPVIHEQSFDKLVK +DIPGAQDEMVLPPAPPKNSDPSILR +AKDFALQK +ATLKEVEMR +AYAQGVSKK +LKDNRPLLSDSTISQLREGLFGMLSILNDSL +DNVGAKMDSMDLEREKGITIQSAATY +APTVKFTSFLCSILKNEFKKDLPILEFHGK +MFNGCIEAAIRRSLVFAPYSDMIWLETK +LVLLAQIEQWKDFETLFAKYMDR +LIPVDTEKRIRISFTSEVSQILPWK +MSGTDDKAGGPNILSR +TFAFLIPIFQHLINTK +GRDDDDDDDDEESDDAYDEVGNDY +FPHLPNELKRSRDCLYMDNRNER +NSLKEFEGKVDKAEAQK +IVQDLKSQHISVNK +LNQAEVVAVGPGFTDANGNKVVPQVK +RDGYAKWFAGNLFSGGAAGGLSLLFVYSLDYAR +FGFDDNASFRQEKIYSWRDLSQEDPDE +PYSAEDAR +NMEIWK +NYIGYSK +WNDVTGK +GGFIMALK +IMDQLNNK +MFHEATQK +HELIHR +TAFVGITK +LGVDIIRK +DLLAPYAR +LLQEVASK +GSQVAVEK +KDTVASFK +VIFQGFTGK +AKKEFDEK +NLQQVTKK +GSIVENVKK +NVFKDGK +VAPTTGVVAK +LHPVVTPK +KYESLSKK +IGLFGGAGVGK +IFASPLAK +LFLAQYR +IIWDKIK +DVAAPVTLK +AIQEYNAR +INGIKYK +NKGVYNPK +LNLELLLK +LSGPHSVK +VNYGNWSK +ALSADLAAR +PPQNDFKE +THFSYTK +VENIVDKL +VFNPLLK +PGGGTALVK +ISDINDDDSIHGLLIQLPLPR +GVETLAEAVAATLGPK +AVEFAEQLLANPVMKPIGLAAR +MKETAEAYLGKPVK +TLEDELEVTEGMR +AKDDAVKQLTGGIELLFKK +VETILSALNIAANK +LIDDMVAQMIK +TVFIQELINNIAK +AHGGFSVFTGVGER +DDLFAINASIVR +VTGKKELVTAPLDGTILEGVTR +KKLILPYLDVDLK +HDVVDMITGIGGSK +VLDTGGPISVPVGR +VALVFGQMNEPPGAR +RSTVAQLVQTLEQHDAMK +GRNVLIEQPFGPPK +FVDESLLSTLPAGK +NLVALKGPLATPIGK +ANQEVLEWLFK +LAGVQGSGWAFIVK +SSKVEFEKPLLLLSEKK +TGNIVDVPVGPGLLGR +VLDEVVVDNFDQK +TAVALDTILNQK +VIDVIKAFDKNSPNIANK +LGANSLLDLVVFGR +DAAVVGQEHYDVASK +AHQTELTHHLLPR +FKTETGIDLENDR +AAVEEGILPGGGTALVK +AVMDLLGSELQNK +RSVHEPVQTGLK +SRLLDAAVVGQEHYDVASK +EHGKTVIGEVLLEQAYGGMR +NALKPVFQDLYESTK +GLGNPLLYDGVER +HALIVYDDLSK +AFDKNSPNIANK +KLFGVTTLDSIR +KVYPSAVLHFEDFGVK +TRIPDIDLIVIR +KLILPYLDVDLK +PMGYGGPHAAFFAVIDKLNR +GIRPAINVGLSVSR +TLLFSATLDDKVQK +AIGVLPQLIIDR +KMDEAEQLFYK +DNGLNVIIGVR +GKDLSPAINYTK +IVALKDIVPPGKR +VEFEKPLLLLSEK +GDVDLVINYLK +AMEDDVDEAVAAAK +LSILFEDVYVK +DRYDDALNATR +SNHNELLTEIREK +IINVIGEPIDER +FLSTDGEMLQTR +DAGQIVGLNVLR +TKTEELQTSSMK +ITKADIESYLEK +AQFETLTAPLVK +TAVALDTILNQKR +TIAMDGTEGLVRGEK +PGVVEVMEGSNSKK +TIAMDGTEGLVR +QLDIYANVALFK +SNHNELLTEIR +FIGDSVAAIGIPVNK +AQVKAPGILPR +GSIDITTTNSYEK +IGEVLLEQAYGGMR +FIQELINNIAK +GELSKELLASLK +NLDVEATETGAPK +RLPEDESYAR +TAESTPLSALYVSK +LVGDVDFDSVKEK +STLDREYITLK +TTYENVDLVLIR +PMNTSASPISGGNLR +GLWHTPADQTGHGSLNVALR +FAEIIPAKAEEIK +DQITSLKELVAR +VTGADVPTPYAK +DVIEPSFVDSPLFK +YYTITEVATR +SQTDAFYTQYK +NGAGSATLSMAHAGAK +GALVYVEADAANYVFERDDGSK +RVNDLPTAIR +AKDVLEPLLSK +NLSLQTGTKPVLK +SSIVGNPIASLLK +LIDEYGDDFAK +GNPIDGKGPIDAAGR +NIDLKDWDLLR +AVRLEATDYATR +NGTAASEPTPITK +KKIDSLENKIDSMTK +QAVVNPENTLFATK +SANLSKDQVSQR +VVDLLAPYAR +FANAVLSGFKGER +ANLLSSSNFEATKK +IRDFDPVSGILK +TPQNTITMFRPDK +NVLIEQPFGPPK +AYLDELKDVR +VIVAGTSAYSR +IKVKQPVVELDGDEMTR +SLINNHIIGVTEGHLAVLR +YKVENEDQYK +FGLEGLESVVPGIK +TRDEIQHMR +AQPTEVSSILEER +IGEFESSFLSYLK +KLTSDDLNYFK +PALEISNQSR +QVAEELGIHSHELELYGHYK +LVKEGELVKR +EKGELSKELLASLK +LARDELYMGNK +SQGWFVGPTVIK +VGKEGVITIR +TFDVINPSNEEKITTVYK +LFGVTTLDSIR +SFSTEKYKELVK +YGVSAEVINLR +AQFETLTAPLVKR +WVWNLFEDAFEK +SIRPLDTEAIIK +ELIIGDRQTGK +DEVVVDNFDQK +SKEISDLYTGVR +HSITLIPSENFTSK +NIEKGVNFVASK +DNGLNVIIGVRK +SKGGFIMALK +YLWDTLNAGR +SLEFNSQPDYR +IPDIDLIVIR +WQNLEADIKEK +RVVDINDR +VLAVGDGIAR +LTSDDLNYFK +SSAGFADKIDGR +FGFDDNASFRQEK +SLVESTHAVSIGSAK +RGSQVAVEK +YYDLSVESR +IYSFDELDPAAKK +VNGMDILAVYQASK +EKLEKELDTIR +IIENAEGSR +VSLQDIKDFADKVYTK +DVGVAVVESPGYLGQALLDQFAK +AGPLHGRANQEVLEWLFK +LIGNFTLAGIPPAPK +NLFTVEDAIKR +VQHDPSVHTNQL +MPLPLVHAFGVLKK +IQFGGDEVVK +NLVSLINGHPYLEVAHVSSR +LHNLDPFIFWK +AIWNVVNWK +TREPLQPRPPVKPLSK +NIDLTQEQTSNEVTTSDPQLL +FLSQPFAVAEVFTGIPGKLVR +RGALDWYPIFK +GSGSEDSFVKR +VLDEVVVDNFDQKLGVDIIR +PGYGHAVLRK +PDGGHLSHGYQLK +GGASEVEVGEKKDR +GALDWYPIFK +GRIPEDTWDFKK +VQGGEEVNAEELK +AASVALDSLINFEAVKYFNNE +SPNIVFADADLDK +KLNLFLSTK +LNHKVTDLR +EGTDISIVTYTR +VPMTEEELDNMTLSLINR +EGVYEAVESLKR +AEIIPAKAEEIKK +SVHEPVQTGLKAVDALVPIGR +GFISPYFITDPK +LIDTRIRPAILEDGGDIDYR +SNHNELLTEIREKGELSK +LPFLYSSQGPQAVR +TDGKNMVTNTRSLRQLIR +DPLNAKNGIQYRDIVLAR +VVNEPTAAALAYGLEKSDSK +ELDTIRNMEIWK +EFLVPTRTKRSDGKPSFYAL +QKHSITLIPSENFTSK +SLNLTLRK +KIDTYKK +LATVKQPSIGR +EVAAFAQFGSDLDASTKQTLVR +LSAHPDVKK +LEVAQHLGENTVR +IINVIGEPIDERGPIKSK +QPVVELDGDEMTR +SLDELAPLMMTK +HLKEQLEK +NALWNRAFYSTRKATK +LILPYLDVDLK +ELEDAKNIVIAK +SRLNEFKK +ELVRDNK +NTKSKTVFNELEDDADDDDE +LMSDDKRHELIHR +IREAAEK +HFPDYELFK +TLEPFVYEFVSSK +KTLDSFLDVGKLK +AIEYADEKLK +SKPMPVASFIAGTVAGQMK +IQDLYLR +LNLFLSTK +AVEKVIEFLSANKK +LRDDTLPK +LLYDEIRSELK +DFKLEDSGSDSK +YSEGYPGER +GFGREEFSQVAK +GINSSYAVWNDVTGKAHEK +WEKPIIIGR +SVHEPVQTGLK +AAPKKEAAPK +GLSQISNEIKELVK +MVHWNSIKPEIIDLLTK +VLVPYSAEDAR +IDFYATWCGPCKMMQPHLTK +VVPGYGHAVLRK +GDKILIRDSKKVANQK +ANGHLQILYGSLAPGGAVGK +SIGTKEETKR +FFLGEENRVR +QQSISEIEQLLSK +AQRFYSANLSKDQVSQR +LENSDFVSYADEPLEAVAIVK +MPLPLVHAFGVLK +SLHEMKER +YHSEPHSIDLFHDK +VVGIEDIEKLEDRR +IAIDKPIR +AVHLHHLKLAGEIFDLKNR +QATKDAGQIVGLNVLRVV +SMNLLQELSPR +SLLPPLDNIINLYDFEYL +APGFGDNRK +NLLAEAK +FAEIIPAKAEEIKK +LSFKVDSTELIVK +NVIQDLYLR +SESTLGREATTYIAQGKLL +MNKSAARICLPTFESEELIK +IGKFPFAANSR +TQLRNELIK +IRPAILEDGGDIDYRGWDPK +LQEVASK +PRTRSREDDDEVHFDKTTF +FITRLNNNISTRK +LMSDIRMLLIAYNKIKSKK +LEATDYATR +KNVSSSDAR +DAEILAK +EPLKIVYLNEK +YFSHGFSPVFK +NKQGSPSSSMHDPR +MTLWDGLLNNGRVMIIGATNR +ASALLPGRSKSKPLYISSNK +VLELLDSPDFKK +VYTKENLEVSGENVVEADLKR +MDEAEQLFYK +LTDILTEEVEKAISK +VGDSIFNVHGGTAIGWMCLEGTK +RSVSKTLFSQGVR +SSGLVPDAVVLVATVR +SVDVKITSKCSGK +AFGAGGWGLVPR +EFVQFHPSGIYGSGCLITEGAR +DVASWIVDFPLFSPVIIEDK +QGPKRPTSAYFLYLQDHR +PGALTRFLGGLSDSWNLTL +VMEKDKLLQDIK +LSPLLVKQAEKYEAELK +PVYWGTETRTALAEGELE +LYYNKKSKGENVK +RHLNDQPNADIVTIGDKIK +IVSNQSKSSKASKSPK +QIRNTSKDLQEATGQLTR +VKEFNLHK +KGQKLQDYTK +EGELVKR +VFEEEGAFIEALERGEIK +YRDKALQNLRDSLPESDAR +GDYSKETIEKYLWDTLNAGR +LPQNLKFVVLNPTQSGLVK +MKFLLQQIRNMHVKPIK +KDEKMLRQIQDKFGGSVKLR +QLSDALHSHK +SHSCVKPKSACSLVKPVHHLVK +LAPPAAASYSQAMK +NAESLSVLDIENEIVRLSHK +IKEKNKSLVESTHAVSIGSAK +KNAETKNLDVEATETGAPK +VLKTISKEGGIDNYLTKE +YALHVTGTASSLKK +ISSTLLQRSKQLIDKY +MSSDKFEHASQNARYLHDIL +YSLDYARTRLAADARGSK +GKEIPYELEKK +YKQRQILSHATDLV +LVGIPAKR +SLFKEGR +EFLDNGRVQVTR +MEEPFIWPEEPR +LMSDDKR +SYYMNNTIIYDKNHK +LEAQLKLNALPNYMRSTQIK +RMLPSVILDSGIK +VIDDGESSRYGGFITKEQR +GRNVLIEQPFGPPKITK +QGFGNLPICIAK +SKVIVRFNPFGK +VVEETELMAARTSNPAGSWK +TYVGATFQIAKQLSPIFDDR +AALLLSLDGSTAIVEDIGRQVV +LLVFEKQNSLDSALNSIRL +IARNMNLPTKLR +DVFENTLRK +DINLLK +KQVSKK +GAPIERPK +KASGKLLR +YDINDNLK +AQGVSKK +LFDKLK +NTTIPTKK +LTQLLK +HVGLDIK +YIDSAVK +KIKEIK +KLKEIK +GKRNNVQK +VIVVHK +VVETVK +IFLMDRR +VIDVIK +ELLASLK +APGILPR +LIDYAR +QEVASK +SPVLSK +VFEALK +DISLGV +LQKEIK +VQSELGNPK +QLSLLLR +EIQKLE +FGGAGVGK +GMDIVK +DTVASFK +HLELSQK +VGSAAQVK +NTILK +NTIIK +EKLEK +EQLEK +KGLSSGQK +LYDLK +YRDYPR +SSHKELK +NEPVKPFR +GDVALVSK +IVGLSELPK +TNILESALK +SLKGVK +REYLER +GGNAFAK +EQLKE +PGPQQKLSK +FTQAGSEVSALLGRIPSAVGYQPTLATDMGLLQER +SEIPEHVIQLLDSLPKDLHPMAQFSIAVTALESESK +HVGLDIKGQNVANPTAMILSSTLMLNHLGLNEYATR +RDGQTNWYNITVFNEPQINFLTEYVR +GYDASKSEYTDMLATGIIDPFK +LIEQDKHLVPQGNGYSLYIRPTMIGTSK +EITTSEEIAQVATISANGDSHVGKLLASAMEK +AYAQGVSKKEYWSYTFEDSLDLLGKLPVIASK +DILTKEAFENAITYVVATGGSTNAVLHLVAVAHSAGVK +LIDEYGDDFAKGYDASKSEYTDMLATGIIDPFK +LTQLLKQNQYSPLATEEQVPLIYAGVNGHLDGIELSR +YSQAPLRVPITLPNGFTYEQPTGLFINGEFVASK +KTNHLITVESTFPSFGVGAEIVAQVMESEAFDYLDAPIQR +AVLEGKYDNIPEHAFYMVGGIEDVVAK +VIEFLSANKKEITTSEEIAQVATISANGDSHVGK +LAELIEQDKDVIASIETLDNGK +TNHLITVESTFPSFGVGAEIVAQVMESEAFDYLDAPIQR +ATFLKDDLPYYVNALADVLYK +FVDYKVLDEADRLLEIGFRDDLETISGILNEK +ANPTALLLSSVMMLNHMGLTNHADQIQNAVLSTIASGPENR +LIDEYGDDFAKGYDASKSEYTDMLATGIIDPFKVVR +IAGEKWQNLEADIKEK +LQFALPHETLYSGSEVTQVNLPAK +SNHNELLTEIREKGELSKELLASLK +GKTLYFSHGFSPVFKDLTHVEPPKDLDVILVAPK +GSVTSVQAVYVPADDLTDPAPATTFAHLDATTVLSR +TNEAAGDGTTSATVLGR +ANPTAMILSSTLMLNHLGLNEYATR +EAIQERIEQIKGSIDITTTNSYEKEK +SEGIEFFASPVTLGPDGIEKIHPIGELSSEEEEMLQK +TIPEIQRELPKAEGSTEPLPEALFWLLLTGEIPTDAQVK +GQTYSPAQIGGFVLNK +LDVVQTYNQDTVTGPLVPLVAIDAWEHAYYLQYQNK +YRYELPSFNDDIQGTGAVVMASLIAALK +AIDEQFGSLDELIK +LAPSTLQDAEGNVKPWNPPQKPNLPELELQGPEALK +AVMDLLGSELQNKYSEGYPGER +NLSNGGKLDVVQTYNQDTVTGPLVPLVAIDAWEHAYYLQYQNK +TLYFSHGFSPVFKDLTHVEPPKDLDVILVAPK +WGVNVQPLSGAPANLYVYSAIMNVGER +LILPYLDVDLKYYDLSVESR +MNLLSDAAQSETWPAIKPLLTK +FISEVENTDPTQERVNVIGGHSGITIIPLISQTNHK +NVFKDGKITSTDPNADYGKNLAQLLGYENKDFIDLMR +TRIPDIDLIVIRENTEGEFSGLEHESVPGVVESLK +FTQAGSEVSALLGR +LKNAVQNESVSSPIELNFDAVKDFK +QVAQWIADIQYGR +GQNVANPTAMILSSTLMLNHLGLNEYATR +VIEDAKKDPELEILYGGQYDKSQGWFVGPTVIK +SLEFNSQPDYREKLEKELDTIR +KPGMTRDDLFAINASIVR +GGAAGGGYAQVIPMDEFNLHLTGDIHAISAANNLLAAAIDTR +WDFGALEPYISGQINELHYTK +LRKPIHADPPSFAEQSTSAEILETGIKVVDLLAPYAR +KTAATDITSTQYSR +HAHGDQYKATDTLIPGPGSLELVYKPSDPTTAQPQTLK +LYLPESKSEEFLSDMFGILQSQNVVPMNTSASPISGGNLR +ITRNPNPSKPRPNEELVFGQTFTDHMLTIPWSAK +STTTMGLVQALSAHLGKPSIANVRQPSLGPTLGVK +QATKDAGQIVGLNVLR +SEIPEHVIQLLDSLPKDLHPMAQFSIAVTALESESKFAK +DAIKPNLMQTLEGTPVMVHAGPFANISIGASSVIADLMALK +LKDYTESLKVGDPFDEEVFQGAQTSDKQLHK +VGDILQSELKIEKETLPESTSLDSFNDFLNKYK +AEGSTEPLPEALFWLLLTGEIPTDAQVK +SDAHDEETFEEFTARYEKEFDEAYDLFEVQR +NLSNGGKLDVVQTYNQDTVTGPLVPLVAIDAWEHAYYLQYQNKK +AAIRDPNPVVFLENELLYGESFEISEEALSPEFTLPYK +ENPTLRPAEISK +DDLFAINASIVRDLAAATAESAPNAAILVISNPVNSTVPIVAQVLK +QIGFTPELTGLQPVDISLPDIPNSSSGAELKDLLSKYEGIYLIAR +TFESEAAHGTVTR +NTSVIDKIESYVK +ADAANYVFERDDGSKGTTLSLVQK +AQEDVPYLLPYILEAEAAAK +AQMWEPVYRPMIK +TASGLYLPEKNVEKLNQAEVVAVGPGFTDANGNKVVPQVK +SNHNELLTEIREKGELSKELLASLKSATESFVATF +EGTVPTDLDQETGLAR +VLNNCFSYDLVPAPAVIEK +KAITRPAKQIIENAGEEGSVIIGK +RFEDAEVQR +VGGASEVEVGEKKDR +SIVLKDKFENMGAK +YRYDMLAATMLGQGK +HHQTYVNGFNTAVDQFQELSDLLAKEPSPANAR +ISKAVHETIAEGK +HGSVSAEHGLGFQKK +LVSTIYEVAPGVLTK +TIAEYFRDEEGQDVLLFIDNIFR +GSILKEFKSFKKDDAVRKAERDLEKLHKDYVNKLHDQF +AQEDVPYLLPYILEAEAAAKEKDELDNIEVSK +LSGGVAVIR +IIGVETYDAATLHNSLQR +TLSFLAQGGTAVGTGLNTKPGFDVK +VVTNPSAYTDAVSVCPNLYGDILSDLNSGLSAGSLGLTPSANIGHK +KPIHADPPSFAEQSTSAEILETGIKVVDLLAPYAR +QTDHKEGVYEAVESLKR +EYGIGTPEGFPAFTPEEAFEAAK +PGQVGIVLFGSDR +ETTPPGVVMGLAWTNMGGCSLYVESVLEQPLHNCK +FKNVDVSVAVATPTGLLTPIVK +PLQPVEIAYLGDMDTSSAALSIHELGFNNE +NALKPVFQDLYESTKNGTETK +KISEYFPLEATITGMLEIYETLFNLKFIETK +QEKYEPSEEIKSEVLEAVTEEPEDISDIVISLISSYR +SCLDILTISDLNILMNDLKVITPSQLPNSVR +TREGNDLYR +SFIDTLKAGNFTQKIDEGVTLRTMILSLLL +VGKEGVITIREGR +DLGSLIAGAKYRGEFEERLKKVLEEIDK +SKNDPIAGLK +HNGGRALARTAPNDYTTELPSKVYSMAFNNALSHQYKSGKLFV +HSSVTFSGLLNALDGVTSSEETITFMTTNHPEK +IGAIVDVHFEQSELPAILNALEIK +DMPMVTKAFTKFCETIAKRHTRGLLSY +YNKDLKRSVCDVKVTHGYNVQRYNQLRK +LVPRWEKPIIIGR +NVVIFSSKPIQGIKISRIRERYIEIMLSRVSVFK +YLEIESVIKDSIGSLKTDLDLKQSLHVRDL +KYARFIGPGLMVSVSYMDPGNYSTAVAAGSAHRY +AEELGIHSHELELYGHYK +NIPKPKGGMRPLSVGNPRDKIVQEVMRMILDTIFDK +SSQQKIQAAEAELDLVTDMFNK +NYDGDVQSDIVAQGFGSLGLMTSILVTPDGKTF +VGDPFDESTFQGAQTSQMQLNK +THYMSGGTQK +VNSLEFLNIQKNSTLSEIR +YFRDEEGQDVLLFIDNIFR +TKNPWPNVDSHSGVLLQYYGLTEASFYTVLFGVAR +LLDVTPLSLGIETLGGVFTRLIPRNTTIPTK +SKDEMDDLRWNYENSKKQLDKNVSDAMDSLSKAK +GSEYKPNKDELNALLTTSEYSNVPVNDIKKLYHR +LMSNSIANLVEGEFMQLKNTSIDADIDTIENGHKLLPVPSK +PGAYHATRLTKNTFIQSRKYSDAHDEETFEE +RSMNLLQELSPR +LSLNDSNVQIIEVNLVENAVK +DTILNQKRWNNGSDESKKLYCVYVAVGQK +IAPALVTGNTVVLK +EFISLASREKKLMFFVVKKFDKIRDKQRCK +VLLAQIEQWKDFETLFAK +VETTSVLSRYLKMEPFEFTLGRLK +QKEELARIRNELSQLRSETEEKTK +GESNIFKQSNKGLYGGSFVQFGNNISESKAKTRK +LGNDDEVILFR +LVMDNMNEENMNNNLLSIMKNVDMLMLAY +YDFMKNGKWYSDR +FSTVDEVIAMANDSQYGLAAGIHTNDINKAVDVSK +RQLSTSVRYLQHYDESLLSRYYPESL +LSAEEKKSIDAIVNTHHHYDHSGGNL +NVARRAPTSFVRPSAAAAALR +YSNVPVNDIKKLYHRGEQGAIDIKGGNVNRDNSLR +NHMGLTNHADQIQNAVLSTIASGPENR +FKIVQKKQKGRVPVRTGGSIKGSTLQFGKYGLRLKSEGIR +TFSGLLNALDGVTSSEETITFMTTNHPEKLDAAIMR +VIIDSKSLNILNNTTLTY +IRENTEGEYSGIEHIVCPGVVQSIKLITRDASERVIR +FFKNGLEYYRNRCALTEDVPSGKYTPRNNF +VRLQLSATSAQKAHYGPFMVIKEIIRSSANSGRSVTNELYR +YSPVSTSTKAINANPFLPNKHPVTQR +QSYIVSSLPGSTDKSLDFLNQSFIQQK +ENMRKLTLFLKEWFDEEISLLKLEQNERKMK +FDALEQYCKSNECTTGHFTLRDELGYNPFMR +KISPVVDK +MSGKPPVYRLPPLPRLKVKKPIIRQEANKCLVL +SSHGIKNRWLAAPMLQIPIALGFFNALR +VIGIVLDTLKTSSGSDFFDLKIPIF +KRAVAMGVSLLGTGAGGVV +GFATDDGTLATAVWRNLFGGR +DEQDSTLTFRRSCREGICGSCAMNIGGRNTLACICK +DTGGPISVPVGR +RQFVESEKLPVIKPLPLHLESPV +TPQNTITMFRPDKNMAR +PNEELVFGQTFTDHMLTIPWSAK +TLGIIGNVYKQEGFRSLFKGLGPNLVGVIPAR +VPTFGYAAYALLKSCENE +ILASGKFHYNLPIALEASRASAKAIAAIEKAGGK +RRDFPALQWVVSENDANIAWHFDK +MKLDLGWHLSRQTGGLTR +MFKKFPNEILWRSRK +KMGLIQGIISEDSDLLVFGCKTLITKLNDQGK +GFYKGVIPPLLGVTPIFAVSFWGYDV +SRFYSQPSALEVQGTSDSRSDNILDELKQRGLVSQVSQPE +DDVEEAVQAADRAFSNGSWNGIDPIDR +SNLAKSVSQFVMDKYSGVECLNLEVQADTTHIR +VGKEGASVVKKVVKISDATKLK +LGGEVFIDFTKTKNMVSDIQEATKGGPHGVINVSVSE +YETYRYGGHSMSDPGTTYRTRDEIQHMRSK +PVRTIARRSHGEVHYYEAEAYDVDPENKTIKVK +CCKDLGVGSELWDPVFIKK +DEPLDQSTRIKSQVKLLLSQL +SINALSMPRIIRKGRTSMNISQNITVKGPK +EESGSLTKSRPPIKSNPVRENIKSF +EWKYQVSFESILNSIIASCIVGLQRGGK +PTDLDQETGLAR +TTPSVVAFTK +VVPGYGHAVLR +ARQELSEILSAFEFMDAKSQVLAKSQLKDAAFPL +PIEKLDIAKDFPEINIEPQLKIVSMEEPKTKSPGVKL +LVVGNESQGVRTNLKMRSDFFVEIPFGGIEK +SLEQDKLSDKEQQLEAELSDFFRNY +LINQPLLVIPIPNLIGFTTIPRRIHRFYQK +ALKQVAGSLKLFLAQYR +EIKVTLVEALPNILNMFDKYLV +AAPGPSDQQLQIEKVIEKEDLNESKEHDDQK +GLFGLVRLLANPETPKTMNREWQLKSDEYLKSK +QKVDVIQKELVEVNDILR +ATVKQPSIGR +QQETNFAINFLMGGVSAAIAKTAASPIERVK +RPFARGGKINLSKELDDIDESAK +LFNTTTNDPKQKSVVK +SMLKHYVDEVKEVIQIMDPEQEIALKEFDK +SVMQTEHISLTNAVKKIFGKF +TSYITPVPGGVGPMTVAMLVSNVLLAAKR +VADLIGVSAIIIQDMKSKRINNYEF +QATTATAHAESTLNPLPNAAIPPK +INVANFQKAKDDAVKQLTGGIE +TLYFSHGFSPVFK +KAPSLPEGQEIIKPLSHPIKANGHLQILYGSL +GILGIGDQGIGGVRIAISKLALMTLCGGIHPGR +KYSVIASSATLFGYLFAKNLYSRETKEDLIEKLEMVKK +LLDYFKNDTFALIGYGSQGYGQGLNLRDNGLNVIIGVR +KKTQIKK +SCVGVASLPLNVDLEME +NLTTQALRKLSSFKMNASSNLRLSK +ATIQLDFQLPERFDLKFK +ENPSISVPREYQMYDPVVRATIKEVVTKRLLRSAF +RLLSTISSQIPGTRTSKLPNGLTIATEY +LFSTVNSARHSVPLGGMRDYVHIK +DCILVTCRGNLLLCVSRLQFEGFAVE +KLPTEDSEMGLVLASALFAKFVTPKGSNVVR +KTMINVFLESRKDSIKLLDKAR +VGVGASRVRDLFTQARSMAPSIIFIDEIDAIGK +DGIYVGIAPLVGKATLLTRNPTVENFIEATNLLEKASKLDPR +KEPNQTVAKPSGSSTSKISSLLPFNKIIQDPAEEDDSFDPEIGK +GHLKAHIDPLGISFGSNKNNPVPPELTLDYYGFSK +KTNEPLK +NIEKITK +MNVPKIK +VTIKKLK +ILIEHLSE +SADLAAR +NKIGLK +YSIASQPR +EVQKLIK +PVGPGLLGR +LKRSILK +LEKKLE +KLLEEAQK +EPDIELK +EDIKALR +FGVEGR +QHLINTK +FSPVRRVE +IANKNHYK +GTTLSLVQK +TNLLK +SHDVVIIGGGPAGYVAAIK +LATYGGDKDVDYIVVSDSEGILGIGDQGIGGVR +MHLIDLGIATEAEVK +SEEFLSDMFGILQSQNVVPMNTSASPISGGNLR +NIIVATGSEVTPFPGIEIDEEKIVSSTGALSLK +AEVTQLSNGIVVATEHNPSAHTASVGVVFGSGAANENPYNNGVSNLWK +YVMADLINVGGTQSVIK +VYPSAVLHFEDFGVK +DFQSYIVSSLPGSTDK +IYIQDTVYEEVLQK +SPNIVFADADLDKAVK +PYLLPYILEAEAAAK +AFNVSYLSVESFEDVQK +LIHVPKEDNSKEVTLDSLLEEGVLDKEIHK +NILAESNSSLDNIVK +YVLVAGITPTPLGEGK +EFDEKLPPKKPAGPFIK +PLDLNEHEKTVNMIVEVPRWTTGKFEISKELRFNPIVQDTK +AGISYAAYLNVAAQAIR +GSAFTQEEREAFNLEALLPPQVNTLDEQLER +SIIELEHYGVPFSR +HLNDQPNADIVTIGDK +PYISGQINELHYTK +IIGDKWQSLDQSIK +LAAVTNKKSRNAARISSNGSFMPLQLQNAGVLTPEQITLLAVKETR +DSSTISGVYESRNKLDWMDSITKSPSSLDILKNQYNIVKDKDF +TIEECQNRLPNTGIDGDNFLPESMLWLLMTGGVPTFQQAASFRK +FDDLIAEENPIMQTALR +IDSVSQLQNVAETTK +VADRVNAGTVWINTYNDFHHAVPFGGFNASGLGR +TNAGLFDVSHMLQSK +LMNDNPIFEYVYGTNSVYAALLNPSRNCHSRLLYHGTIPSKF +DKATNKDSSITVAGSSGLSENEIEQMVNDAEKFK +FQGFKSYLPIAELAIENTERLNYDTNGTSGTVGAKDVMSKTNER +VQNFQLPNWSKYPTILKFICTELHDNSLKTLGEFKQFYGKV +GEETSTNSIASIFAWSR +LHVRYSSTRPFLVAPSIANSITTEAPAINHSPELANARKWLPKR +GGYTGEDGFEISIANEK +ARAELEEIVDFLKDPTK +YRRDEIDKTHYPVFHQMEGATIWKRTKADVGVKEPMYIEK +PESTSLDSFNDFLNK +QYDLAIELENKLDGIYVGIAPLVGKATLLTRNPTVENFIEATNL +GFMDLLYKLLRAGY +QKKLFKKYNVPLWKNALLPMVQIPLWVTVSMGIRTLTETQL +GVSSFKESLNVLTCYFQRDSHRNLQEWIFSTSDLLCGYRVL +KQAIETANKADQLANDTENSLKEFEGKVDKAEAQK +DKYIQEYKK +VSEEEKRAHQEQTEKTLKQAAYVAAFLWVSPMIWHLVK +SQVKKQVGNVATVLVKKGTLQKGKILICGNTFCKIK +NKVDTIDDPEMLELVEMEMR +YPFTIGELKYSMQYEYCRTPLDFLLRRTRFAF +FDIKCRSSGLVPDAVVLVATVRALKSHGGAPNVKPGQSLPK +KDRSYNELPLRFSDFSPLHRNEASGALSGLTRLRK +WLPKRCGLITRKKGMMPYFDKSTGERSAATILE +EDAAAENGFSFDNQVTITGTFDHRTIDGAKGAEFMK +AQLGQCYNDKDYAAAVKLTVELKYWYNLAKAFK +VQETLQTYKSLQDIIAILGMDELSEQDKLTVER +GARLVTGGARHGSKGYFVKPTVFADVKGDMRIVK +GIYPAVDPLDSK +SIRTLATGAPLDASK +EDLITSSNWDTRGYTREEAAYPLPFLRYNK +KASKAADPKGLRTIGVITKLDLVDPEKARSILNNK +FDHGAIVAQTEPLAIATMLSKGRVNDSTADFNSEGLPR +DITETNKILLIFSELHYPQEERFSELLVELQTK +ELATEILPHEPTNVPESTLKELGK +HLGPQEIDEIRKLRLDNPQKYTRK +DDVAEVSKGHECGITFESGFEGFKPGDKILVYENVRVPR +SGNLAWTLTTTALLLGVPLSLSILAEQQLIEMEK +ISALSNLTSEMK +ICGNTFCKIKNLIDDKGIPILKATPSYATEVLGWK +SLDPSACVFHYAFELFEGLKAYRTPQNTITMFRPDK +CGCFAFDARGHAETKFKKADAPICFDRDSFIKDFV +QSGGAGQYGRVIGTLSPVDDITKGNIFETAIVGGRIPDKYLAACGK +LVELDGFSQTSGIIIIGATNFPEALDKALTRPGRFDK +RHELIHRIQFGGDEVVKAKNGAGSATLSMAHAGAKF +RKLRPRKALITLSPKAIKHLRALLAQPEPKLIR +LIGLVRITNSNAPKLEAKELSSTIGKLIIQNRGVVR +SKSADVAAGLHKQTGVDPDYITRKLTMKPLVMK +WRREVELLTKGKEVQGTHRRIDVFYDLWNKNFDK +CNLDHFGCLIGSGIGSIQDIYQTSLQFHNDNKR +LKDFNTQLRGAIFAYDEGFATDDGTLATAVWRNLFGGR +KRLGLKTVIILSSLYLLSIWVK +DPKLQAKTYVPSVSEIIHPSSPGNLISLLINCNK +VSLQDIKDFADKVYTKENLEVSGENVVEADLKR +LYLTIHSDHEGGNVSAHTTHLVGSALSSPYLSLAAGLNGLAGPLHGR +SLHDVVENVKPTCLVGCSTQAGAFTQDVVEEMHK +LVSGGTDNHLIVIDLSGTQVDGAR +LQQEDIDEAITLFEESADLAR +LDVVQTYNQDTVTGPLVPLVAIDAWEHAYYLQYQNKK +NFYEDEKLVHVIDDIPLVKDIEGTHGVVIGGFK +SDEAKSEESKENNEDLTEEQSEIKKLESQLSAK +ALELYGLDPAKWGVNVQPLSGAPANLYVYSAIMNVGER +LVGSEKNPLNDKNIHEPGYVVTEAGFDFAMGGER +GSGVAMAMYNTDESIEGFAHSSFK +GTLESLENLVVADLESFANNHFLNSNAVVVGTGNIK +PADDLTDPAPATTFAHLDATTVLSR +EMIPEASQANGGVYKYDVSLPLKDLYSLVEATNAR +NYDGDVQSDIVAQGFGSLGLMTSILVTPDGKTFESEAAHGTVTR +ANNFVYVSGQIPYTPDNKPVQGSISEKAEQVFQNVK +IPDIDLIVIRENTEGEFSGLEHESVPGVVESLK +ISLLGTEYFEDLLLHHHTSTNAGAADSQELVAEIR +TGDGDIENIPYGVLVWATGNAPR +NPWPNVDSHSGVLLQYYGLTEASFYTVLFGVAR +LWDQDIAIAGTGQIEGLLDYMR +HAVLHDQQSEAIYTPLSTLNNEK +HHQTYVNGFNTAVDQFQELSDLLAK +ENTFQKPYSDEEVTKTPVGSR +ITPVEFEEQLVFHAPASIPFDKLSESLNSFMK +QVGVQHIVVFVNKVDTIDDPEMLELVEMEMR +SDEAKSEESKENNEDLTEEQSEIK +TDLGQSLVIGMGGDAFPGTDFIDALK +ILPEIASTYGVLLNDPQLKIPVSR +MRDPIKDGHINGETTIFASVLNAFIGAILSTNGSEK +TGLTIAEYFRDEEGQDVLLFIDNIFR +NTIGDIAVLTGGTVFTEELDLKPEQCTIENLGSCDSITVTK +QAIETANKADQLANDTENSLKEFEGKVDKAEAQK +ALKEFNINLFAVDTTTISLALDETTTKADVENLLK +AVAHTVADTLQPGLPHKPLPSDLGK +IELSSTVSTEINLPFITADASGPK +TTDKKAPEDIEGSDTVQIELPESSFESYMLEPPDLSYETSK +NIIVATGSEVTPFPGIEIDEEKIVSSTGALSLKEIPK +QSTKVQGSVIGIDLGTTNSAVAIMEGK +AEPDMDTSFVGLTGGQIFNEMMSR +ATDTLIPGPGSLELVYKPSDPTTAQPQTLK +NIDLTQEQTSNEVTTSDPQLLLK +AYTEQNVETAHVAK +PVIETQGGDVSAYIPTNVISITDGQIFLEAELFYK +EMGEAALSNYTQTK +EYGIGTPEGFPAFTPEEAFEAAKK +SGTLTYEAVQQTTK +AEAAAASSGLKLQFALPHETLYSGSEVTQVNLPAK +LKNAVQNESVSSPIELNFDAVK +SSLSEFTEGGFQWIIEDIEHGK +LHEAVPADLMK +KIKNAERPLMLPENVPYDITFENVTFGYHPDRK +VVAVFDLGGGTFDISILDIDNGVFEVK +FYNRLAAYELPLLAQYRQEYKRPSPESHPVTY +EGSGSLTALPVIETQGGDVSAYIPTNVISITDGQIFLEAELFYK +EWYHENELFTFEEALEKQFTASEFESYKEK +LDEVVVDNFDQK +KISDINDDDSIHGLLIQLPLPR +ILIQNQDEMIK +MISAAVDQLAELSPLREGDSRPGLLPGLDTITNTSAR +PFLYSSQGPQAVR +PVFQDLYESTK +NVQFSLEAAEILQK +ITGSTATQLSSFK +QVMQQLNALGFEAVDISDNELAK +QLQVIESFEK +ETGVINLEGESK +YVPADDLTDPAPATTFAHLDATTVLSR +GVINFIPGDPVQVTDQVLADKDFGALHFTGSTNVFK +VGGASEVEVGEKK +SAHSLPMDVVNTGDAYPAEVAATVYNIMQKLKFK +RGEIKKGEKTVVVIRYEGPRGAPGMPEMLKPSSALMGYGLGK +LRAEPDMDTSFVGLTGGQIFNEMMSR +EKYIRENAPQVESREELGRWMCEAHNKVNK +TTSDPQLLLKVLDIHDELSQMDDEAGVKLLEKQNK +DAPGMYYQPSESIATGSVNSETIPR +RWPELSGQSARPTIVNISSILHSGKMKVPGTSVYSASK +LKHPNFKPTLK +TAIRNSTGPRPTLFVPELAFDLLVKPQIKLLLEPSQR +CGSISGSTCAAITTPLDCIKTVLQIRGSQTVSLEIMR +EQKLQLQKENKAK +IEFELYDNVVPK +QLAYGEDVISK +FFTTTSLLGDLSFLTVLAYGSYLVLQSQLSIGDL +LRFYTKRLCTVSVKSLREFGVLPNSTICHSVYPR +LYSALAGTAYVSYSLYREANPSTQVPQSDTFPNGSK +FIDRSNEVRQVATTLGYLDTLSSFAVLANERNLV +SRNAARISSNGSFMPLQLQNAGVLTPEQITLLAVK +WSSLLQANIAPQAENRSAWEIFRFKDMDLHKLY +VGQEHYDVASK +LHNIDPQLTNDEITSELSQYYKKSSMLSNNIKIK +TLNPSFSEKGEFTGVAVASFLQSVTPQLALGLETLYSR +VPFAGFPVHQLSRHLKMLVNNCGYSVTIAEQFKKK +PAETTPLSALFASQLCQEAGIPAGVVNILPGSGRVVGER +LPPKKPAGPFIK +LLSSVMMLNHMGLTNHADQIQNAVLSTIASGPENR +GVSDEANLNETGR +QGNKTMYKGTRASGIGRHTKFGGYVINWKKVR +SESDWAYGLPELNDRAKIANAAKIANPGCYATGSQLTISPLTK +LQASSTRQNMLSATKEIYLQRGGIKGFFPGLGPALL +TSVYIAHRLRTIADADKIIVLDNGRVREEGKHLEL +KPSLEFLPQPASSTNLNFNSNKHKSNVRQISNPKK +FLGLGISFGLFGLVRLLANPETPKTMNREWQLK +KDTDNDVEPTRDDEIVNKDQEGEASKNSRSSASGGGQSSSSR +VKFNILGHIRPELNYTTKEALIEDINIDIRTAQTV +SKQAVAYRQLSLLLRRPPGREAYPGDVFYLHPR +KVILTGHFLHNEEMFVGPRKKNGEKGYFLFTPF +AFSMNPAFQTSHTFSIGSQALPK +PQINFLTEYVR +RQVRMPAVLRTRSKESSIEQKPASRTRTRSR +AKQGELLEAFGSGTAAVVSPIKEIGWNNEDIHVPL +PEEILIFSLTNKAVDSIIENLLSIFENSHTNKE +KSLDELAPLMMTKTFNTGVAKASVIPVPLNKRQR +YLYENNMLHGNTMTVTGDTLAER +THNLGLQCTGVLFKVPHPNGPTFNCTNLLTKSY +FNAVPKLVSVQPIMIPGMPLEHLQLVYKFDTK +EFLQDESERKKFLDTLANDYFLNKDIPDDE +GVSNLVKQIENIKTFGIPVVVAINRFETDSQAEIEVIKK +LRPNIVIATPGRLIDVLEKYSNKFFRFVDYK +SVGLFAVVRMAGGQDAKTMNKEWQLKSDEYLK +FYHPTLTRMSFLDKFLKPMMATASPKEYQIKQL +SAAIVNESLGGLDPK +TRDVMQLWSLLEACLQSNLMKRAFSILESLYL +DESGILVCTDVGARGMDFPNVHEVLQIGVPSELANYIHR +IVKRYSEMKDILIQIERTEKLCFSKAFKQQVEF +YVDIGKNEGATLITGGERLGSKGYFIKPTVFGDV +DISDNELAKSHGRYLVGGASKVPNERIISFEFPER +TLPTKPEMQSQLVSVLQMLSGLGLVR +LLDAVDEYIPTPERDLNKPFLMPVEDIFSISGR +GQTHIESHNWTR +YFDGDNASGKPLWHFALGIIAFGYSMEYYFHLR +VEVNLAAIPLGK +RLTEDEVSRAKNQLKSSLLMNLESKLVELEDMGRQVLMHGR +IMNTMNDKLINKLLYKMMTLKLNNMNINKIIMSK +KGRTSMNISQNITVKGPKGELSVEVPDFLHLDKDE +YANEVRSQVFAQHPDKSQLDLMKIIGDKWQSLDQSIKDK +TIASKIWYALFEDDPYSRKNGDKFKKHLLK +EEGILPGGGTALVK +DKDLVALDLGSLIAGAKYRGEFEERLKKVLEE +TYNALPMGLIMGKIVAANNFDKPFWDGSIRNIWGF +TGHGHVNYNNIPSVMYSHPEVAWVGKTEEQLK +MSADHSRDPCPIVILNDFGGAFAMGAIGGVVWHGIK +RLDTARDIAKILASSPNRVILDNEALLLNTVVDAR +SLHLKESHPVGILRDLIEKKLNSVDNTFKIFNNF +IVFKRFNSTLKKTALHDLHVSLGGTMVPYAGYSMPVLYK +KLQTMNKVVADKGFGEILKKAVSGMLPKNKLRKQR +ATNGDTHLGGEDFDNVIVNYIIDTFIHENPEITREEITK +SNRCDTNYKLEIARAFLGEKLYFPHNLDFRGRAY +KAITRPAKQIIENAGEEGSVIIGKLIDEYGDDFAK +LLNRVQPLTIGQARRIQGITAAALFELYRVAR +NFLPHSEKFIKKSTPEFMKSDLKEVDEKTSF +VNPTQNEALTQVCVQVMGNNAAITFAGSQGQFELNVF +KLSINDLLVKAITVAAKRVPDANAYWLPNENVIRK +VDLVAKELLRKEAITREDMIRLLGPRPFKER +EDELEVTEGMR +NLVVADLESFANNHFLNSNAVVVGTGNIKHEDLVNSIESK +EDTVILNGSGPK +QVQDFEENDHPNRVLEHLHSTAFQNTPLSLPTR +FVSMVSKPSEQHVQIMESRLQEIQSRWKEKRR +FSTVDEVIAMANDSQYGLAAGIHTNDINKAVDVSKR +TNDKGGAKTVMDRVDMITGTLGKSFGSVGGYVAASRK +PESKVETYYQESAGVADLITTCSGGRNVKVATYMAKTGK +VALVFGQMNEPPGARARVALTGLTIAEYFRDEE +TDLGQSLVIGMGGDAFPGTDFIDALKLFLEDETTEGIIMLGEIGGK +VPKIIENAEGSRTTPSVVAFTKEGERLVGIPAKRQAVV +YAFSALFANDNLFAQGNIDNDLSVSGR +ATLLTRNPTVENFIEATNLLEK +VLFDVSKETVELESEAFELKQK +SHGEVHYYEAEAYDVDPENKTIK +FLEDLGYTYHDETDNTVYQK +ILASSPNRVILDNEALLLNTVVDAR +AVAFSQYPHFSYSTTGSSINELWR +NDLIAGAIGGTVGTMLNTPFDVVK +NSSIDAAFQSLQKVESTVKKNPK +VLHRPEVLQLPAIYQNLGLDYDER +IVAGEVPDSLKDKDLVALDLGSLIAGAK +VKILIQNQDEMIK +NMAEEFEYDDEPDEQGNPKKRPGK +SIETGEGIDWATGEALAFGTLVLDGQNVR +NAPGSFALFGGNAFAK +KAPGQSTVGLLAQLAK +VLFDDMVEYEDGTPATTSQMAK +ASEFYYGFAGPKEK +GNVTYYEAEATSINPDRNTVTIK +GAPGMPEMLKPSSALMGYGLGKDVALLTDGR +GGKIGLFGGAGVGK +EGNDLYREMKETGVINLEGESK +DGNTAEYSLLDYIKDVEKGKRTKVRIMGSNFL +EIKQVMQQLNALGFEAVDISDNELAK +PTAAALAYGLEK +NIFLSKENSAVAAK +EGVFYGACSELCGTGHANMPIKIEAVSLPK +EIDDGEEVIEASLPMVITTDLR +HEQGAGHMAEGYAR +FYPGENVGIGKDHSIFALEPGVVR +GTKIDNLRTSSMKLFEQLYKNSDNPETKNGRENK +VLPSIVNEVLK +DGIINLYKTMSQNKVPANSKILYYILKAVAKK +LGGEVFIDFTK +LHYKDIPVPEPKPNEILINVK +SIIEPIVNFALK +AHKTIIATGGYGR +KTLSFLAQGGTAVGTGLNTKPGFDVK +VVAPFELVKIRLQDVNSQFKTPIEVVKNSVVK +KLYKDEIIKK +FSPHVLNLTLVDLPGITKVPIGEQPPDIEKQIK +RFSNTLEQVELDNGKKVCALDLTTPTDLVSFGLIPELIGR +SIVEPVRSIARRTPGEVHYIEAEALDVDPKAKKV +GYQQNLWLFGPEK +ANQFINLAGYKKLGLKFDDLIAEENPIMQTALRR +AALNAGASHAVTSNHWMEGGKGAVELAHAVVDATKEPK +VQSELGNPKFQEK +LKLVEEAKKEYAK +VKNVEKLGVKALFVTVDAPSLGQREKDMKLKFSNTK +LQMEKIDEAIELFEDSAILAR +NANPWGGYSQVQSK +KFPEAPEVPNFFAEILTDKNDFDK +LTLVNTPNSNNVTADFPSMRLYNIKDFKEVKR +WELCLKNGYIYMGEHKGWYSISDETFYPESK +LVGHPINTSLYTLK +VIGTLSPVDDITKGNIFETAIVGGR +SQTDAFYTQYKNGTAASEPTPITK +AQDEFVMQSINK +AAIAEEQILNK +YWSDMADYKSLRKQENSLLESSILHEVKIEDF +DIKLPWPKKAELPPPVQSIIDNVVKFVEESNFK +VTEFLSMELAKDPIPSDPSEREATFTTNVENGER +TLVGVSHTNEEVR +LSDTLCRVIDLCEFIRSTHPDDAFVRAAQDCHE +IFTTTLPPSVMAGATAAIRYQRCHIDLRTSQQK +EKEQLRHLKEQLEKQRKKIDSLENKIDSMTK +TTPSVVAFTKEGER +QNRRTRRTVLSAENLDALNTLHERLLEYDAR +HLAFKGTQNRSQQGIELEIENIGSHLNAYTSR +WGAQTQRSFQNFKIGGARERMPLPLVHAFGVLK +NIAGHNIPTLNLEAELATLHKK +TGARAIRKYSTRYALEHLKEGAPLKGLFSIEGLQK +TKHEDGKITEETIPYGTLIWATGNK +QVLKEILEESGKPWKLNPGDGAFYGPKLDIMVTDHLR +PHVASESNPIESR +KIVRGMYSSPPGYGSRVVNVVLSDFKLKQQWFKDV +LLETEKEADANRAYGSVALGGPFNLTDFNGKPFTEE +EGLQPPTVAQFK +VLAKLPEKKKAIVRLQSGEHRYVSLEAVATIGVV +SLPQGPAPAIKANTR +KDPYDTLGLKKSATGAEIKKAYYKLAKKYHPDINK +SSRAMPYYCLELRQNYQKNSNNNNINFSYFY +EQISKFKFDANDNVLKMKPTK +EIKQVMQQLNALGFEAVDISDNELAKSHGRYLV +MPKVVETVKSLFGKDPSKAVNPDEAVAIGAAVQGAVL +KVLRQRAKEQAKMEEQAKTHAKEVKLQKVTEF +NYFNIGTVVGICSKNSIERNKKLGYDYLVPYDEGSIVENV +VCALDLTTPTDLVSFGLIPELIGRVPIITALQPLQR +TLVGVSHTNEEVRNMAEEFEYDDEPDEQGNPKKRPGK +YFPTQALNFAFK +ASEFYYGFAGPK +DAPTKISTLAVK +QATLKASTDKVDPVLGRADTPFITRIMAELKEPLV +AGESVESSNSKEVEKERAKKFRFSNTLEQVELDNGK +LKPVSPGLRWYRSPIYPYLYKGRPVRALTVVR +DFDNLFGEKTGK +IEKANAGRILANEEGKPFYLDANSATTRIAGGNVVTL +AGREELERVNV +DNLNDWEELPDNVKEGLEPLAADWYNDIFQK +NHITKRGPFLGNNAGILALSYNIINSTIDALRGK +IGIQPPKIFQAGK +EKEEKERKARKSQVSSTNRSDKIR +LVEEAKKEYAK +AYRSICSEMFWQLTPEYYCNNPLILPAIIDF +PYPVNVEAVYYAPLKLPIKYGDLVADIQLRSY +ASFFGIFDSHLEVSSVNTSSNYDTAYALLSDALQR +TLENSSNALYLTLK +CATDVTATSQVFDEIFPVFLKKCPHPVSFAGLK +AYKIDQLNWK +NAVQNESVSSPIELNFDAVKDFKLGK +KIDAITVKDVK +FFIDNLGYDTASR +VAGIEHVKPPGFIKTGRTIYQKEGFLALYKGLGAVV +PDLSFARGTLKLHPSSMHYPMIGDIVKNCKISK +LLGVITMFAAILVLLVLPFTDRSVVRGNTFKVL +DDLFAINASIVRDLAAATAESAPNAAILVISNPVNSTV +IASDFGVLNDAHNGLLKGTVTSAEPLDPK +IVVKKPQSLAEK +YNDLGALAYLGSERAIATIRSGKR +NTGAQVIVSGAYWK +VLGIDAGEEKEK +SVIYNKAPDFVESNTIFNLNTVK +AGYKNDGTRDLSQK +KKVIMPYLQLTKPRLTILVMLSAICSYALSPY +NINKVVQTQIAVEGDATTNLGK +AQTHALSNAAVMDLQSR +ILKEEGIGSFYSGFTPILFK +MVLAGAGAVDHEKLVQYAQK +KPVLYVGAGILNHADGPR +KLRAEPDMDTSFVGLTGGQIFNEMMSR +GYNIEEVDKFLAAIESAK +NAESLSVLDIENEIVR +APDFVESNTIFNLNTVK +GNFFSSNPISSFVVDTYK +GNLKKGEELEIVGHNSTPLK +NIVGSTHDEFSELSNSIR +HAMTNAKETESLVSK +AWISLAVEGEPVNSPNYFVAK +AQDEFVMQSINKAADLINLAK +GALAYIGSDKAIADLAVGEAK +SVLKNTSVIDKIESYVK +EYLLEELGEAPVDLMR +ALPIALGTVAIAAATAFYFANR +VILDNEALLLNTVVDAR +LVSQPQFANGLVGGFSR +LFGVEGTYATALYQAAAK +LIVGAGQAAPSPPVGPALGSK +GGANFLDYAAIDKAPEER +SIATNTGTKDLQMVSLTLR +LGKFNYVAVGDVSNLPYLDEL +LGGYGGMIYSGIDSLILK +QASVIRAEGEAESAEFISK +DVPANASFNLEDPNIDFER +NMAEEFEYDDEPDEQGNPK +AAFISALVGKEGASVVK +ADLNKAFSMNPAFQTSHTFSIGSQALPK +VLSRPDVVQLPTIYR +RGLLIDNKLQLLGAK +AKPLTQNITGTANTNR +VNYEVIGNPPSIAVPTHFFK +GITISTAHVEYETAKR +LGHLLLNPALSLKDR +YFPTQALNFAFKDKIK +KGEELEIVGHNSTPLK +STVETFISSMTATADVLAMAK +IKGVSDEANLNETGRVLAVGDGIAR +MLNNNNMNPAGANPVVHR +IVGLSELPKVYDLMEK +YSHTHQLNPDFIK +EVSKNLMTKLEEQDSR +SILLLEDIDAAFNKR +GSNNIFAIGDNAFAGLPPTAQVAHQEAEYLAK +IAQVANNHKPLTYTGKK +IVKNTLKNEGVTAFFK +TQSQIEDFKYNHK +LIGAPPGYVLSESGGQLTEAVR +LLDTDTSMVVPVDTHIR +AQEPPVASNSFTPFPR +SFYFNDHDLHRGLSILDSFIKHYPDVK +YFPTQALNFAFKDK +RVPDANAYWLPNENVIR +SMAPSIIFIDEIDAIGKER +SSFPKDGTEVLQSIEDR +ASSLPPNALKPAFGPPDKVAAQK +FKTETGIDLENDRMAIQR +DKLDPQEWDINER +SLQEDIPKAVDILSDILTK +INVTVQNSEDKHQR +TMNKEWQLKSDEYLK +RSVHEPVQTGLKAVDALVPIGR +VTEFLSMELAKDPIPSDPSER +QTQNPYWVLEHITPESLAAR +NSFFKEDEVIPEKFR +QLQVIESFEKHAMTNAKETESLVSK +IKVAPGTQYNQVISIPNMGVPK +FLKNDPLGAHEDIKK +QNKETAQDSPELLAK +NAMDNASKNAGDMINR +ITGGERLGSKGYFIKPTVFGDVKEDMR +LSDYIPGPYPNEQAAR +RFTDFDWSKVSKVGIIGNGNVALDITRVL +SSVYDVINESPISQGVGLSSR +ISDTTPLIGDFKPSGK +NPIPTKTTLPSNALNQLTSR +ELVRDNKLIGNFTLAGIPPAPK +ELIFIMNILKIKFNL +AFLLDPAVLILDEATSALDSQSEEIVAK +IKPEIDAKVEEMVKK +ELDGFSQTSGIIIIGATNFPEALDKALTRPGR +VSCSTCHGTGTTVHIR +IIVGSAALAAAITASIMVR +SWRDLSQEDPDEVKAKKYDLNFVK +TVMDRVDMITGTLGK +FLANFPDGLQTMVGAR +MTIVLQGQDGVVEQARR +AIRESTELPQDKVILSIDTYRSNVAK +GFSGKEVSYIPLLAIDASPK +AQPAEPQAEKKQEAPAEETKTSAPEAK +MFGLPQQEVSEEEKR +AAPKKEAAPKK +IGGRSPNIVNALVDEVK +GMVLAKPGTVK +TLATGAPLDASKLKITRNPNPSKPRPNEE +KYFQLLIQQPFDVARLLIQVGEF +WLKTCPRLNVLLNQSIPIPHLLHSR +FYAELAER +GGIIHFEVSPK +HFHTHKPARSCVGVASLPLNVDL +YLVDYAQDLFKEEK +STVNEIPESVASKSPSLR +VWATGNAPREVSKNLMTKLEEQDSR +IISFEFPERPGALTR +LLTTGPKLVFSFALAQSLIPRFDNLLSK +EAAPKKEAAPK +AANQGALPPDLSLIVK +PLIVVVFKLEDLELANYLCNLTK +FMTGWFRIGLYLLKSYKTGIQNTLKVF +AAFISALVGK +EYDIDALRKVIGVVPQDTPLFNDTIWENV +KVDATTITAK +QDLLPPDINATNGKPLSMAPF +ITSIATSLGTAVISNQTFEYARKYNTRSV +EIHTLKELPDLVPQNGKYALLKIYIK +NALLITVFDPKDVKTVISGVLAANLNLTPERV +AATDGQMPQTR +LQTSSTPTTAMEVVRK +EVSKNLMTK +IINRPLAEKQIIDDTDETPSELVR +QRSSFPKDGTEVLQSIEDRK +GGALGGANDEREATLNQLLV +STLIPPKVVSSKNIGSAPNAKR +LMSFLYPLEKLEYR +PFYFVSGSEFVEMFVGVGAARVRDLFKTAR +DVAKSLGFSPDAQDEAAKAVSNLYK +IILNPIKLAQGSNSDRGQTSK +AAFGLAEAGYK +SAELIGEAIKK +GIPQTLLNEMGGKVDPAILSVK +EISQGCGAYLMSDMAHISGLVAANVVPSPFE +KDPIDNKFRVNYEVIGNPPSIAVPTHFFK +GASHIKTVFKCSPDAFVQQVFQVAYFALYGR +STKNTILKKYDGRFKDIFQEVYEAQYK +VGPNLHGIFGRHSGQVKGYSYTDANINKNV +KMPGHMGNEHVTIQNVK +EDKKVILQK +KSTKPTLKLSNANSKSSGFKDIKRLFVLSK +PGDVVESFRRGIPQTLLNEMGGKVDPAILSVK +AVDALVPIGRGQRELIIGDRQTGKTAVAL +RQLLELQSQPTEVDFSHYR +ITTTKKGSVTSVQAVYVPADDLTDPAPATTF +AMPIISFYLGTWQVRRLKWK +TALYNYLLARNTNGQFLLRLEDTDQK +SRVQLENITAPLIDRTVDPVKKALK +QLEVTTPTAAAVGKQVERYNGVIDCLKKIVK +KQSWVAPPPR +QVEKYIEQTKNNTIPANWKEQKR +SVLPLVKSIVKMTGDKLTINEYERLGKL +AAFVVDKAR +AAIEDGWVPGKNLFTVEDAIK +EAPKSIIELEHYGVPFSR +VNVFLADMK +MLRPAYKSLVKTSLLQRRLISSKGSK +KDPMLEGKINYECKALEDVTGQF +PFDILNDVFTIAQDYSATNTNESIDR +VDYKVLDEADRLLEIGFRDDLETISGILNEK +SALSCSSTASLISKRNPCYPYGILCRTLSQSVK +FRVNYEVIGNPPSIAVPTHFFKLIV +MIHTASLLHDDVIDHSDTRRGRPSGNAAFTNK +SAPVFTSKELEVARKERLDGLGPFVSRLPKK +IAGAIGGTVGCLLNTPFDVVKSRIQR +DSVIERNFKPLFDKLSTNPNALNKYTK +SQNDVDALVEQLTMSSSDSQSIKRV +KALKDARITASDISDVLLVGGMSRMPKVADTV +SNFINNKK +EAAPKKEAAPKKEVTEPK +TAVAKVEEK +VNPAIAGSLAK +LFPTRSHTVAAQGGINAALGNMHKDNWK +AKAAAANSGRKQVSMKWVVLTSFTIV +VVPNPFKSAKPKTVDIKTDNKDEEK +FAKDLLESVDNFGHALNAFKE +TNEIINNSNNFYDSMSKV +AGREELER +AGALPILTSLAETASGQMLNVNADVAAGELAR +GHPAVVAAK +TSTEEAADEDEKISE +IITTGTFLSAEIHIGDKRIAAGR +ILVPEGTKDIPVNKPIAVYVE +GVLECARSGMMALPRTPLKTSTEEAADEDEK +NKLWDESENPLIVVMR +GGISRTVQQISDLPFR +NTDSDNASVRVPVGNSTEVENATSQLTGTSGKRR +MHGRKIPVNEMISK +QCAKRYASSLPPNALKPAFGPPDKVAAQKFKE +MFARLANPAHFKPLTGSHITRAAKR +KPNESIFSEFKGSSARDDIEGSGDVK +NLRNMPVLLGPSRKKFIGHITK +LAENLKTLEPTTKLDARSRLNEFKKLCNE +ALKDAGLSTSDISEVLLVGGMSRMPKVVETVK +PMPVASFIAGTVAGQMKGVRMGHSGAIVEGSGTDAE +LWKILNSNRVIPGYGHAVLRK +RGLKERYEVHHGVRITDTALVSAAVLSNR +KAITRPAKQIIENAGEE +DPALSRRFQPILLNEPSVSDTISILR +IAKELSLPPVKLHCSMLAEDAIK +SAANKLDWAK +DPWNAIIAGFFTGGALAVRGGWR +AVLDSWVR +QLGPLYPILLRLQASNRVQLKIFETDRQTK +SLPTTTKNRAMRIFILGARAEAQL +VLPSIGNEVLK +SVFPETDSTVETKSGKKSIV +GAILSGPPGTGK +EPVRSIARRTPGEVHYIEAEALDVDPKAK +DRCCAHLGEEEIKSKLAQGIPFTVRFKSPER +PESEKETAENNDSDSEADTSVKK +TLVGVSHTNEEVRNMAEE +EDALSLKDALLGVSQKAREEAPK +VAKATQKFLKKQGLDFK +TNIKKEYRHDKYLERTKVGTYPGR +PGAYHATRLTKNTFIQSRKYSDAHDEE +AADLSSNTKEFINDPRNPR +EHLLLAR +GEIKKGEK +LGSSQRFGVPMGYGGPHAAFFAVIDKLNRK +GAPRSLTSLSFGKASRISTVKPVLR +TSAGGSPFGGINFEDLFGAAFGGGGRGSGGASR +YEGGLKTLFTGWKPNMVRGILMTASQVV +TMELGILPR +AYSFAKMYLAQKFPENR +IQNYTSGLVSKANLLSSKAL +SENSLNPSEKYNFEECNVLKEPFKNRK +SEIAPRYLERPGGYTR +HCLSWMEWLKNYESITELLNSKTLVK +EMPDLKEFIQKSDQLPNDTK +NDANNEQWDSKSGYMMLPTDYSLIQDPKYL +PNHPGGQDVIKFNAGKDVTAIFEPLHAPNVIDK +KDAKSSISYQWKNPSELEFDPFNKSHASAV +DIKQVPYK +AADLINLAK +AAFLGSEVR +KIQETLAK +DGVAHLLNR +QLSLKVK +MWINRL +AAPVLTSKK +LIDVITK +ALKEADLK +THAKEVK +FLSANKK +QGERELVR +IFPVKER +SIKNIEK +DVHGTGPR +FQFTKF +SGMMALPR +LKNQIVK +DSVLTLAR +KAKDLKK +SALFPSGLR +FLVFER +ELIIGDR +LGLGEIIK +LPLVGGHEGAGVVVK +ITLADNVDPTIIAR +SLDFLNQSFIQQK +SLKLENVVKPEIK +NTLKNEGVTAFFK +AAFVVDKARQEK +AAIAEEQILNKQR +VGDGLLLIR +SPIKIVGLSELPK +TTLPSNALNQLTSR +TDGSAPGDAGVSYLTR +YATKDGVAHLLNR +YRDGELFYGLSK +PSIVNEVLK +DVTAAILRNPIPTK +ARPVITDLFK +TSGPLGLNKEMLTK +LNQVSALIQR +GRLNVLSNVVR +KPHVASESNPIESR +YLVGGASKVPNER +DQDSAVVSSNIKK +LMDPTFSNESFTR +LKHEHLNDITNLTNNFGGR +REDLLPVFSFK +VKNVGFPIIGDTFR +KVSDVLNASR +ASTDKVDPVLGR +RFPTPILK +VVADKGFGEILKK +VKKQEELDAK +EKDELDNIEVSK +TRIQLEPTVYNK +ITGSTATQLSSFKK +YLAPAYKDFADAR +GLAVNDFLQVK +AASLSPKDPER +LFEEQLDKNNEDEKLKEK +FGGYEVFKK +AQLENDGKFVNVK +RGLAVNDFLQVK +SAEDQLYAITFRK +TPNFDDVLKENNDADKGR +IANVVHFYK +IQNYTSGLVSK +SIVEPSGALSVAGMKK +VVTQLSVMSASR +NLMTKLEEQDSR +VVPIKHSANAGLSSSK +LVLLSGQVYTALHK +SDEDAVKLNHFEQAIER +ALKQVAGSLK +FVASIATYPHEVVR +TALIDDKQSATPK +IQLEPTVYNK +IAWNWIVQSANQR +ANLLPKGDPER +AASLSPKDPERAR +VRDLFTQAR +KLQFQEFLR +GISLKDVHGTGPR +AIESYGTASGKPR +FNFQNTNTR +SIIEPIVNFALKK +SISHFPKIISKIIRLPIY +MLKRFPTPILK +EKFYAELAER +KSPVINALTSEILK +GTIYDPFDFSMGR +NLSLQTGTKPVLKK +SSASEQTLKER +LAEAMGLKGLR +DIKQVPYKIVK +SGANPLEFYARPR +SLVSKSEPK +LAAYELPLLAQYR +QAKMEEQAK +KGLGNPLLYDGVER +LSRGDILVR +IYYDEIVNGSPR +ILFVNEMSTLK +YNDLGALAYLGSER +YISRPEDESHAK +PSIGNEVLK +TIAKYEALDKDPK +AGESVESSNSKEVEKERAK +KFVFNPPKPR +PENYSDAKSDLDAHSDTYF +AKFLVEKAEQER +LLDGREAVTFLK +ETAEAYLGKPVK +SEWFAQINKWK +FGQFNEIKPYLR +RIANVVHFYK +NILVKNDLMK +RQTNPESFKGR +SALEFLTNSILTR +NATLDHITNMIMR +WMPELSKEIK +PQGPAPAIK +VVYQSETNYFFRLSLFNK +FKESLMATEK +HYRKYQKGEETSTNSIASIF +FLVEKAEQER +SNNNGRTSTTNLLNGTFNNKK +EATLNQLLVEMDGFTTSDQV +NVAKNRNPDSTYTYGWK +NLILSDASKENSR +ARKLFKVGLLGGESNSFNKKV +TVKELIEDPRK +KSDVAAPQGR +FHYNLPIALEASR +QLVKPIGLTQAPR +NSENKNAIK +DQGELIGILNNLGYSKDQVF +RFEDAEVQRDIK +LQAAPMPKPTLFR +TGGSIKGSTLQFGK +QYRGDPIEIVHK +ISKIAGEKWQNLEADIKEK +GTKDIPVNKPIAVYVEDK +LRADPIISAK +KKLSRMIAKAKMFSTRLK +SITRTDLKDYITK +YDINDNLKEFLGR +QKNSSIVEKLNEERALAK +LKIMSSIEK +AYRIIRAHQTELTHHLLPR +SIVEPVRTIAR +QKVELAHEAK +DLLGKLPVIASKIYR +ESMNEALDIFRKNNLVKE +TFDDVKTTDR +EKTPIGLQVVGQYGDDSTVLDF +TKEASELKDR +NVGFPIIGDTFR +DLISPTPELDLNR +SRAIFRNPVINRTLLRAR +TMNKEWQLK +RDANKADNKAASVALDSLINF +LDGIYVGIAPLVGKATLL +RAVENAWLTASNAKANRIGSEL +QLHSHRQSLELVNPGTVE +IKGHRRTYIGALPGRVVQALK +RKELQDKLSKVLRDELKL +DIKEYDIDALRK +NSQFKTPIEVVKNSVVK +GRPSGNAAFTNK +EAVESLKRNKIGLK +GSKSIVIKNTDENLINHSKL +PPVASNSFTPFPR +GGISRTVQQISDLPFRQQMK +SIGGHNEIEIDRRR +IGQRRWKSRGNTYQPSTLK +ARPITSGVFTADYLDKDKYK +KLISEGTFSKK +QYKPVKIDASK +GTVVTGRVER +YLWDTLNAGRVVPGYGHAVL +SPGEFQRYAKAFQKQLSK +ISRLGSDAYVVSRSMTQK +SDAMDSLSK +IQQQQPGYADLEHKEDCVE +LLKELSDR +NTIIVMTSNIGQDILLNDTK +LIRENLVR +LELLNLKIR +ALGAGVFTSIILLPVDLIRTR +KYRRLIGYVQQEPL +DHFSEPLGKR +NIFGGIVRCDYVALGLVEAAR +IPGRNLTQLIINNPKFSK +QFNGLLDVYKK +NIGSAPNAKR +TLNLPKTKFPNRSNLEITL +TSAEPLDPKSFK +DLSPAINYTKLKNAVQNESV +AAFVVDK +LNVFKPVMIANLLNSIR +ETVELESEAFELK +RKIVQKEGAYSLFK +ATAFHEAGHAIMAK +CDVSDPALDDNQTVLDPK +LSTKVISAK +VNLQISDGQPTMCQLEQDY +SFHESSKPLFNL +RASANEGLGKFADAMFDL +LKGQSAWTTQGIWKCLVPSK +LNKYSYIITEPK +LLYGSSYTNKANLSNNK +EGAIECPLESFQLLNSPLFNK +APGGSLMLVVFTGMMNFFR +NDDKNVVEIVVEDTK +WNPTVYNK +GNIYLQIGTQLHDTQIKIRF +IGSIMSTHDDFLTCLDFDAPF +LNVISEEEGIIGIIYCDLFE +KLEINIGRKRYSSKTL +IIENAEGSRTTPSVVAFTKE +KKVIMPYLQLTK +DPALSRRFQPILLNEPSV +KIEQLHPFPFAQLR +LNTNKLVIKAQALTGGR +SGKVIRTLKGHTDAITSLK +LKLNKLHMLTNSLLMLK +GAKQHYELNEEAENEHL +AKDFALQKFAKDLLE +MEFPGLTPVQQKTIKPIL +QLDNSSGTGQLRVV +QQKGLNK +LSKAEK +EAKDYLSK +EALGAKK +LQLLGAK +LKTMVK +AAAPPPVR +ISKDVETK +LLTTGPK +EAAILR +QIKQLVK +HNKALLR +KVLDEADR +LRDNRSR +EKAISK +NIFLSK +LHQQTK +ENFKGAR +IVADLKK +DALTK +QQLKDPK +QTLVRGER +KESLDFSK +HAMTNAK +KAAPVLTSK +LEVR +GKEGVITIR +GVLLPK +AGLAK +NKVR +NQVR +KKALSK +FAKGGK +VVQALKK +QAVAYR +LIPAGVPR +RAAAEGR +ELAERE +KSLGLGKR +TLLVNK +VFGEVTK +CNFSKSTK +KPGICTK +RLEEVQE +QLLKIK +FALAGAIGCGSTHSSMVPIDVVK +VYKNPIQGMAVIFKNEGIK +SSTRPFLVAPSIANSITTEAPAINHSPELANARK +SLWDSSEKDNSQKIEAKK +KMDEAEQLFYKNAETK +LVIDDQFNSKFPHIK +SPGVPDVIVDGFNDALQLSK +NAVQNESVSSPIELNFDAVKDFK +STNGDTHLGGEDFDIYLLREIVSR +TLDGMNMMYLNKLSNELGTGKFKFKPMR +MTHAKDDSEVAR +VKNYCRFKAYLKSPELDMDELKTLV +KELKAYNKSSDSMQYKAWLNFENK +RYGSLHGSVLGLEVVMPNGQIVNSMHSMRK +VGQGKSLKLENVVKPEIKGGLIVELGDK +NVIITLPHSSK +PWRNTFAINLIDTPGHIDFTFEVIRALK +FMEVINSPDISKSFILALGAGVFTSIILLPVDLIR +AARGEYEAAFQTSGRMFELIK +AKIELSSTVSTEINLPFITADASGPK +VKNYLFQKKASLDPPSISRRSNRIKY +ANSIINAIPGNNILTK +GLLIDNKLQLLGAK +SGVCHTDLHAWHGDWPLPVKLPLVGGHEGAGVVVKLGSNVK +IPDLEKKVALSEKSKDGDKVNLLHDSVTSDDISK +DMHPMTQLAIGLASMNKGSLFATNYQKGLIGKMEF +FVESSTDGQVVPQEVLNLPLEKYHEEADDYL +NVGCIPSKALLNNSHLFHQMHTEAQK +ILASSPNRVILDNEALLLNTV +LSTKRGPGPAVKKLIAIGEKWKQKTTRGLPK +EKLLGKIANIE +YFPTQALNFAFKDKIKSLLSYDRE +KRLRERIYYVLYYSCVLTLASKYRLK +RADWPREKLLDYFK +TVVVIRYEGPR +DIEIKPDGLIYLPEIKYRRILNKAFGAGGWGL +GGVLGLFMASMAYDTPLHTPTPANTAATATAGNIGVGGISR +ASKRTQLRNELIKQGPKR +YVGCTGSPAGSHTIMWLKPTVNEVARCWECGSVY +GGFDHWMVRVPTGKILFEINGDDLHEKVAR +ILRDNFKRQQFKENEILVKSLKFIAR +TLGEPFRGDVDKSFDFKDQTVSDRIR +ALRAARRVNDLPTAIRVFEALKY +MLQLRFMPGWVPRNGFFGLKETIGTVHKRFY +YISLNDMDKYNNGILTNYQRMLNNIMPKL +KEKPMLHNVPHDPSLPGQWEAAKNEK +HYNLPIALEASRASAKAIAAIEKAGGK +VSLPPPTTESRLKVAKDLKRVFE +VFQGERELVRDNK +VLKVCIQLALQQETQSIKQSKMAIDAQK +KGELQRQRELMEREKIADDRDEPIFSGNSESK +SLPGKLKNSPNGVIQR +VGDGLLLIRRLEASKDIAQTLANSSNVVY +PTEVLSCLKNIQKNELLKYGAY +MNPSRTTKMNKLYLSKEFYNLKELKAY +WIEPGEFLSSNVTSMRPIFKIQE +INDFHDEFYYFFEKPKYNDNDAVTKFLSK +DLITSSNWDTRGYTREEAAYPLPFLR +IIDKYYNGLQDNSEGTSV +KRGTLTAKDIAKLVAPEMPLTEVR +LNGKVFNKDKEYFNETRISKANEVELSK +ENFIEATNLLEKASK +GPISKKNGIWFPRGIPDIKHGRERSTK +FNNGEYDIMVASDAIGMGLNLSIDRVVFTTNMK +ESMIETLTEYDEDLVQHFLEEAE +KKYPYIRSSDIMQMRNVLITLRTQNKFVHK +NFDNPESGLR +TLGQDYDERVLPSIVNEVLK +PGICTKSDAIRVAELAGFPMEALKEAREIL +ISIFEAVHGSAPDIAGQDK +FLPNGAKIFNKLIEFMKLQQKFKFGFNEVVTPLIYKK +LKESQNTAASLTTFNEVDMSALMEMRKLYKDEIIKKTGTKFGF +LLHEEVISATSGKMLLFHILENFEQSNCQDLSIPDF +FMYTADKNFLKLGRDAVIETLMNLPEGR +KDGASWK +IMALKNYDGDVQSDIVAQGFGSLGLMTSILVTPDGK +SACINKPAELPK +PQLKIVSMEEPKTKSPGVKLNSVDELIEK +LTVDDLTKIKPEIDAKVEEMVK +RSVSQYLRPRTIQNLQSMAQTPELKTKLFKPL +KAASLSPKDPERARLLSFVVVGGGPTGVEFAAELR +EIYETLFNLK +RAGNGVTLEDSVKPPSQIPPEVQK +NVDAIFVNIFGGIVRCDYVAL +QIVQDVDWNAKTTPSDSPEPLAATLNSNR +RHIGIVQQEPVLMSGTIRDNITYGLTYTPTKEEIR +LGPYLAGLIEGDGTITVQNSSSMKKSKYRPLIVVVFKLE +MIFLKSVIKV +RLQRAGLTSEKRPIASFMFLGPTGTGKTELTK +DLLDRLAKTHQFDVLIIGGGATGTGCALDAATRGL +QFGLLAVGFKRYGDEKTLQKQPIQHLFDVY +MGAKIPRGAILSGPPGTGKTLLAK +KESIDSDLNSLLMLLTASSLLPK +GASRVRDLFTQARSMAPSIIFIDEIDAIGKERGK +VHFLKNPGKYTKLGAKIPRGAILSGPPGTGKTLLAK +ALSKFIDPSLTWKDIEELKKK +KIMGGSSSGAAASVACDLV +DDLIAEENPIMQTALRR +FGPIVDKLFTNRLLPVLFPPQMGEECNVE +QTGLRNSFTTVIGRKLINTFV +DKEYFNETRISKANEVE +LSTELQKKILGITMLDIVEEAAIMALNKVEHFL +QEALEAR +EILDAKK +KVANQKR +RKSKLDK +GPIKSK +KLDRLK +NIREGGR +IISILGV +INRLER +HIDTK +PVPVLITIK +KTLEPTTK +ILGAR +LSAILRLR +RAFLSK +IKAVKK +SRAQVK +EFNSQPDYREKLEK +TFGIPVVVAINRFETDSQAEIEVIKK +KLNELLNLYHVANEFIVTESQLLK +ASYPEHTIIGMPALSPTMTQGNLAAWTKK +IGHNVAFMPHVGQWFQGISLTVSIPIKK +VLRDELKLDIKDIELATSYLIR +ESALELGVLTEKEFDEWVVPEHMLGPK +VGSAAQVKALKQVAGSLKLFLAQYR +TGHGHVNYNNIPSVMYSHPEVAWVGK +LSEAELVGDSPKPVVGAIGYGHVGDGNLHLNVAVR +HIFKHNDLNELEQLLQSYPK +ATNKDSSITVAGSSGLSENEIEQMVNDAEK +YGSLHGSVLGLEVVMPNGQIVNSMHSMRK +HQETLAAIESMDNGK +VLDEVVVDNFDQKLGVDIIRK +SLEQDKLSDKEQQLEAELSDFFR +ILILNNEEQGMVTQWQSLFYEHR +VALPIGIIASGIQYSMYDVK +LGSEYKPNKDELNALLTTSEYSNVPVNDIKK +GSIDITTTNSYEKEKLQER +IEQIKGSIDITTTNSYEK +SVELGVEDIVLGMAHR +ANNMQDTYGQEDIFDLLTGSDATASSVRPVEK +AKKEFDEKLPPKKPAGPFIK +AQALAVAIGSGYVYQTTFEREVNSDLYGER +AISSSRGDVDLVINYLK +ASLAQYEVLANYLTSALSELSGLISSAK +LVGDVFSSVANRYDLMNDVMSLGIHR +QINFGGTVETVYER +RPLLIIAEDVDGEALAACILNK +AFSNGSWNGIDPIDR +ALEGANLGVPMAILGGILAPLR +IVKEEVFGPIVTVSK +LLGVPLSLSILAEQQLIEMEK +EKLSSTSTTLLNLLSGLTAGLAAAIVSQPADTLLSK +DLIEPLDPKDIEIKPDGLIYLPEIK +DNKLIGNFTLAGIPPAPK +VESSTDGQVVPQEVLNLPLEK +GDIDWYTSWYGLGMKPFEAK +QAIETANKADQLANDTENSLKEFEGK +DATQVEINPLSEIEHDPTHK +ELKFGVEGRASLLKGVETLAEAVAATLGPK +AFHELGIPVIPNPSHIVPVLIGNADLAK +TSSGALELLPIFYVDKPLEFFTK +EFALKHFPDYELFKLVSTIYEVAPGVLTK +NYFLFTPLLPSTPVGTIELK +TASGLYLPEKNVEKLNQAEVVAVGPGFTDANGNK +QYQNALSESSDPYDTHLK +LKRLDIEKEDPDALTPEEVKR +AHILFQSPIADALNWDESKIVGIER +DAKKDWYNLPFYDR +VVDTPITEYGFTGLAVGAALK +VQGSVIGIDLGTTNSAVAIMEGKVPK +TMGYSDLNAFIEELVPPNILKR +SQIFSTAAAGQTSVEIR +SIEGFKTTYENVDLVLIR +GELDNTPALCKFANILESATLNTVQQDGIMTK +VTLVEALPNILNMFDKYLVDYAQDLFKEEK +SDSKVVAVFDLGGGTFDISILDIDNGVFEVK +QIAVWNMDDPKSPNFVGWIYFDLHPR +LPVIKPLPLHLESPVPSDIDISR +VNILEQILFSNLENK +FKSSSLEVPLVINGER +FGVPMGYGGPHAAFFAVIDK +FGGISFGLTAEDIKFFPEIDANQDSWPK +HFPDYELFKLVSTIYEVAPGVLTK +PGGVGPMTVAMLVSNVLLAAKR +QQVVGEGTHFLVPWLQK +HEFALKDGSLVQIAR +GLVWEGSVLDPEEGIRFR +AVLGEGKEVFMLVTLPDVPGAFKK +IEREGTDISIVTYTR +ASVIYQSAIPQHSELHWLLSTLASMGLLNR +QKLPWAQLTEPEKQAVWYISYGEWGPR +VKAGTVWINTYNNFHQNVPFGGFGQSGIGR +AVLEGKYDNIPEHAF +LDVTPLSLGIETLGGVFTR +NIAFGIFYNSGEVCCAGSR +AEIEAAQFLKEYNFSR +MTEFKAGSAKKGATLFKTRCLQCHTVE +VLQSAQDKLMVIGAK +PSRNWMIFWSVLTVSIGGIAYDKYKQR +AYRTPQNTITMFRPDKNMAR +DGDEIIIDADNNKIDLLVSDKEMAQR +LREDDEYDNYIGYGPVLVR +NVFKDGKITSTDPNADYGK +QKLVGDVFSSVANRYDLMNDVMSLGIHR +LVDVTEQPHANNKGLYKTRPNSSDKRV +FLVSNGEKLEEIDSDSKDIYTVSFGIR +EPRSQNLL +SKDQVSQR +IGTPAMTTR +IAVDVLRR +FVEHVTTK +QAMSPEFK +AADLISTK +GVDIIRK +GVEAIDVAK +LSAHPDVK +FPQQNQTK +AVWNDVTGK +IFNPDLK +NLLAEAKK +YAFEYAR +NSPNIANK +SFSTEKYK +NAGDMINR +FAEIIPAK +IHELLTK +KFVNSVK +LAQYDVLR +VDNFDQK +PAVDPLDSK +KVTLELGGK +SNRELLNLNLRKGSGMEALRQPVAHSNVKFSE +RAAGSRTSMKDSAGRRLGPKKYEGQDVSTGE +VGKTKRAFQTREVTKRRNRR +INVANFQK +GRARDFNELSDKLDQQERNSNPLKRLLK +ESRFCPAGVYEFVKDEKSPVGTR +YQKGEETSTNSIASIFAWSR +VCIIESSVAPGGGSWLGGQLFSAMVMRK +ILDEDHYGMVDVKDRILEFIAVGKLLGKV +LQLVVTADAKATVIWDSFTCDGSVVLR +PVLYVGAGILNHADGPRL +RSFPVWKGVESRFCPAGVYEFVKDEK +LLDEIQSNTIILVNYYLPNKDVIDADLQGF +NYSDAKSDLDAHSDTYFNTHHPSPEQRPR +MLSDFGNTRWCLRIIGISCSISVLVAIAL +LKDISSKDSNLVQIMLNSEVV +NRRKKENRIDDENKKKLTRKKNTTPMER +IQSGVVEGK +AGTGLHFLHMVMLAAMLGVNYWR +GILPGGGTALVK +VTTPNEKRELSSNRVLKDIFAGTIGGIAQVLV +TLLNIINGYMRTPKYEAFVR +HVEAVKDRIDSVSQLQNVAETTKVLFDV +VQQRRSSGEIVDRAKAAAANSGR +DVLELHVHGGKAVVNSILKAIGSLHDRSSGK +NIITEIGQK +GNVVFLDTILDEARDKALQIMENNKMK +LTSENYPDVHRDPR +NLNLLVSTNNTYKTYYSYKVMVANTYK +RAMEQGKYFKDPRVRFLVSNGEKLEE +MSGSYQHLSNVGSRVMKRLGNRPKNFLPHSE +DIEVVMDDFGKGRAAFISALVGKEGASVVKKVVK +WNQFSIFQNDETTLSRFEHITLIL +KVPTFGYAAYALLKSCENEMVRKK +YYSASPLPASKRPEPAPSFNVDPLEQPAEPSK +RNIDLTQEQTSNEVTTSDPQLLLK +SSTQSYIYGEYKGIHIIDLNQTLSYLK +NTTIPTKKSQIFSTAAAGQTSVEIR +LKSNHNELLTEIREKGELSKELLASLK +TGAMRVDVNLSINEYARVELK +MGHSGAIVEGSGTDAESK +VLWTIHDLKGVYTLLNIINGYMRTPK +RNAVFVGTIFAGAFVFQTVFDTAITSWY +LMDRRGLILQSYEANSTPAQHVYAK +AYAQGVSK +QIWLASPLSGPNRFDLLNGEWVSLR +PIFEKKIVSTVDVRETFDFR +LSDKEQQLEAELSDFFRNYALLNKLFDSK +SYVESLIDIHRAYINTNHPNF +AIEILGGK +RVGKNLIFGLLRDSNGDIIQLV +VSLKENPSISVPREYQMYDPV +CHGEGVQVNRAKTITVDLPHGLQDGDVV +KIVDHIRKNPDFIFPASKRDQILKEL +YLWNPTVYNKIFDKLDLTKTYKHPEEL +KAKNYSDKDIIGMATYSIAPGEAAQYFNK +LPDIKTKLNTLISQTE +AEIKGHRRTYIGALPGRVVQALK +KTLKSDGIAGLYRGFMPSVVGIVVYRGLYF +LRSRMPVHQRLQTLSGLATRNTIHRSTQIR +ITKDGVTVAK +SLLSSKHLDFLDWSKLVILINNEGQSMK +DGRTVVYNYGQYLSEANDDLSVLPMVL +ELEKNPQYQKLAEAFNSHDHVHLR +TENGKIYQRAFGGQTKEYGKGAQAY +GQKLQDYTKSEIIYESLQIQDIRKL +KQVETNLQTVFISDPFAVNPVNARRQKAGL +LVEPFGVLECARSGMMALPRTPLKTSTEE +IAQQMYNTFANKDLRLTEDEVSRAK +GISSPMLMEAPKRATKFACNDQYQKIFKNL +QVHPNNHCNQSQSSNDTFPTVMHIAASL +FIHIPLLTTVGDKKLSKRKGDMSISDLKR +SLMLVTALNPK +ERKVLPTLSVLFCGEIDHFK +STADDSLNNSYKQVK +DYAVFEPGSR +RMMMTSGQTIKYDGALDCLRKIVQKEGAYSL +QGMVVRAQGEAKSAELIGEAIKKSRDYVE +ERMPLPLVHAFGVLKK +LFTNRLLPVLFPPQMGEECNVEDV +DQNDGNFKVNKPFSNKTAR +AAWYISYGEWGPRRPVHGKGDVAFITKGV +KLESQLSAK +MFSVTRRRAAGAAAAMATATGTLYWMTSQGDR +IAEELIYGKDNTTSGCGSDLQSATGTARAMVTQY +TGGILKRDYKSGATAYIYKAQSSKAMKPFIE +MDTPELFLKDTLHSAKGRGVPSLMDK +RPNSTTPLNFIDVAGGSGDIAFGLL +HNVMRELLDSLQVDEATNTRLQSNRPRK +NRSPEESELLKLKRNYNRSL +KEKLFKKLGGEVFIDFTKTKNMVSDIQEATK +VDKAEAQKVRDQITSLKELVAR +SKVRNIGIIAHIDAGKTTTTERMLYYAGISK +ANEFGIKLEDVSITHMTFGPEFTK +NVVVKWQGKPVFIRHRTPHEIQEANSV +EIAQVATISANGDSHVGK +LYSEYQK +QSKSKPKICFINKMDRMGASFNHTVNDLINK +EKRGYLVMEKDKLLQDIKEAQNK +ALGLSNEAPQLCKAILNKLMNINYSLTNDL +YYWGGPDDNHQRKHLWEERIEKV +AASDNGDIDRVYDGLNVLGRTPWTVNRK +LEPRANDSAPQSVLELVDSPVMSESHTVNRGNL +NSLLESSILHEVKIEDFISFINR +IPENFQNENSAINKLLFTSQDERR +NAQNELYIPIIKGMEE +KEILASTDGQPVKEPNQTVAKPSGSSTSKISSLL +EIRDASVNSSMKLDELNIDLSLRHDIFL +PIFYVDKPLEFFTK +FRDEEGQDVLLFIDNIFR +FVSESDWAYGLPELNDR +EAFENAITYVVATGGSTNAVLHLVAVAHSAGVK +EALNSAMAEELDRDDDVFLIGEEVAQYNGAYK +EDAAAENGFSFDNQVTITGTFDHRTIDGAK +NDPVSSLSFEPSEKPIFNAK +LDGIYVGIAPLVGKATLLTRNPTVENFIE +KPSADSTEATQQHLKK +PNATSHIWSDFTTRPSSLSIQSSK +QHTHSHSHTHMHDNPLLSLNVQQIKK +NDTFALIGYGSQGYGQGLNLRDNGLNVIIGVR +EVPKLTEEDMEAIGAR +INVQKIRHALVRYNQDGVQKHNQKPPR +GCIPSKALLNNSHLFHQMHTEAQK +TFAFLIPIFQHLINTKFDSQYMVK +AVGSCKPEQVPIRSLASVVESSSKILDKSGSDR +NSLIQQNTARESSKNLLSYFTRASAFPVK +WKRIKSGKISDAEVNRAKAQLK +KPISASDSLFISCTVFNSKGNIISMSEKFPK +LINTFVPSMMLTSVAGNDIFFRGLFKSPVL +PSQFKIVYYLDSPDREDWTGGVGY +KGGPHKVGPNLHGIFGRHSGQAEGYSYTDANIK +RCFQHIAYRNTPAMRSVALAQRFYSSSSR +PAYFNDSQR +SLEAVATIGVVSNIDHQNRSLGKAGR +DKFENMGAK +NPHSKYKRGTLTAKDIAKLVAPEMPLTEVR +SSTYKAMDHQTLLKIADLALQEK +PIGIIASGIQYSMYDVK +NGQSNRNRKYTGKTGSTTDRISSKEK +LRQSLNATANDKYK +ASGKGGQHVNTTDSAVRLTHIPSGIVVSMQDER +TKYDLLLGPGIKKYFLRMVYPMK +FPVFEVIILRSAFSNMEEYKE +RTINYARLGSDKTYGKQSNKKGR +FHTLDKYDMKDPTSLSVELRELIEGNKK +KEGQYVDVRSVSKGKGFTGVMKRYGFK +SSLPKDMHPMTQLAIGLASMNKGSLFATNYQK +NSAVAAKEGLALSSNISRDFQSYIVSSLPGSTDK +TETGIDLENDRMAIQR +SITEWKPVTGTLPPMNQKEWEEEFIKYK +VKIAEQYLVPSAKKSAGLENSHVDMTE +GDAMSNNPYFAAGGGLMILGTGLAVARSGIIKASR +KMDEISTALAENSSKETLLTPKKIIGAAY +KGMALNLEPGQVGIVLFGSDRLVKEGELVK +GYQQNLWLFGPEKNITEVGTMNVFFVFLNK +ARKLFKVGLLGGESNSFNKKVEQPLVDTQDVL +GEKKDRYDDALNATR +SILFNKLESIAEQETPKTPVLGCGITYSLMKK +MMMTSGQAVK +IVGEAITNHPK +IQELINNIAK +GIDVNGDIK +RWPELSGQSARPTIVNISSILHSGKMKVPGTSV +TRLQSYSEFIKIGEQTHYTGVWNGLVTIF +YITENTTLLKSSEVADKSVDVAKTNV +GKHDTAGSIGAGALTGALFK +PIFDELILSLANLNK +FLEPIHKEFPWISSGDLFSLGGVTAVQEMQGPK +NVDVSVAVATPTGLLTPIVK +LKGPSVASYYGNPDILK +HQIYVQAINFPTVAR +NPTVENFIEATNLLEK +NIDIVSAFQSYGEYISK +LHTTLKETDKYKDFK +TLLSGFQFPFFGEEK +YFETNVQVGENMQK +SGVHMIESPQQAEDVAK +RVEATEEESEELDDIQEGEDINPTEFLK +IIDTVPFTSTDGVLTK +HLDETTITNAVDFK +KSFNSTETKPVFATK +KAGISYAAYLNVAAQAIR +VNAGTVWINTYNDFHHAVPFGGFNASGLGR +KSQIFSTAAAGQTSVEIR +IKPTAEQLAQWEALK +SEAGNGSHMKEYSSGINSK +FGKDKKGQPVFDASDKK +IDPVNSTLKLSSLDSPDYLHDPVKIDKVVEDLKQVLGNKPENY +LETLAAIPDTLPTLVPR +EKDRNDLITYLKK +VGINAVLSAVILPSEVAFK +YDQYFKYNFNNRLNIKLLKPKEFDLTLNPWLTGFNDADGY +SNEDAGTAVVATNIESK +SDGPLGGAGPGNPQDIFIKR +SEESKENNEDLTEEQSEIKKLESQLSAK +SLLLPFVSAPLLYFTSSKKIMRVQLNRTKELSRTTDKKPVADR +SHFLFTSDNGLITIAGGK +ISNPVNSTVPIVAQVLK +DYITKNYKGDRMVLAGAGAVDHEKLVQYAQKYFGHVPKSESPV +GGEDFDIYLLREIVSRFKTETGIDLENDRMAIQRIREAAEKAK +YLSTARSPLSKVRNIGIIAHIDAGKTTTTERMLYYAGISKHIGDV +ASESEDLSFYNEDWMR +NKSLVESTHAVSIGSAK +LKPTQYTQLLYMLNK +QGELLEAFGSGTAAVVSPIK +YSIIVAATASEAAPLQYLAPFTAASIGEWFRDNGKHALIVYDDLSK +QELSEILSAFEFMDAK +FKTFGCGSAIASSSYMTELVRGMSLDEAVKIKNTEIAKELSLPPVK +NNIQAEELVEFSSGVK +EELEEAKRNASSEPSEAQKRLDELKKIKEKGWFGYNKGEQSE +QNVDTVFGYPGGAILPVYDAIHNSDKFNFVLPK +SGYMMLPTDYSLIQDPK +AMQFNTIGVSDGISMGTK +SIVIKNTDENLINHSK +SSTLMLNHLGLNEYATR +GLPFGITVPLLTTATGEK +YTYNKSCPSKSNKGK +LDLSNIKPIQLKPK +SNGSSEVYKPKEEVVK +QELSDLLAKEPSPANAR +AGNFADVVNIRMQNDSALEAAKRRNYKNAIDGVYKIYRYEGGLK +FPLGLYLDEITDPHNIGAIIRSAYFLGVDFIVMSRRNCSPLTPV +TGAGSSVQLPIYNTAK +SFQIAQLAKETVAKKE +GNCLPISMIPIGTIIHNVGITPVGPGKFCRSAGTYARVLAKLPEKKK +LADGLFVNVAKELSKEYPDLTLETELIDNSVLK +ALKQVAGSLKLFLAQYREVAAFAQFGSDLDASTK +VGSAAQVKALKQVAGSLKLFLAQYREVAAFAQFGSDLDASTK +LDAGKRPNSTTPLNFIDVAGGSGDIAFGLLDHAESK +FSHLPMTVPIKLPNGLEYEQPTGLFINNKFVPSK +DKATNKDSSITVAGSSGLSENEIEQMVNDAEKFKSQDEAR +TGPLVPLVAIDAWEHAYYLQYQNK +SLNILNNTTLTYTNELIGSSFK +WNGEALTIDEETGEDKVIPGLMACGEAACVSVHGANR +LAQYDVLRENGHSPSEAFNETVEEATQSLYPLIGK +VYYPHKDIFYPPLPENITVESLMSAGVHLGQSTSLWR +PLVAIDAWEHAYYLQYQNKK +GGYTGEDGFEISIANEKAVEFAEQLLANPVMKPIGLAAR +VLPVMGSMIANDYDSYQYLVESIERFPDQETFK +TIFEAENIPIDWETINIKQTDHKEGVYEAVESLKR +ASLAQYEVLANYLTSALSELSGLISSAKLDKFTDGGLFTLFVR +VPITLPNGFTYEQPTGLFINGEFVASK +LLGSASAGIMEIAVFHPVDTISKR +QSLELVNPGTVENLNKEVSRDVFLSQYFFTGLR +DSSITVAGSSGLSENEIEQMVNDAEKFKSQDEAR +NTKENFYELTDFKYPSNYE +YGTMKENIINMTIVLPDGTIVK +EALNSAMAEELDRDDDVFLIGEEVAQYNGAYKVSK +KVFFDPAVNGTK +NVEKLNQAEVVAVGPGFTDANGNK +EGWGTPHIKPYGNLSLDPSACVFHYAFELFEGLK +LSSTSTTLLNLLSGLTAGLAAAIVSQPADTLLSKVNK +VLISNQIDEIWENTDISSLALNLLR +LLDYFKNDTFALIGYGSQGYGQGLNLRDNGLNVIIGVRK +LWNLPVVFCCENNKYGMGTAASR +DIEGTHGVVIGGFK +YSIIVAATASEAAPLQYLAPFTAASIGEWFRDNGK +GYFIKPTVFGDVK +QSSASGAANTPNNNDEVMLLQQK +KDEIAGLIVEPIQGEGGVFPVEVEK +YELPSFNDDIQGTGAVVMASLIAALK +ADLESFANNHFLNSNAVVVGTGNIKHEDLVNSIESK +TASGLYLPEKNVEK +NSVIDAIVETHKNLDGYVVNLLK +HATRPPLPTLDTPSWNANSAVSSIIYETPAPSRQPR +LVSGGTDNHLIVIDLSGTQVDGARVETILSALNIAANK +SPNIVFADAELKK +FMQDDLRPTLMELVGFTESINATIEPGFANEQSLQSANGLKK +DLHPMAQFSIAVTALESESKFAK +SVEELPLRINEAFEIATSGRPGPVLVDLPKDVTAAILR +LLEPQNDKTREFFNKRPIYKPLTSRRARRPSV +YQAIKNAVGSKKLANVMGYLENESNLQKETLGMSK +LVWQSQVGPKPWLGAQTAEIAEFLGPK +LHNPEVVELMSNSIANLVEGEFMQLK +DTVASFKAVLEGKYDNIPEHAFYMVGGIEDVVAKAEK +DLQSTLDNIQSARPFDELTVDDLTK +KYGVSAEVINLR +TGPLVPLVAIDAWEHAYYLQYQNKK +SPAQIGGFVLNK +AMPGAAAGAASPQQPK +ITSTDPNADYGK +EWLTAAWEGFK +VAEILHHQANK +ILKDEGSKDVDVGEPIAYIADVDDDLATIKLPQEANTANAK +NFAEFNSVYAK +SIDSVSSAPYGNALVLPISYAYIK +SNNEPLSIDELKQGLPEIQDSQLLESLNNAYQEFFK +VQFHPSGIYGSGCLITEGARGEGGFLVNSEGERFMER +LLPAVKHMYQTRGPAAFVQGTTATIFRQIANTSIQF +ALYNFGIKEKKSVNIEMGRTQQTKKIDQSLSKKLPK +HRIDSALFVLVLDESQEETTNDGDDTADISQMFNR +EASIKGSTPVDYLKPIIADADMGHGGPTTVMKVAK +VKMLLWMPSTTARKLLARPGMHSRSKCSVVRE +NANKCEELFDKITTSKLAVNSEFYKMMIKFLV +NTDENLINHSK +DDGSKGTTLSLVQK +MVKSVEELPLRINEAFEIATSGRPGPVLVDLPK +VPADDLTDPAPATTFAHLDATTVLSR +EAFNLEALLPPQVNTLDEQLER +YSLDYARTRLAADARGSKSTSQRQFNGLLDVYK +VADPKFENLIVFTTRPETLFAVQYVALALDHPIVQK +VSKVNETMEDVKISAGTLLKGTERSGRTILQQNIDLFR +PDQEPHKVQSVGVNVFSGAASGIIGAVIGSPLFLVKTR +NATRAAVEEGILPGGGTALVKASRVLDEVVVDNFDQKLGVDIIR +FEHMEDIPFFDKLKLSNAPVKDMPMVTKAFTK +EGTVPTDLDQETGLARLELLGKLEGIDVFDTKPLDSSR +SQSFLDRIDVSKEKRTINYARLGSDKTYGKQSNK +SHGGAPNVKPGQSLPK +ILVPEGTKDIPVNKPIAVYVEDKADVPAFKDFKLEDSGSDSK +NATLSSYYKKASNLEHGFNPSKSQSASVQNANNLR +ELVSLPDRDLDVNTYYTLPTSLLSNTTSIPIFIF +SALARSLQLQRGVAARFYSEGSTGTPRGSGSEDSF +EKSKEQAKDTDTETTVVEDANNPEDQESTSPATPKL +NKRTKSKSSLSPLAQRVVTQLSVMSASRKQPKL +GGNIYFDKSQNGYYKWSIQSKDMVLNFINDYIK +LHDTYQGVWQKKTEYNALLKGFFVGDLGAKTF +HIYQSAAAGLKK +RTTESKFKKFQIVVNGRVKFMYTADKNFLK +TPARFLGYNISITPLKRMPTVTKTIRGKTIRSRNTTR +KKYMYQTLAIDGYAWLHRASCACAFELVMNKPTNK +PYSATDVVKHRGSLPANTSIYPSSYQARKLFNLLE +PIHKEFPWISSGDLFSLGGVTAVQEMQGPKIPWR +KGLWSETLNRKISIKMTAKVLKTISKEGGIDNYL +TLLDIDQHNAQYLELQEFIR +VHYDPNGILNPYK +LAISLEHTGIFK +YSQTVMYNTMKFFSKSLELFIKLPLENLLRR +HFFRLPTAFRPISRVSLRYSSTDTAQPKISK +RGPFLGNNAGILALSYNIINSTIDALR +WNVVSALYIKKLCHYKKRDGKFVANAKKDIDLAK +NLQRQFNLAGREVDEDLELSKSNVLVVGPSGSGKTLLATTLAK +PDPRFTAMLEFAQKRPIEFENDKNVLLMQKLAE +RLESRENGKYVLVAGITPTPLGEGKSTTTMGLVQAL +EPHIDYLREAVKSDYDLLRYLKQSLDIYKKR +KKSSMLSNNIKIKTLDEFGRSIAVGKRKSSTAK +LLEEAHVKLDGK +QRQVELISVGDTSSLMEPETRGWTGSSTVKLRSK +LKDYKDAEIAQR +KSLNPKRKNEEVRPIFWKRRPYSYVARTSQWAVDEF +FPYIPIPVIKFFVSSLYCGGENFKEVIECGKRLQKR +KALKDAGLSTSDISEVLLVGGMSR +GMSKLLLERGSEAIFLDKRCKVLSFRLKMLKNK +FAKFVTPKGSNVVRPYTPVSDLSQKGHFQLVVK +TGGSIKGSTLQFGKYGLRLKSEGIRISAQQLKEADNAIMRY +PRPNEELVFGQTFTDHMLTIPWSAKEGWGTPHIK +LVKKGTLQKGKILICGNTFCKIKNLIDDKGIPILK +SIVEPSGALSVAGMK +FTVTLIPGDGVGK +IQFHIAKIDGFPRMSSTGKSASLSLRGDRQKNE +SPCVMIERHNPQECLDNPELNKDLPELCIAQMK +QSFFKRTGKFTLKALLYSALAGTAYVSYSLYR +KIQKAGESVESSNSKEVEKERAKKFRFSNTLE +STIYEVAPGVLTK +LDRLKVFDGSENPYKQNITAFAHEQSSIPEPLK +FPTLPEVPTFFAEILTDRGDFDTAIKQYDIAK +SLGFSPDAQDEAAK +GNTANVLRYFPTQALNFAFKDKIKSLLSYDRERDGY +LGANYAPCILPQLQAAKRGYQQNLWLFGPEKNITEVGTMNV +YNEHRHESSSEVPKAYIYTSFSVVDREKEIKQVMQQL +VMTNDDLIIRAKKYLELDSSDSDASSFTQDLRNK +QLGSIHRWLREKLQQDHKDTEDKDFFSNNGIL +SVFPETDSTVETKSGKKSIVSRRFDYTKNKVEVIARSRR +ELVDQSIPPTDPRYLEIESVIKDSIGSLKTDLDLK +VVVMSGASKGNIAVIKSFDKRTNSFILDENGPTKTVPV +LARYKAKYFDGDNASGKPLWHFALGIIAFGYSME +EATIWRHVLWNAGYFGIIFQIRKLLPAAKTSTEKTR +LVHSSNLYFTK +FFTVIFGCSRAMGPLTQLVWDRILGLPIERPK +KVLIERGWISEEKVAPDSRNLHHLSLPQEEHLK +YNGIIQGLERYGLADRIPIVGVETNGCHVFNTSLK +NYYDIGDKLYKPAGNPQYYQR +EDAEVQRDINQVPFKIVKHSNGDAWVEARNR +MSGKPPVYRLPPLPRLKVKKPIIRQEANKCLVLMSNL +VAIQTNSNVLMANAWHHRVDSLTSLVALVAITSSYF +QRCKELILKQIRDLSPETYKRAADFVHFVSKNGDEL +ASNKSTISSIDNSQPPPPSNTNDKTKQANVAVSHAML +LQENKSGNKNEDNNEDAKLNKE +SQVGSLPLYISPEVQVSINALSMPR +SLSNIDELYSLRNDDKAQTSAVGQKVLELLDSPDFKK +NKISENCFEKCLTSPYATRNDACIDQCLAKYMR +FADENFVKKHDK +DRILGTPNSEASPVKKDLESLSMISKLLREQRIK +NQADNYGRNFYYFTIGSIDSFEHKLQKAQDEL +DNTTSGCGSDLQSATGTARAMVTQYGMSDDVGPVNL +NKDKEYFNETRISKANEVELSKIQTAMTRLTNRHR +KDRYDDALNATR +VLDEADRLLEIGFRDDLETISGILNEKNSKSADNIKTL +TLTENLKPIFEKKIVSTVDVRETFDFRLKKKIIR +SRAYLHQTCVFKQNKETAQDSPELLAKSSHLNSK +LSLDGSTAIVEDIGRQVVTTGKRLSPEEVFEQVDK +VVVMSGASKGNIAVIKSFDKRTNSFILDENGPTKTVPVPK +NTIPGDKSALFPSGLRIGTPAMTTRGFGREEFSQV +SLRPETNILFLNPSLNLLEHLHRYRWRFDEAR +QRIKTRSTAVEPLARTPEDLMLNWDDLHLGNDAE +RSCYRYASTGTGSTDSSSQWLKYSVIASSATLFGYL +LLNQTLLSHIRDKLPDIKTKLNTLISQTEQE +AILEVHGWKGFWRGLKPRIVANIPATAISWTAYECAKHFL +LGIYPAVDPLDSK +LTISVTDTEVER +QLQRGVAARFYSEGSTGTPRGSGSEDSFVKRER +KYEQQVTQQK +LQAAPMPKPTLFRMLESILANEGVVGLYSGLSAAVLRQCTY +EEENGDEDEDEDEDEDDDDDDDEDEEEEEE +LGRAIFTESVKNVAAGCNPMDLRRGSQVAVEKVIEFLSANKK +SYIYLNSDIFSKYISLNDMDKYNNGILTNYQR +LNKANLTEEEKELLNEPRARDYVDVCIVGGGPAGLATAIKLK +RPVLNKGDSSFIAKGVAAGLLFSVGLFAVVRMAGGQDAK +EKSSDKIEMLGIDRAKKKSVQSDLCLFIVDPTDL +LMFGFKKEEGYGKWFAGNLASGGAAGALSLLFVY +ATISANGDSHVGK +MKFALAGAIGCGSTHSSMVPIDVVK +LKTKIASPLCTLNERKRIEKANAGRILANEEGKPFY +ENLLRRCQLNYLLNDQRLSFKVDSTELIVKPK +YLLENFNVDLEKISEYFPLEATITGMLEIYETLFNLK +VVNEPTAAALAYGLDKSEPKVIAV +KEAGIDYKIGKFPFAANSRAKTNQDTEGFVKILIDSKTER +LPSGTEYTLTGMAKGAGMICPNMATLLGFIVTDLPIE +QRCHIDLRTSQQKHTMYVKK +AVAFSQYPHFSYSTTGSSINELWRQIKALDSE +ELYEVRNIRPSFSGKLGGYGGMIYSGIDSLILKGKVPWTLKF +THWKKSKLSQYIIEKIWNCQPISTPTTPTGIK +GSSYTNKANLSNNKINKGFSKVKKFNMENDIK +KSRNAARISSNGSFMPLQLQNAGVLTPEQITLLAVKETRKR +FIVSNQSKSSKASKSPKWSSYAFPSRETIKSHEEAIKK +ERTVLKKRSRWGLYVVVEQRGTSMTKLMVR +MFKRQLSTSVRYLQHYDESLLSRYYPESLLK +EENSISRKDYLAKPNILKQLEVRESKRKELQDKLSKVL +CIPDLPINLLDIPMHVVTKINIQGKYEPYIVKQNQFVK +EGEGKNNGNKDNNSNKEDGKDKR +DGYNIVQLGEATALPVFLENLKQTMLSDSSGRR +PKYKNSISYVAKTIYAKEGIRAFFKGFGPTMVR +KIIGAAYAKIRDEKVVKVGGTTAIVAHFPSNGKLEV +YLYRHQAYGNVIKIAQKFLYTTIGSQRLLKQDASLPELKK +SMLIEVISELLRERLQPTRSYVESLIDIHRAYINTNHPNF +KSFLDNLGRSTVGTAKDGYYLYIVSIFPDKDMLGEF +DSNKPHKDSTDQDDDAATIVPQTLTYSRNEGHFLGSNF +SSAMTEYFKRGQYIPGLKVNGMDILAVYQASKFAKDWCL +PLLFNSAVNLWNQAQKDITHKKSVEQFSSAPKVKTQVKK +KVTLELGGKSPNIVFADAELKK +NFYEDEKLVHVIDDIPLVK +DVFLSQYFFTGLR +MKDLVIFSDELNHASMIVGIK +PGVVEVMEGSNSK +ETLAEAVAATLGPK +SFNSTETKPVFATK +HGSVSAEHGLGFQK +KQLDIYANVALFK +LSILFEDVYVKGTETPTLR +TEEQLKEAGIDYK +RVPDANAYWLPNENVIRK +GYNIEEVDKFLAAIESAKR +DDGSKGTTLSLVQKDINLLK +KVAFTGSTATGR +FGGISFGLTAEDIK +KPNESIFSEFK +LRPNIVIATPGR +SSSLEVPLVINGER +LWAHAYLPSEAHPDIFTSAK +PLVAIDAWEHAYYLQYQNK +KDWYNLPFYDR +SYLESKGENHR +MSLKEIVDHLEK +ALDTILNQKR +PPKDLDVILVAPK +NVAAGCNPMDLRR +KKFDIVDQLLSTL +SDLVTKEPLITPK +KIFEAPHPHATR +LSNELYAIFK +YDDALNATR +NSVIDAIVETHK +LLENGITFPKDAPSPFIFK +HIRNEPVKPFR +VAFTGSTATGR +FTDGGLFTLFVR +VTTEEFLDAVEKR +FLDKLGLSR +YALEHLKEGAPLK +IGAVFVPVGGGGLIAGIGAYLKR +DSGLWGFSTATR +QFWLEGQTSHMITIPVSILGK +VRDQITSLK +TTAFLKIEQLHPFPFAQLR +LGPEALLQTPDFNR +RVVDTPITEYGFTGLAVGAALK +WFAQELTK +FTVEDAIKR +FGFMGLFSK +FAFDFAKK +VFFDPAVNGTK +KQEAPAEETKTSAPEAK +FFDISLVDSYLNKDLK +ISPYFITDPK +WSYTFEDSLDLLGKLPVIASK +VDIMRASGKGGQHVNTTDSAV +WSIVEPEVR +VGSAAQVKALKQVAGSLKL +DYGTLVTGGRDAALK +MLYELIGLVR +TFGLFANVRPAK +IGEPIDERGPIK +KKDHMYLQLSHLPPEVLK +IPYALSDHIHER +SRPAIYHQFNVK +ILIDSKTER +SAEDQLYAITFR +LGKLEGIDVFDTKPLDSSR +TLAEAVAATLGPK +TPFGDLVPHVSFLNLNDEMTK +KYDLNFVK +VGGFFAETESSR +ESIKGLPVLEEVEDEDAK +QISSDTQFHK +KSVTAVHK +FAKDLLESVDNFGHALNAFK +GMGWGNNASAAIQRLGLGEIIK +GKGHFDTGYK +MTSHLFGLKPNDTVSFK +QSAAAGLKK +EFNSQPDYREK +DAPTFQESALIADK +DSAAELLNKLETLGPLHAFK +FIDDHIMSR +IREAAEKAK +SVTKEPIEASIK +DLLESVDNFGHALNAFKEEDL +NETLQKLGEQLIHLEINKML +LANNIMNKK +VKDEKGLIPPGTLLKPSFFK +EPEMNADEKAASLANAAILSPE +QAYAVQLK +VHYIEAEALDVDPKAK +ATARTIVLPRPHPSWISFQAK +EVAQHLGENTVR +LIDEYGDDFAKGYDASKSE +VMSGASKGNIAVIK +RDLTRREYATNPSKTPHIK +KEHGKTVIGEVLLEQAYGGMR +HEYLQKRTKELEKAK +LSINDLLVK +HSHKSLLSVASDLMALTLLK +GPSSGLGKTSGRGQKGQKAR +KFIEIAKKRSLEENPVNKR +KGIVCSVGGGGLYNGIIQGLER +EPASTIKVIAGPGSGKTLTLLYK +LARAKSKQGSKILK +APGFGDNR +GSNNIFAIGDNAFAGL +FLNNNLIPYALSDHIHER +YDTIMKEIQKLEDDATRKAL +VSDVLNASR +DEVVVDNFDQKLGVDIIRK +KLTNSALGHCLGLDFLTDPSE +NLATSSSISSTKAKTTK +YSILYNR +ALASEQPSRK +LQTMNKVVADKGFGEILKK +YLPNKDVIDADLQGFGYLVPK +LQSKLQSYHDTRDCYL +LIKPIAQPRGRLVRRSCY +IFTFLNSSEIKK +NTKEKNGFNIEKKALSK +LPTLQFYNPRMKFDVIRIK +KQAIETANK +RHGLFWLKTCPRLNVL +SSAMTEYFKR +RTYVQMRMDPNQQPEK +LSDFHPSILGLTGTFDEVK +EGICGSCAMNIGGRNTLACICK +RAPTSFVRPSAAAAALR +RTINYARLGSDKTYGK +TLLMGRMPAVKFSTRMQLR +PFLSPFAILPHHLEISF +QAAYVAAFLWVSPMIWHLVK +LEKKIQEEFGLDLEEEK +EYTEENIDFVAKGV +DVQYLTYLLHNKYNIK +LLRDKSTSPLCSQDERNL +VNKTKKAPGQSTVGLLAQLAKQL +ICLPTFESEELIK +LNTNVILKREDLLPVFSFK +FASQLCQEAGIPAGVVNILPGSGR +KDLDKKTIMEINCRFRLK +RRPLKLEAPSK +YLQDHR +FFEEKYNKKTLMKGVLLPK +IHCIHRCLLNEANLKDRK +ATLQSKTSSNMNIEFVTRYV +PLLKISKNCEAAILRASKTRL +EKAHPDVSKLLLQVLDEGK +KLMTATISADGGGPSE +VDHCTEKFVEHVTTKRKK +IGGNSDVIKNQLL +EYIDFTAGIAVTALGHANPK +ILQKKYGVSAEVINLR +EVSELIEELIDTR +KIDAITVK +RAGVSYGK +QLLDQILR +YGMGTAASR +LGVDIIR +LKTNIK +NLVALK +LASAMEK +INIVSGFGK +AGVSYGK +VYDYK +KYDEALK +GPIDAAGR +IIWDK +IFQAGK +EGVITIR +MIDTGR +SQVLAK +TIAEYFR +SIVLK +SIVIK +LLDYFK +VVPQVK +KINVLRK +LSTEQIR +NTTIPTK +AIFTESVK +SAIFLK +LLSVMK +ASAMEK +HLRVPMTE +EVSTIPR +FGKDPSK +ADLKDSVK +EATERQL +NNIAK +QVAGSLK +RPLFPGFY +SIVSR +ISSSGIKR +AIPPHQLAIGTLGLLGLLVVPNPFK +VLFWYGIDDINTISELVENFVK +DAPTFQESALIADKLLSVMK +GGSMHLYAPGFYGGNGIVGAQVPLGAGLAFAHQYK +SQAPLRVPITLPNGFTYEQPTGLFINGEFVASK +LNQAEVVAVGPGFTDANGNK +THPNNIKLSINGIGKDAPTFQESALIADKLLSVMK +GPVLLEVEVDKKVPVLPMVAGGSGLDEFINFDPEVER +ILVENEIGDENYDWSHMLQIGRPLDGESVIQR +GFMGPVIHEQSFDK +YKYDVSLPLKDLYSLVEATNAR +LVDVTEQPHANNK +KLNQAEVVAVGPGFTDANGNKVVPQVK +LINAIVGHAGDGNFHAFIVYRTPEEHETCSQLV +LNMNDREVVALMGAHALGK +RLTLLGDEQVEMFAKEDPKISRHIELQK +AQYDVLR +KDLDK +ADWPREK +VPIVAR +SIEGFK +FVSIR +EDLNE +VGDFIK +TVVVIR +AALIAAR +NDLINK +GLNVALVEK +MSIVGR +AVLAELMGR +KNALEAK +VTAVIGAIV +IAEQISK +YKELVK +AITVAAK +NAQILLTK +QLHSHRQSLELVNPGTVENLNKEVSRDVFL +EALIEDINIDIRTAQTVLATPPYQVFKQQL +PIISAYLKMSVNGIREIFSCLDILTISDLNILMNDL +FSGAASGIIGAVIGSPLFLVKTRLQSYSEFIK +GLVTGPIKYGVKILASGKFHYNLPIALEASRASAKAIAAIEK +FQKFVSSLNKSTIAGFASVPLRAPPSVAFTRKK +TSGIWKVGVVTAMKIVKRYSEMK +KDKKESNKDEIFELRDFIVNPSFNTKLR +KLEDSGSDSKTSTKAQPAEPQAEK +VIDALQLTDKEGVVTPINWQPADDVIIPPSV +YSIWNKIKEHYVSISAHDSRIIYK +IYKAQSSKAMK +WRSHMNRLQKQRIKTRSTAVEPLARTPEDL +VSQYAYNYREPVFEEYNKSYTPEFLKYFLAMQVQSDKRDV +LILDISAREINHLDEKLLKKKHRK +FVEHVTTKR +TVLTTKSFICGVLLLENK +YSILYNRTRQAVITNELVDIITGASSL +NNSMNKKFNQWLAGLIDGDGYFGIVSK +KRSFTTYLPDTVVPMLPQSICHLSDLGK +GKNTWKRAFLAFGSNIGDRFKHIQMALQLLSR +SKIQTAMTRLTNRHRNSIPSEFAYLRRDLK +RMRFYSDEAK +ENVKITVDDDTIPLKE +NLFGGRKNIDMVHLESVVRYIYSQLY +VRCQNGQANSTVHAITNIIKEAKTQVK +KKGLIEGAILDIINGSIAGACGKVIEFPF +QCRLKRQKSFQIAQLAKETVAKKEK +DESWSCVEQGNETSVSTVK +IPDKYLAACGKGFEEVCEKGPL +MRKITNKVGGFFAETESSRVYSQFK +LEVARKERLDGLGPFVSRLPKKWIPYAELMR +FLSTINRDLISWFTTIFMGENVLK +ESNKDEIFELRDFIVNPSF +AIGTLGLLGLLVVPNPFKSAKPK +ALKEIAPSGSNGRLLKGDVLAYLGKIPQDSVNKV +IDLLVSDKEMAQRKQSWVAPPPRYTRGTL +WGYDVGKKLVTFNNKQGGSNELTMGQMAAAGFISAIPTTLVTAPTER +IKYLYENNMLHGNTMTVTGDTLAERAK +MKYVRYADDILIGVLGSKNDCKMIKRDLNNF +AIAAIEKAGGKFTARYYTPLGLRAHLNPQWFLEKR +LKLVEEAKKEYAKLHPVVTPKDVPANASFNLE +VSGTLAARGFNIDSLVVCNTEVKDLSRMTIVLQGQDGVV +FEQKTYWSHSGRPGQLKLQTMNKVVADKGFGEILK +NFSLKDCLSLDTGKDASDMTEVFLATMESSKVLR +KYGVSAEVINLRSIRPLDTEAIIKTVKKTNHLITV +LIIQNRGVVRDIVPMGIRYL +RTLATAAQAERTLPKKYGGRFTVTLIPGDGV +LYECIPDLPINLLDIPMHVVTKINIQGKY +NAVVTVPAYFNDAQRQATKDAGQIIGLNVLR +MDALNSKEQQEFQKVVEQKQMKDFMRLYSNLV +SQTIVTSK +MSHTETQTQQSHFGVDFLMGGVSAAIAKTGAAPIE +IKMVPTRTLRRINHSSRDPIQKQVLALIKANANLNDNDKLKIR +FDKIPMAAASIGQVHAAELPSGQRVVVKIQYPGV +DRNEKELLSTVMREKKAALDRASIEYERYGRAR +LMQKLAEIAPKVLLEHGKSKNPFPNVDSASGILFYHYGIR +RDVMENDIRQSNVASISQQLQRFFKNGLEYYRNR +SQLDLMKIIGDKWQSLDQSIK +SVTGQSKLFVKSLLDQDASDATKIQL +LWNLPVVFCCENNKYGMGTAASRSSAMTEYFK +YTGKPNPSTGKYTVSFIEGDGIGPEISKSVK +DQKRQILDRLTWATSFESFLSTKFPNDK +EAKSPANSYINDVFTVPMSLAGLPSLSMPLK +NGDCTGDALTSVTINNNRNKRENNESRIVVLKYSK +KALRAARRVNDLPTAIRVFEALKYK +PEILSARAKCNDLTTSVDQMAEQTITMTYNNTK +LEHYFKYPEKEVTNGIKAGLRYIRDFLAKNK +ELLNGQSAQGIITCREVHEWLQTCEL +ILGLPIERPKSLNLEGLEALTKASNV +VDQSIPPTDPRYLEIESVIKDSIGSLKTDLDLK +IKREDLVSKHGLLPRDLRKIEKSRK +TAAANLTKKGGLSLLSTTARRTKVTLPDLKWDFGALEPY +KSKPAITVKSNKKFYLNGKVFNKDKEYF +QIENIKTFGIPVVVAINRFETDSQAEIEVIK +TNNINFYMSKNLIKKVSINDLIR +PQGGNTGLVGGSVPIFDELILSLANLNK +YGESNIFKQSNKGLYGGSFVQFGNNISESK +CELKQPGQELIFGVADLHAITVPKPDGEMFRK +LTRFQLETLSNKALGLSNEAPQLCKAILNKLMNINY +DRLKKNPYAHKPFGSTRGHLSSSRRRLR +TPASEPSAEKGVDEWLEAINELREEFSAK +ILRASESEDLSFYNEDWMRKYKGQSKLVLR +TDGFQGLWKGLVPALFGVSQGALYFAVYDTLK +DFPLFSPVIIEDKSGKKEKLAYPEYEKDR +VEPFGVLECARSGMMALPRTPLKTSTEEAADEDEK +LPYINLAPDVISGVRGLMPQLPDDIMRILMK +KMLNRSKGPAVWGPRAQIDRELYK +LFTLFPGLGYAASYKVLQRVYKYGGQPFANEF +IPGQGSYPDIAVEADLKDSVKL +NDTFALIGYGSQGYGQGLNLRDNGLNVIIGVRK +KLESSKNTSHEK +TLTGIETSGIKFSINPFDDIAVE +QREYYLMEQLKGIKRELGIDDGRDKL +RNDSMLKLIENCESLSNFIRICDFPEKFK +DALLIKAEINNPEVQYNFQFNNKLNNVKDIIDYDVPVY +IWDLSKQNKIGELAGHLATINCMQINRDYGTLVTGGRDAALKL +DLNKPFLMPVEDIFSISGR +NTLITEDPSLSISQNDETGQTVLNGMGELHLEIAK +EQVELDNGKKVCALDLTTPTDLVSFGLIPELIGR +VREIEMHEINTRLSSSSLPTSSSAKAPLRPLSINRKTLVELIRR +LKPTQYTQLLYMLNKLHNIDPQLTNDE +LDIPGAQDEMVLPPAPPKNSDPSILRAWKLQVK +TKLNTLISQTEQELARYGGVGATTNE +NYFDKALKLDSNNSSVYYHR +RISLCPLFMGKRSFVSSPVSNSAKAVKFLKAQR +VHNTDIQQLDDLKDKTVLIRNVGQEIGER +LKQNQYSPLATEEQVPLIYAGVNGHLDGIELSR +IIKAKVPLREITTYTNKLRSLSQGRGEF +YILGLKDYSQATWSQNFISSIVGACSSLIVSAPLDVIK +NLVALKGPLATPIGKGHRSLNLTLRK +YGINLSNELILQCLTHKSFAHGSKPYNEKL +SPPTGYLLLKALKMDKGHGQPNVGTMLGSAPAKGPTR +KEALENVIPKK +LASFISAYSEFKENNEYISWLEK +NIDRPLDTFAR +EVHLCGEKSVLPLVKSIVKMTGDKLTINEYERLGKLSVEE +SGLIRNHSPVIFTVSKLSTQRPLLFNSAVNL +AERKLQESYGQTVSVGGMGFSRSPGVPDVIVDGF +ADNKAASVALDSLINFEAVKYFNNE +DDAHRACTELLTKNLDKVDLVAKELLRKEAITR +EFDLTLNPWLTGFNDADGYFYTGFQKHKNSQWLKFHLEL +WAISVPEPSQMINKGRNYIVSLNQVVGYLGEKAE +GTYPGRRTYPGRRTYPARRTYPASR +VDKAEAQKVRDQITSLKELVARVQGGEEVNAEE +KLLNSEDLLSTLIQSFGHLGQTQILER +MKWLLFPARIVARTRPNLFSLYRRSVSQY +VIDLCEFIRSTHPDDAFVRAAQDCHE +LSALGWLKPSAMWLLDGFPRTTAQASALDE +IELLSANPVIPFHEIVNK +MVPIVDMAYQGLESGNLLKDAYLLRLCLNVNKY +VPSPFEHSDIVTTTTHKSLRGPRGAMIFFRKGIKSVTKK +QRFLKSITESFEVNLSLNTVISDYMKLTNILESALKK +SNGEIAPIENLIVSDPSSKFITAQLSKYNKSLR +SSWTLLHSVAASYPAQPTDQQKGEMKQF +VLKVDDENNVIWVK +KKVTQMANAMVTSLGMSPKIGYLSFDQNDGNFK +SSFAVALNAASKLVTPKIL +STFPSFGVGAEIVAQVMESEAFDYLDAPIQR +NVVKPEIKGGLIVELGDKTVDLSISTKIQK +QALNELRQNNGSCGIVDNIQVVTRSPKWCGR +NIAEVVSQADIVIAACGIPQYVKSDWIKEGAVVIDV +RLNIIDSSISKNFPQKNCNYSESAYFPSAV +QYGSHWWSGWTSKVDNDKQAL +LLKQDASLPELKK +KEFDEKLPPKKPAGPFIK +DTSNEQLTEELLNLRSYNENLLEEHLNSLVGFKV +METLYYYLMFNFQLMSPFGVPVPGPAPETKDIK +DYLYFKDNLLKDIKYYNDLSYYLR +AICARTGFGGIPITDRRKFTDDKLIPV +DIEYDKLFILNTYNAGTPFNFSTSGVMNEL +PASSISPLHILHGIKPLNPLTKGPE +GALAYIGSDK +VEINELKRQAEIEKAAIKELEKNPQYQK +GAFAGLGGLLLLGGGALFINNALFNVDGGHRAIV +INKKELLRGKKEHK +NCNYSESAYFPSAVILRKKRNGICSIDSDR +YPGIAVSDLIYDENNAVKGVITKDAGISK +NGEWVSLRNGTKLTDILTEEVEKAISK +AFSSTVRTLTINKSHDVVIIGGGPAGYV +ERWKHDFEEAKARGDISIEKNL +VRQGKQSKVSGLNLLR +PGGVRGTPNDAYVPPPENKLEGSY +FVWSIFITAFLLLLSLPVLSAGITMLLLDR +NYQKMNNNNMMKTYLNNNNMIMMNMYK +NLENCELVSYNGLISCINNFIKIPKTIK +VYVEESIYDKFIEEFK +ARLRTRTMKAALDQDATFLDTNRVGDLISR +DENGLKMSKSVGNTISPEAIIR +EYYQGLKSTVNEIPESVASKSPSLRTLHK +GVLLTGPPGTGK +LAEAMGLK +TSCIGLISGAIGPFSNAPLDTIKTRLQKDK +GMSKLLLERGSEAIFLDKRCKVLSFR +KLQATTFAEAAKIQKRLR +ATAGEAGVPFYFVSGSEF +MEAPKRAIKFSGNDTFQTFYKK +VESTVKKNPK +ASAQFFLKYECLQPSGSFKSRGIGNLIMK +ASAIAITLIGRHKPVYHPSQDCGDYVVVTNCQK +LKTSKNVAYWLIGTSGLVFGIVVLGGL +SYSSAKNFGYIGMIYAGVECVIESLRAKNDIY +TVSIRPFSLSSPVFKPHVASESNPIESRLK +RVTGMPGDLVLVDPSTIVNYVGDVLVDE +LKEFVSTK +ISVNSINFSKNLGEQKEYITFTKE +VKGLPFDTIDTKFPYPKPQVNLPRGHIWVE +VIFQGFTGKQGTFHASISQEYGTNVVGGTNPK +LGSASAGIMEIAVFHPVDTISKRLMSNHTK +EISDLYTGVRMTRDVFENTLRK +LYKIKNILGIGKVTIK +VELDHTRELDNDQATETVVDRSVGPEKDIE +NHGADIGK +GPLATPIGK +KLENFEK +NSSGNALNK +KDKNYIK +LKDNRPLL +SQHISVNK +RFEEFKK +GHFQLVVK +LSPDDFQR +ERSIEKF +IENVLKK +GVIFYENK +LEPQNDK +SSHIALLK +FHAYSAPV +SLGFSPDAQDEAAKAVSNLYK +KELVTAPLDGTILEGVTR +ELDSAMAGDNAGVLLR +KQALRDVGVAVVESPGYLGQALLDQFAK +DAGLSTSDISEVLLVGGMSR +VNVFLADMKNFAEFNSVYAK +ILASLYILSKEEGGR +SVEELPLRINEAFEIATSGRPGPVLVDLPK +GLIKSPIKIVGLSELPK +ARVFEEEGAFIEALER +FQPILLNEPSVSDTISILR +ALKLDSNNSSVYYHR +LSSYAQSHLENTSIK +KAPSLPEGQEIIKPLSHPIK +INEAFEIATSGRPGPVLVDLPKDVTAAILR +LEDVSITHMTFGPEFTK +LPTEDSEMGLVLASALFAK +SLEFNSQPDYREK +VLAGISVPPRENLTFQK +DIPVPEPKPNEILINVK +VMDTPELFLKDTLHSAK +EYPYAYMEETPGSK +LQHESKPDEIQKLDR +AGESVESSNSKEVEKER +AQIPVTTTLQGLGSFDQEDPK +LADFAAAVSAGEEDELQDILSSLNIEHRLEK +TIADADKIIVLDNGR +EKQFHPANLPASEVLR +WTNNNALVATGSPFPPVDGYR +ALGITFQLPEMDKVDITKR +IQNRNFDNPESGLR +KSVEELPLRINEAFEIATSGRPGPVLVDLPK +VTCRGNLLLCVSRLQFEGFAVERAGQFMAR +NNKNIMPVLALVCGPESYISSISGRK +TMQPGTAAGTAINEEILKK +IGEQPTYGISNTLQNEVGFQLGRLKTGTPAR +LIGLSVEDVESHEKWIQDIKEIAK +QSVGVNVFSGAASGIIGAVIGSPLFLVK +PFARGGKINLSKELDDIDESAKE +KSKSADVAAGLHKQTGVDPDYITRKL +SMTQKVSDGVKALICGVVGVGMMCSLSPQLSILLL +QILNSMATFLLKGQIRNGETVRVVVKDTK +AKANSIINAIPGNNILTK +PVSSNGEPDFSNKANFTAEEKDKYALALKDK +LLGVTSIAELKPDLLDLSTLK +SEWFAQINK +SYFLFTPLLPSAPVGTVDEK +MSIVYNKTPLLRQFFPGKASAQFFLKY +SVDNFGHALNAFKEEDLQKSKEISDLYTGVR +QLSPIFDDRKESLDFSKYLTK +RSAQAAGGSRGGIFGLSRSKAKKFNTE +VGRWTYEEPRTIINNYKALGRGILNYY +VLIYGAGSAGLGIADQIVNHMVTHGVDKEEARKK +GKLHYKDIPVPEPKPNEILINVK +IFDSVIERNFKPLFDKLSTNPNALNKYTK +NLMTKLEEQDSRR +TLKQLLERSVSHKTLWSKQSNK +NDEATKDITETNKILLIFSELHY +FGSFVAGGLAACIAVTVTNPIELIKIRMQLQGE +KGALTPLLGVGICVSVQFGVNEAMK +DGKLDPVIGRDEEIAR +PTVFADVKGDMRIVK +NAVFVGTIFAGAFVFQTVFDTAITSWYENHNK +TDYGVFGKREYLERVWDSIEWKIVESR +IRGIIRDNVVPWSEKLIEMEDKK +IMDTLKDLGKEAVIQSIDK +KLKEQNKNKQGSPSSSMHDPRMIMNL +LDNDQATETVVDRSVGPEK +QIMESRLQEIQSRWKEKRRIAREDR +IQKRLRADPIISAKMELTLARYR +KIDPVNSTLKLSSLDSPDYLHDPVK +VGIVDKLFSRVGSADDLYNE +TDTTPLKLSNELYAIFK +ERDGYAKWFAGNLFSGGAAGGLSLLFV +IQQLWSCAVNVYPMLAKEITNDLLVTLKR +LTTGPKLVFSFALAQSLIPR +YEALIANQMNKRRGLERKDIPAWK +QKPPKDVPEVYPQMLALPIARRPLFPGFY +VRPLLVLLLSRALSEIPMTERNHLK +VNLLYGNKTPQDILLR +RLLFNTARTNFLSTSPLKNVASEMNTK +PYEFRALETIFISALSNLTSEMKVLLTICK +ISSIVGACSSLIVSAPLDVIK +ITDTALVSAAVLSNR +DGEGSTKFVTVNVK +PTQALNFAFKDK +GLGPNLVGVIPAR +DLSQEDPDEVKAK +HSNGDAWVEAR +NGSLDLGVILNTNK +FGSDFNSWLNVAK +IGDYILKSPVLSK +VSFKDAVFGSK +IIAESISNSMLVK +TENGKIYQR +IILFPHTTEEVSK +TILTHNTSMYK +YGGQPFANEFLNK +KSAGLENSHVDMTEDAITALMK +IIEGRSLLALQGPK +VGPNLHGIFGR +MKIQTNAVNVLQR +VDATPGRLNQVSALIQR +TIKNEGIMGLYK +GEGGFLVNSEGER +IFQSSTKPLWWR +LGRGPSSGLGK +YISTVHPEIDHTK +SEVFSHVVK +LIGLSVEDVESHEK +LNYGWDKK +KTMELGILPR +GQGASQAMLYATGFK +VSILGQLKPSDGSTK +VNLLYGNKTPQDILLRK +VPVGGTPIKDNGK +WKEALGELVIR +RISENNNCYSFPGIGLGAVLSR +FMGKPGVLSPR +KAMLNNSMSLYR +LVEDGKVNLFSVF +IGGNSDVIKNQLLR +RLNLDPLLTDDMNNLSGK +ILSYLEESFITSGNDANIE +MSSLSTSDLASLDDTSKKE +YVLVAGITPTPLGEGKSTTTMGL +EAYLKAQRGSTIVGKTLKK +IRLVSQPQFANGLVGGFSR +DKKGQPVFDASDKKR +PPQVNTLDEQLER +GVSAEVINLRSIRPLDTEAIIK +LRVPTREILRSCEIIMDKK +KFKSSLIDEELK +YIYSQLYVLSR +GHTDAITSLKFDSACLVTGSY +IAEQISKETGLK +LGLLVVPNPFKSAK +NCEAKGLSQISNEIKE +TPIGLQVVGQYGDDSTVLDFVE +EDDPYSRK +AKHAYQKTLNLPK +LMYDLESKLSSTK +FLKGKWAISVPEPSQMINKGR +GLTKKYKSVRIVTGPLYLPK +WQGKPVFIR +FDDRVTGNISK +KAGKIRVQDDHTEIEMLLE +ILRSCEIIMDKK +MTKLEEQDSRRGLLIDNK +QHYDESLLSRYYPESLLK +ETKKIANKLYENTKGKTKR +ELKR +EIKR +QNQR +KNKR +HNIQK +AADQPIELK +TLVGR +VAIYNKGDNGEIIE +GLPFGITVPLLTTATGEKF +PKSKSFEQDSRK +KNRGNHFFTAK +YLPNIDLPHNLVADPDLL +LRDDQVLLAYKSIDENYRR +EQLRHLKEQLEK +CATDFVELPSIL +GLKERYEVHHGVRITDTAL +NLSYLPITGSKEFQE +QAMTNEKLKEWK +LEEQDSRR +IANDSAIPEKQLL +EVGYTASGVK +SRAPAIIFIDELDAIGGK +IEDLKPDDISR +NDNKKFIESIIK +RSLFKGLGPNLVGVIPAR +SGSGIIDAILSIEEAGSYDR +YGGFFDLEGHIDSR +LQVRNATKRAAGSRTSMK +DRKAIEYADEKLKFSAGNF +KLFNLLEENFKNGTPLHTLGV +DLVALDLGSLIAGAKY +VVASSCATMVRCSSSSTSALAYK +NSGNTVYNSTTGEKFK +SFGSVGGYVAASR +ENKAKQKLEQEALKL +EGGPNKVGPNLHGIFGR +VGDLAGIK +LERLLRK +NLNKEVSR +VVVKDTK +ISSMIK +TTLRGR +MSSLLK +TTNVLR +KLNTNK +PQTVIK +AFSILE +ELELEK +KVFHTLDK +NPIPTK +NLLLPK +MSPKNITR +EKLIKILE +HYEGGK +AGLR +AGIR +VFEEEGAFIEALER +VTQMANAMVTSLGMSPK +SIVAQFDAAELITQR +DLVPDLTNFYQQYK +SSHLNSKPLDVSNKAPVK +KITDDLVKNVEKLGVKAL +EPNHSIFENPTPLGRLRQLVLQSEHGKNIYHAVNKDVASWIV +SQYSKCLTWVYTFLQENAHIHTRKINGGEDSSLSGFNAVDFER +DALKFKSSLIDEELKNRLNQYQGGFAPRMTEPEALLILDISAR +ENAPSIVFIDEIDAIGK +SATVEKAPMLTTDNLK +VLGIDAGEEKEKLFK +QYDLQTTASELVTELK +AGAGAVDHEKLVQYAQK +GICVSVQFGVNEAMKR +FLPNHPGGQDVIKFNAGK +QMLSGLGLVRTLENSSNALYLTLKSHNDNQKPKEDVESTTDAESK +QLKGIKRELGIDDGRDK +NIIVATGSEVTPFPGIEIDEEK +QLLIETLADVDDEMAEMFLEEKEPTTQQIK +NVAFLYDMVDAEGFK +SALYLYPFYAIFAVAVVTPLLYIPNAIR +AIDAPIFHVNANDVEAVTFIFNLAAEWR +ENLEVSGENVVEADLKR +INEAFEIATSGRPGPVLVDLPK +SLLPPLDNIINLYDFEYLASQTLTK +LFLEDETTEGIIMLGEIGGK +GAPGMPEMLKPSSALMGYGLGK +EYWSYTFEDSLDLLGK +QINFGGTVETVYERADWPREKLLDYF +HINMK +ISVWVALPAIALTAVNTYFVEK +IPDYPDAFAGWNYVASIGSFIATLSLFLFIYILYDQLVNGLNNK +AAEIGVSGVVLSNHGGR +TKEDIARKEQLKSLLPPLDNIINLYDFEYLASQTLTK +DQGELIGILNNLGYSKDQVFKF +LELAAPGSQYLHGNSQLFNVLVVGHAVLMIFFLVMPALIGGF +EGQKIRIKVAPGTQYNQVISIPNMGVPKTSTIRGDMKVQYK +TPLLPSTPVGTIELKSIVEPVR +NLDGYVVNLLK +GVAAAGVISLYDQLQLIMFGK +TVIENPLEMLL +DTHADRLNDHYLNTLQSDLLLINYSHNAAVVK +IDSQVIEPIYVHPFDNPDIWEGHSSMIDEIVQDLK +VPVLPMVAGGSGLDEFINFDPEVER +WQGQSGTFIRESFGGVAWFATYEIVKKSLKDRHSLDDPK +YAKPLTAETYK +PTILILDEATSALDVESEGAINY +ERDGYAKWFAGNLFSGGAAGGLSLLFVYSLDYARTRLAADAR +KSTAPSNPPIYPVSSNGEPDFSNK +RPVLNKGDSSFIAK +QSYSEFIKIGEQTHYTGVWNGLVTIFKTEGVK +ILASLYILSK +EEGFRALYKGFVPKVCRLAPGGSLMLVVFTGMMNFF +RPEPAPSFNVDPLEQPAEPSKLAK +SISWSVIDRWPTNEGLIK +KLVDPMVRKSKRPSHAISEGLNMKTLKK +LATVLFNLKALIMNTKGEEPTLTTMTSVQTNEEK +SGGYHYTQSTLLRTKDSPEQVAYLK +TPIAGASPTENMGIFQSLK +NLLLPKDTK +AAIESMDNGKSLFCARGDVALVSKYLR +FPTPILK +EALDFFSR +LDNSAIER +LAQLVVR +TIPPVK +SVIPAIDLYCRKANFKTLKSLSMILGSKKE +KVSHQKKRQKLYGPGKKQLKMIHHLNK +LTPEQITLLAVKETRKRQKKLFKKYNVPLWK +LFSLYAEKVDAKRNQVNLRNTKLDACEIF +YDYLGDSWGVLFSHPADFTPVCTTEVSAFAKLK +SKYQEYLNEYNTFVLYDWENSGAGSLVDSSYNLPSLWK +ELVARVQGGEEVNAEELKTKTEELQTSSMKL +KELAVEFSKSGLYDVQVFQKTKGKLFIAPVSYWK +NKFYTPENTVAAFVGVPHEKAL +EYTEENIDFVAKGVSNLVKQIENIK +HQIRNSEFKTNKEIIQDIKKHGVSAVKRYL +GKQSNKKGREVPLKKIPFRLQEEQTNMR +PAVPSISEEAAEMINSQMEWNQYR +SVINDDANQLPHNPLTLQNLHKVAKFK +DLPELCIAQMKAFLDCKRGIVDMTKRFTGNAPLSTGKYDQQYE +DAGISSGKESVASYLR +NMHVKPIKMRWLTGGVNYSYL +LKPMMATASPKEYQIKQLVKPIGLTQAPRKSTK +KNLLVDTSETTRTTKNKFNY +SKENKAKESSSSSTSSVSSSSTSKVENIVDK +LRPNAKHTPYQAKFIVPKSFNK +LTQKLVTAGVAAAGITASTLLYADSLTAE +TYVMGRAVINDILIKKSYSTHTVCAIDR +GVAAGLLFSVGLFAVVR +SGTDQTSMKQPVVVIGSGLAGLTTSNRLISK +LAKKLRAEPDMDTSFVGLTGGQIFNEMMSR +VAPHIKIIGVETYDAATLHNSL +FKTARENAPSIVFIDEIDAIGKAR +IIDTVPFTSTDGVLTKECGEHSGV +YIKLPSQNNNEAQQTKAPWISFDEY +SHLELNKNLSYLPITGSKEFQENVMK +AFGAGGWGLVPRSQTIVTSKLVTR +LSRMIHHKVTIIGSGPAAHTAAIYLAR +RKVDISTDMLGSHVDVPFYVSATALCK +LRITPTPGHTNDLSDILINAVDDVFNELQL +CELISPVHLHPVTAEPIVDHLKQLYDKQHDEDTLWK +GSSARDDIEGSGDVKYHLGMNYQRPTTSGK +TLFEELLVEDQTLAQDRELCVKSLGVYKK +HIGDVDTGDTITDFLEQER +KQPFELQIKNPVKSIKLVGPV +LTNSCKECLGFSLTPSHLGIVIHAYVLE +FSYEFYLVFMANSFQDWNLTKKIYDYIFPMERNLSPLKK +SKDGDKVNLLHDSVTSDDISKVVAK +LAKTHQFDVLIIGGGATGTGCALDAATRGL +IHPMGWDAFGLPAENAAIERSINPAIWTR +ETISGILNEKNSKSADNIKTLLFSATLDDK +IAEQAQTKAADKPK +IGYDAASKVAKNAHKKGITLKESALE +YENRTIYGDIDFRYHGVKLHLRSAK +TLWEKSGHWENYADDMFKVE +MQLLRTHPNNIKLSINGIGKDAPTFQESAL +TEDVPSGKYTPRNNFNWWKDIKMLDFLADFGRHIR +DFPEINIEPQLKIVSMEEPKTKSPGVK +GHVWVTGDNLSHSLDSRTYNALPMGLIMGK +SPTVHASQYHILSGRKLAQSIREK +SPVRRVEIPKTSGGFRPLSVGNPR +MLGAEFVEPPTEVIKKAR +RYKQYLLLNIAYLLKLNKLHMLTNSLLMLKELMLL +TDQPSFTQPLMYKKIAKQKSVIDVYTEK +KYTLISYVYNECKNNMDASLY +TPSSINRK +YNKNIEK +KEVLTRE +YNLKELK +ISAFLK +LNEEELAK +AVAHTVADTLQPGLPHKPLPSDLGKESIANLDKLR +RLEASKDIAQTLANSSNVVYLPSQHSGGGNSESSGSPNSLLLNIGR +PYILEAEAAAKEKDELDNIEVSK +VFEEEGAFIEALERGEIKKGEK +QALRDVGVAVVESPGYLGQALLDQFAK +LSMQQGKELEAASK +ELWTIQEDLDHLENELKDQQEL +TVVGRSIQSLKNKLWDESENPLIVVMRKITNKV +FESITGGGIKLTRFQLETLSNKALGLSNEAPQLCK +NYLPSPIEAELPELNDKTVPMKYDPKVGCLVNNNK +ELMNAELQNKISKDVETKIQKRQREYYLME +ITQNKRTSLVKRFKKDESGILVCTDVGARGMDF +TQKGVIFYENK +LKQTLNILSIRNHRQFSTIQQGSKYTLGFKK +QQEYCNINYLYYLHSLLANLGYCNTNLPLIKTR +EKIVQESMRMMLEIIYNNSFSYYSHGFRPNL +DGLFLAGQINGTTGYEEAAAQGIIAGINAGLLSRQER +SNKLSMSPWGQLAKGYKTRRGKNQNRMKVKDR +NTDESIEGFAHSSFKLAIDKKLNLFLSTKNTILK +NLLVDTSETTRTTKNKFNYLL +ERAKATVPSLITKTSIMLGLGETDEQITQTLKDLR +NSRYKLGSLQIVQDVDWNAKTTPSDSPEPLAATLNSNR +VSEVIDDGESSRYGGFITKEQRRLKRERDLASGKR +CPEVFLSAVSDKLTSTAVLFLNVELLSDFFYNFPIE +IDKVVEDLKQVLGNKPENYSDAKSDLDAHSDTY +ALLNARHYSSASEQTLKERFAEIIPAKAEEIK +LNEKLKKREEALKKVDELIASKKGSKYAKRVEK +LLCLTVGTTLCSGSANAINMGREPEFDRQMVRTQAR +EYLLEELGEAPVDLMRKIKLAIDPKRIMNPDKIF +RERDLASGKRHRAVKSNEDAGTAVVATNIESKESFGK +LKFKNPYRLVWQSQVGPKPWLGAQTAEIAEFLGPK +RLKQSMIHSEYLMYVFMLLSHYCMSYPKMK +RALVFLGAQTLVGMGVLSLLPAQCWWLGLASLPIV +DASDMTEVFLATMESSKVLRTYSNLVDIVMKDNGR +LHSIKGADILVFNIPHQFLPNIVKQLQGHVAPHVR +KSSFAVALNAASK +RRHGLFWLKTCPRLNVLLNQSIPIPHLLHSR +HAAGRAIRTSSLYSTMISANPRRCLHSSKLLNK +DHGDRKPDDDPYSSSDPDPDFDSLEDSLRNFVLK +TGETMEHIATK +GKSRSKKTENLHQSLTGCLNDYSNAFGKDRSKLL +KYTRAQLEIFRFSFCLLAPVAVMYYIGTDTDKK +HVHGGKAVVNSILKAIGSLHDRSSGKDIRFALPGDFSRR +QLIADNTKGFSGSDLKELCREAALDAAKEYIKQK +GEVTVAGVVTNWTLVTQAHGTQCCMDPNVIELAGY +LLKQLNKDVKGQNYKVPTFGYAAYALLKSCENEMVRK +KYLLNNTSLMKATLKSQITQLTESLNFEKNLIDDIL +TGGVNYSYLLSTEDRRNSWLIDPAEPLEVSPKLSAEEKK +LESSILHEVKIEDFISFINRTKTSSMTTRGIYRR +GSALSSPYLSLAAGLNGLAGPLHGRANQEVLEWLFK +CGLITRKKGMMPYFDKSTGERSAATILEVNNVEV +FIQLSQEISLVGQEFINHTDYPGSNSVKIPCKDL +SNTLKKYPMLGLAGGLETFPKIVRNALNEFKNVK +PLNFSIPNYISVNKLANLLNCR +DDSDLTKPFSDETGDIIDSEVYRIVQECHDRCTKL +RCLSSLLRMHLKFNDSNGVDRVLKQITTNFRALSQENY +AFETKWSIVEPEVRAKALFNL +GHKHELKLNEKLKKREEALKKVDELIASKKGSKY +DRKMTKDLNIFCANRMFLRSKKMKNKIENK +ERSVSHKTLWSKQSNKDRTCPGDILRATILSNDFSIR +LRLDNPQKYTRKFLAAKYGISPLFVSMVSKPSEQHV +CVDSGHARFVLSDFRLCRYQFRENALKGNLPGV +FQSSAIGALQESVEAYLVSLFEDTNLAAIHAK +IGSGAPVYLTAVLEYLAAEILELAGNAAR +VADKIQLIDNLLDKVDSIIIGGGMAFTFKK +HGRLPENLLPLQSGIGNIANAVIEGLAGAQFK +NDDELNKLLGNVTIAQGGVLPNIHQNLLPK +FRHELSSLADVYINDAFGTAHR +SHLLANFSSDLLQELSYR +ELIHQNEVPLVLLSSGVGVTPLLAMLEEQVK +GVEVVLPVDFIIADAFSADANTK +IALSRPNVEVVALNDPFITNDYAAYMFK +IVQDISQLTLLETSSLINELK +FNPLTDKLKDKDGNEFMLKPPHGDGLPQR +GHLENISNNYMIGAINAENKK +TPLPPAPAPKKESNFLIDFLMGGVSAAVAK +NMLTEHTELLNIFNR +HLTVWTEVLQDSFLDLFENGSLDYATATSVR +NNLNTENPLWDAIVGLGFLK +HAGNLNMKEQFPLFAIHDMTEDLK +NIQYAVIKPIDSFNEVLTHHLEVIK +SFLESVIRDSVTYTEHAK +VGDEIKLSAPAGDFAINK +VNQNLLEDHSFINYKQNVETLDIVR +DSKVNQNLLEDHSFINYKQNVETLDIVR +KATYQTYAPILYENDHFFDYMQK +AIDLNKEVYDFLASATAK +EVLGDAATPEIINAWGEAYQAIADIFITVEK +LEFANLTPGLKNELITSLTPGVAK +LPENLLPLQSGIGNIANAVIEGLAGAQFK +ELEHRDDMIHYEPFGPK +NSINNALLTLEIPALIK +KVVITAPSSTAPMFVMGVNEEKYTSDLK +LLGNVTIAQGGVLPNIHQNLLPK +VVVTEGSLDGPVILEQK +VLAYLLGLWIGDGLSDR +SKTIFTVTPGSEQIR +KLENNALMLTYGGMSK +FAVANYTEHSLGSGSSTQAASYIHLSYR +MKEVAVANNWPLDVR +LLSPLADVLHAAIGATR +DNTTEVYSANHILVATGGK +YAGEVSHDDKHIIVDGK +SMSILNSFVNDIFER +ETFLAGLIDSDGYVTDEHGIK +SGELADLLEEAQALVPEEEEETKDR +NINDLLNKDFYHATPAAFDVQTTTANGIK +NGKPWDAVLTHTFNDEQIEWFK +YAGEVSHDDKHIIVDGKK +LLASSNTSSVADAGHAFAR +ILIDGIDEMVAPLTEKEK +KESNFLIDFLMGGVSAAVAK +ALQIKPEHYPIVGEYLLK +ILYGHLDDPHGQDIQR +IIVHTDTEPLINAAFLK +VINDAFGIEEGLMTTVHSLTATQK +LTGMAFRVPTVDVSVVDLTVK +NGQYLGWSGFTGVGTPK +EVLGDAATPEIINAWGEAYQAIADIFITVEKK +SERPELTSAQNVVTGGR +TIVWNGPPGVFEFEK +FMDKFIDLDKPDQVVTIYNQYSK +WVVIGDENFGEGSSR +ALENPTRPFLAILGGAK +EYVASDIVEFTVKPK +VSHANEYGLYQNLPLDKEHLTFNWPEFK +YGASAGNVGDEGGVAPNIQTAEEALDLIVDAIK +LQLLKPFKPWDGKDAK +NNLNTENPLWDAIVGLGFLKDGVK +LATDSFNEYIQSHDLVLAEFFAPWCGHCK +SAKDSLVSSLFELSK +GIEEGLMTTVHSLTATQK +VGDQIVDIEGTGNGPISSLVDALSNLLNVR +EIVFNMSREEAISK +GNSPHLTNLDIFIDGEFLTR +VHPGDIVVSGFNFGTGSSR +EEALWPGWKPFDITAK +NVYTGEYKGVPDTAR +VSPTSDRLQLLKPFKPWDGKDAK +ALTTVYINLSEQSEFISAV +APTASQLQNPPPPPSTTK +KMYEEALWPGWKPFDITAK +YLKELMPLIINTFQDQSNSFK +SKVPQEFQVQNPNIANPPTLLLAFSEMLSR +ATVPVLEQQGTVITR +QVIKLQETPDFVPDGQTPHSISLCVYDELV +YGLPQLSEEAFDELSDKIVLESK +MYEEALWPGWKPFDITAK +SSAAGNTVIIGGGDTATVAKK +ELENSQLEKSAKELETLNTELIDTKKSLK +QRGVLKGK +EISLAALK +VLPELQGK +TLEDLGAK +FQIPHSKK +MRGLTPK +HAGNLNMK +KKRDKLK +LGTNNHPR +LNGIYQK +KVEKITK +KVRQVQR +ETLVPNLE +REQTIKR +NAPKAVNF +CLITDTLE +DVAVKILR +STELLIR +ERFGSAQR +KKNISKK +LFLFIEK +QRKTLQR +IYNAYFK +KRENKIK +ISNIYSK +SLMDSPSSR +MLLASNLE +KRFESQR +GAEIVIPK +KEILSKK +ILLQIILK +EREGPVIK +EYKNYKK +YLTPKELK +IYCKSNKK +IHETNLK +KQLVIIL +TVNLYSK +VQEKLLVK +KLDLEDLK +SFGAKANEK +NLQEIIVK +LALNSVGGK +EHAALEPR +TPLPPAPAPK +CTLGHAVLR +VPKKQNELSLKGIQIEFLGVLPNYRHK +KQSAIISRDNVLEDAFNAFNSIGE +LFQTLVNLQKFGIAFISGTPSSSSEGLTIQK +AIPIVEAMTALVLADALLIQK +LSGAHIGNSPAINRLRGEL +VFTLIALSVLVLLVILIPSKLLPTK +KYDRSLIALGAINLIK +KQRSIPLSPIVPESSDPAALKRARNTE +SIVQSNSLANAIMNLESNFKEHLER +PKSAPSYFISFTDETTKFR +LKLNHVHKQGDGSATSMRLSSRAFKDVV +RRQDALQITIDDENDTESGTFDARTAK +TANGLISANTGVSMPTVQRTGGTMIPQTSFGV +QLASKAARKSAPSTGGVKK +PNTLDPALLRPGRIDRKV +ISDGICEDHETIQKLVRR +LYYDGKPVDLPPQAEEVAGFFAALLESDHAK +GTPYFGLDIRVTESTLFKKVDFEPIFSY +DLSYDIIKRDAVKTGDEGKPR +TKVLKARKLILSDAVKANGGEPLPKANFKQK +VYVDNDINGSLTISVSEFHNSLQELGY +YGKYSVYTVAKDWIQNGRPNLFGLKV +ERATPATLTELKDALSNSILSVR +PVLKQNSSVIPSRIKFIYFSTIIV +WKLGEFITGDKNGLIKVWKYRK +NYLGFCK +QITVNGTVNLDEIRATNQR +RIVISIDSWPTTHKYPLGHFVRDL +VSSKRSRTLACPDETNDNRGSEHYTKRKK +IQLLTLTKQLTNLAGNAWAQTLGGTRAGRNE +DSFSMVCKLSSAFISSSSV +QIFVESAAVK +FDELCKLVTCEGSEEKAFVPKKR +LNDNGNNNESDDGLTIVEERTTR +MKPPVKGKNIVIHRDLKPGNIFLSY +ETEALKSFIEEIEEVDDNKISINSL +NVYTGEYK +MRLHYITVFDPSRSTNENDTFKQLLL +LYTMLCGFPPFYDEKIDTLTEKISR +ILSKLLKLFETVPLIITDEIVLV +WLGIGWTSTMLSYERASWTDE +KDSLNKMDYVAISRQDYELMVAK +SLNNDDVLNPPLLVLNGFSTSKR +NQAHAILSFIDAISEKTLNFTVALTAGRGRGK +FNRKILSLSSDYTHDGESDQEDVSIL +PISLSSLQKKMEKLFIKDKSHSHKPSLPDPK +GQSNNEIDLEIQNILIAIIIISLL +LVADRNTHDEEFLIHEWSVTAAGQK +LRSVSIEFPPDFDDNKMKVEKKIIRLL +ELLQQIAGSLFSTSIERLKTAHSSEV +NTLHEITSSILAINEENKFVNPLR +IVSNASCTTNCLAPLAK +DINFIRNLELFKIMKTQNEVVDETSAY +KYPEHYAEQLKETSDDEEPQDKVKV +AADYQKKAGNEDEAGNTYVEAYK +VLLLLQLLSLENTFK +NHDEIVNDPKKDVLVLYYAPWCGHCK +DMTFEGNTQDISTSVEERMTTVFGGR +FEFDGVEYTFKERPSVVEENEGKIEFRVV +NDGNPQTHAFVASPELVTAFAIAGDLR +GFLDSLRAVTASQTTIAEVISNLYDDSK +SSCFRREAGSHGKDAWGVFRVHAFEK +AKQPVKDGPLSTNVEAK +YNFKQITYFSKQFLKK +DSKVTANAPGDGNGSLPVLQSSSIL +LPVFTDRGEMRVLKSEWAFKNGRKKFE +MEAARENFPAGLVSEYLHKDAK +KCILEIGSSRDLGWCPIVNK +ISQLLIDLLGNFKDPNSGIRIGEAIIV +SAADIVFLAPGLSAIIDALK +KYPEHYAEQLKETSDDEEPQDKVK +HNPDDTTVDNRPIISNAKFLADAAMKK +RPLESKKRNARPETEKWCASY +VCSGGTATNSLTPCFSNISILK +EQVEDILLPVEVEEKVDASYKFKNRGK +TVISGDPNLELDQVGVPK +ADAEAEKLKAERIAAYNAKKAAKPAKPAAK +KELFILRCLYHPTIQIMLPTLGTLGTKK +RDKATERPNTGAYLHTNESGVYHCANCDR +NFISGFSQEKGRVLPNFAASSFSSK +FNLFVGASAGPEENRWAEHDMIIK +EKAPVALDNILRNLKLGEFITYFVLNRK +DQKNVFRNSMTGIAQILPTKPVK +DVRPNLIQIIQAVKILQLKISNLNEFK +SYPQALHFQLRTTKEDFAVIQR +TLAFPINPSDINQLQGVYPSRPEK +DIIKNTKVLLLGAGTLGCYVSRALIAWGVR +ENSDSLQRTDVSEGCSEVNGSEATTSADVKK +DKKREKERQETLKNISLINDKKKLKSELK +PRIFTEASFEKSIAGTNGHLPNPKPQSVDDGK +DRNFSATGNFGFGIDEHIDLGIKYDPSIGIF +GKECVQLRARWAAQSGNDAAEVALYERLL +YTRLGNKIIKIKTKIVNGVIHVKMNEL +KELPPINSRQTNSSLGGIGDSNAYTTINSKK +NAKGDESHTQDLLNSAVKLIGDEAWRVR +ESKLKELSQRARYHNGTPQTGAIVKPK +EIDGSLLINECSQEDGQPRVLK +LLLKRLAK +NTIKELAIARDSALIPLQVLRDINKLVK +LALIWGRIATPIGFK +LISHIHDGQDGGTQDYFERPTDGTLK +LKKTPITFTNKSAGTISRKKSLVANIVK +TSVFIKTPESLFALEDMRDKYWYNMAAR +GGQDGSRGENLWVRHSTGALINV +VEDLSPLLQDFVEWCKIYISSMIYQMFL +STDLIELLKERTFNNQEFQKQTGITLSL +AEPIDEEVSLAIENGIINPRDDFKAR +NSYSNALLTLLLSMQFAEIKSSVLKKFDK +ELGRQPANTKIGAKRIHSVRTRGGNKKYR +TLNDYYAALAKKQAKLNKEEEEEEEEEEDE +GRREAIDIITGKDDRVLVIVGPCSIHDLEAAQE +KKITENNRVVVFFVYPRASTPGCTRQACGFR +SDLRSLELLLPEDDSSKDYFPPRK +AAAVTASCGVALGLNNLVPRLKNISPHSK +ELGFSKLSQLAEHCSMAIELDLDITGDIL +LKKHSEDNNDDDDDDDNNNETYKHEKKR +YLLNKEGVSTVIGPGIEGK +NNKDQIISDNISSSLEVVILDDDDE +VFNTVVSTDSTPVTNQK +GKKRLDLAGPLLAQLFKTLFKKLTKDIFR +ELSVNLCAFEDEYLTDQSDDKWAKIK +PVRLESLEDKRMAVDASIWIYQFLK +SSQPLKFEMFYVTLEAYISVIDRQKGK +QFTLMIIIEIINKLSKAEVYCILYPIIR +EQPLLRATGNNINLVQTIVVPPQV +THYSLNESLRNEDTKSAGEPTR +TIQVEDKPIILTGASAINKV +KSGNYQVLKRSLDGKLIYPEATGISSNRGNK +AYYFWNAISILAVSRFQENTLSDPKKIL +QTSTKDDLINLAKQNTQWLFGTVKEPAYK +AKIFGITIPVSVSDIAFKAHARVKFKLMTPF +KQYKEVYIKKGTEVTENLETTDKY +DKRKCIMKYNASSNNINKMPGESE +NEEFFFDGTDCQAFFERNFSSLLFSK +FNFERLISKSSVIAPLVNKNITSSGPLIGFQR +DDFIEEEGLGAVEEEDLSDEVLEK +VFVNIDGANATSALSKPQGSFSKEK +IVLENMAGTGNLVGSSLVDLKEVIGMIEDK +TFVSTPFESKNYKQAFDVVNAILEPV +IIANEGWKKVYTGFGATFVGYSLQGAGKY +KDMVSVGPLFPIIFAHSDSAAIDMSGTTGKRR +LESKISHNGSPRMASSVLVGSTPKGAVENV +NKTSKSKTPNHTGTHKYGKFNKTSK +SKDKPAPIVGLHVVADDDMQALVIVNY +EYNTDIVSITDYILKKCPPGSLE +REGSKIEKNNDSKLPANIVELDLHESPESVK +AITRAQLDKLVRSITKFYPQK +TTCLEDQWPVPAEISSELRWIAQE +VTDKMISPQQSTQNEDSYQATPLIPQVEV +QNELYLNSNSGIPALLTEPVWNSTENR +AAKSLTPCVLELGGKSPTFITENF +NGKPVMEVTSSFFYRGNYTDFENTFQK +MIFAPSFSLIKNILLVSFLISHSF +RNFVTMMVPASVCSFALLCIVVYL +HNQNQQLKKLWASFRCLFRLAAFALPRR +SVRVSDKRGRSSSTSPQKIGSYRTRAGRF +DTCRGHTNNVDSVIFHPHQNLIISVGEDK +EAQPEVQHEKKETETKINKKVSK +LLLKINLK +NECTLGPTTVAGLISLILCCYFK +AYRIITKLSELKSGSTAVAQF +HLAQAQDFEGVRAALANVYEYR +VSELTTVQELVDLVLEGPQERFKK +QPYFTEDKKWEDTRTLEKILPYLVK +LFAYLVVLLVGPNYLTHASQDLLPTMLR +DGNEKEFVKEDIYDGETNPDLQNRWK +LILQQLVK +ADIFELFPSVRPSLEELVTIIEPLK +CLSGETSELVDVQGEFSYDGLDQSEMMSK +NRQKERLAKRDAAIAKMKEEAALEASKQPDL +LNASQVFFHDGIVYEAACQGPNSCNTDQRSFK +KDDSILDCCLYFKEILNCFVILLSNDK +ARAVQDNGESAFRTLRLARSEKKFR +LIGHKGDELLMIKR +ATPTGSTAYSLSAGGSIVSPLVPAILMTPICPR +NWHKYGSEKGSPAGPSAVTARLGEEVELR +NNSLANGNQVALAAAAAAAAVGSTMGNDNNQFSRL +MPSKPIHNLKLPSISGPVSCVKAMPNNKHL +EEGSQKYKVLGYILLAQNVMKWY +EEITPNLFEFLKLGLR +KNVLPEQQTKPSEIYLDKEAL +KRITATTRQLESMIRLAEAHAK +ETQKLNDERDSLRANLLDNNNKLDALR +SQPTESQLILQSPTISSK +DPKLMGVDSEEEEIELPPGVKKPLNL +TSTNSSNTIISELATQE +SYVRDQDEDYMVCEQIDK +DMPILIK +SYTKPLKDVTNLGVPLPTLK +GNPATLHHEDNPNLLLSINGRIKSIR +PLRKPYLIKTSTKERNSWKNKVPTNPK +QSEILFRQIYTDTKAFAANLQARYTTL +KEEKDGGLITQTTIISSDKLIIPYDK +FGDENDTEYTLLDVEEKEEEEIGK +NQKNSHTGDVTFTALDTGEHRFCFTPFYSKK +TRTIEPAAFVLDKSTSRCIYYQDLPLPSSRE +KEKKEKKEKKDKKEKKDKKEKKDK +KILKVQEEDIRKRKEVVMKSIQDIE +SNVRLLSNANDFGQLGNFLHKK +HKSIGSKLLKFAEDKCSECHQHNVFVYLPAV +AYFDLFAQMDLNSRDLEDLCE +PLVLHKLADIPPLTLALSEYME +NLDNSFIERMLVETELLNELSRQNKTLL +HLNQPSSSSSSNLFHKPASQPQPQHRSPF +ENHPAKDLGDQLSTKLHKEEEIIKLK +IDETGQIKYYKNFKEVTSWSVPMHSAIDR +LANVDRAVCMLSNTTAIADAWKR +ALVSKHIMLPELYDIADTTREIMVTNHSKE +YRLNKMKPVYEKRDAYIDEIAEFWK +ISREGTVAAIASSKVPAIMRIIDPSDLTEK +WAGAGSKPKNKKRKFIKKVKGVVNK +ISMSSMRELQKKSSNLDPSSSNSFKVILDNTK +LPRNPTSEWLRIIVYDALPTGAPPTTPSR +ILTIQEARKLLPVHQYKDELL +LEGSPIFSYPVEKCECPETFSK +THKTVSRAYGGSRCANCVKERIV +IQLLGAEDAAEVLKNGGIDAESHK +RGNGLNCIRIFPYSAVQFVVYEACKKK +DSDIRTIMYNSSGSAPSLFVGTEAFEVL +DIRKQITSGLETSDIQTYTSINKYE +CAKVNIPSVPLSNLLRIYQSAK +ELTVLQNKTQQLIKKSAKKNDVRTV +NKIYFHTDAAQAYGK +KRTMKVVYSTFAKPGQIAYQITKR +IKLTSLVGSDVGPLIIHQFSEKLISGDDK +NQISWLLFTTDSRLNNGTNE +IQNFSNEGPETRCQILVLSAKLLSYDIDNFK +IHETNLKK +NLTETGAIFTSKGFTGLSKGFTDKTLDFLVR +IEVSKNRLVKKIIDVNAEHNNKKLMIL +IDRSDDKENESSEGDKGLLDDITWY +YLQLIYK +THVLKKNPLKNKQVLLR +TMFLPDDSDNVNQNSRK +RTQILQKSGLKFYTKTFPYNTTHIMDSKK +AVLIAIFFLVCQFWVAIAPVNEHGKLNVK +LKDKTMTTARDSVYEKFAPKGKQLSMK +FINVINQSGDSHVISKIVNNGHLLWIRR +NQNQRMGSLDLFKAGKRSILVATDVAAR +DSTWLQHTCGCNLQIHKRCYIR +FTDMCKISLQFCSESHILDLSTDNR +YHNGTPQTGAIVKPKKQTSTVARLKEL +EDGNVADEDDEIGVAQMASSPSKDQFK +TKYKETLYSGISKSFGMEPAPLTEMQIYMK +YVHESPLIMGIMWFNSLSQDGLHSLR +CKERAKNAAKYEAALNKVLNKCVK +VTGLNIKNAPHQVFSINKCSDLTISDITIDIR +LNSPPEILVDGILSRFTVIKPGQFGR +ECSVKKDHLGNFSDIEIIFPLELNTV +NIAILIDDTIILKNNLMSMRFIK +SQKDLIVIFPSDLKSKDDYKKVLLQFR +YLIQYIK +NNKDIAVFNDLYKIKERFHIKHL +VSNKINKRVITAIKINAKQAK +ALECVPLVMEPESAFY +NQKKAELEAAKKARIEEVRKRRYEEAIAR +NMTKTIYTSPIKALSNQKFRDF +LQRDLIQTKEQVSINSNKILVYE +KWIFVNATLLLSSMLIL +YIPKALRFDRLVAGQIPTGWNAK +KVDLKEILKANINTRPELLMYR +GFDRNLGELLLQQQQELREQLRAQQE +LRIKDSDRVPMVLIGNKADLINER +ELREKKLETDSKK +LDADIFSVDVRNHGISPKAIPYDYTTLTNDL +SPSKSRDGSSSNDEAYFKSLLPER +KTYGISKIFTGTRDNARSVK +RAIDLNKEVYDFLASATAK +SFLESVIRDSVTYTEHAKR +LIDDMVAQMLK +EKLILPYLDVDLK +TFYKNMLTEHTELLNIFNR +VSNTVQDLSQQDIK +VPTVDVSVVDLTVK +SASIVKDAAAHGLK +AHSSMVGFDLPQR +VKEAHELIPLFK +LNKETTYDEIKK +AIESLVKDFLKGDASPIVK +VISESQNNDKTFAK +VLKQTHPDTGISQK +GLLGLSLVEAK +NIPSFLSTDNIGTR +TTTDHISMAGPWLK +ATIGLLGNQGVDPAK +KSESVVYQGSR +QLNWNLALNAMDKDIDLTLR +VLENTEIGDSIFDKAGAEIVPK +ISGLIYEEVR +VFTPSGKILTELAK +VLKENVAKDDAEKIKK +MNGWTSPKDIILK +FNKDGNVEVQKR +DKDGNEFMLKPPHGDGLPQR +VSPTSDRLQLLKPFKPWDGK +FHTIESLLPLIKLRCQEIF +STALMLEFLGHNEAAQDIYK +LDMVGIILSSAGFTLLMLGLSF +DNIQGITKPAIR +LSVQDLDLKDKR +FLGGFAIITK +LPDNIVTEETVELKEIKDLL +LIIDLATLTHYVSGPNSVK +IVELVKEVSK +KTVTSLDVVYALK +DIKKGDKNTIVSSYNR +HLLKVLITVNVWGLIGVLEK +SLDSLFDFIKENGHFDVDGK +FRPAPAAAFAR +DLSLLGSHVR +AHNNIMDINEAISK +LPNSNVNIEFATR +TSLDVVYALKR +TLMGGGAKITPEMIKRSLLLSR +AIAGHLVEFFR +AALDTAKKFVLGSFLPRLR +RKTVTSLDVVYALK +QNVETLDIVR +TQMSHTLCVTTQLPREMGGGE +WGVGVSEDVGDSSVR +KPKRILSTNVVNESNRPSIR +IFNIPTQDSVVEIDLDYSFR +QNTEIYNLLCDICGVAEKDR +SKGGFIIAMK +SVEAYLVSLFEDTNLAAIHAK +GVAGAGVISMYDQLQMILFGKK +TIFTVTPGSEQIR +ECKEDLVLMTLYPKLDV +MQVLPALHNVLKSNLCIKSIF +QPVKYSALTSNNEECTAVVAR +DIGRDYEAVIR +TVTSLDVVYALKR +EIAQDFKTDLR +KDFVRGVGGSIPIMGSGTVNIGTV +PIDENNKDLIYDTSNSLF +AGPAYTGLIWTAFALSF +APAEKKPAAK +VVAVGFICSVCLCVLSIIPPGNK +KEVVDIEAQR +PFKMDTATSNPDKDSENTQR +ANELVESYRK +ESANNDISGGNIETVLLGTAK +RNSTGEKRFKCAKCSLEFSR +YRVVEILQNR +DSVTYTEHAK +GFLKDDSPISIAK +DILLGVKHTANAAHSSQGDSK +ALTPEEKQPYEAK +PDKDTQLISSSGKTLRNTRR +DLYGQYNKLEGEKNVEIISK +LKNVFQMNSNRVIRKQK +QLLLHHTLGNGDFTVFHR +GGQLFKRLETEDIKNTGDLLK +MVDRKLGVK +ASAPGSVILLENLR +FKNLKQLCLRQNLIESISEV +YKIVFLGEQGVGKTSLITR +IEDPEDPAASKGKPR +EKCVLANTALFLIARHLNKLE +PMNTGAEAVETALKLARR +KLTKDDPSQQATR +LKEIFHTLPESVSNDSDLR +NSINNALLTLEIPALIKK +SDAEGGSDEER +SLFEDTNLAAIHAK +NDIISLYSTKLEHTSLR +KYGAAGISQFIGIDISNASIQE +RQASDVVRTDSIIDRNGL +KCSPTINPPLESGKPSGYY +LLEKVFEDIESFRLKL +CEISGSIEQLRNVVEDINQAK +AKGKGIQTVDINGKVVKR +VLIPKNDLISRDQELSLR +NVKRGVKEVVKALRKGE +NKTVDLTQEKKDFYTALKR +QIELEKSGTSSSVSLR +LILGGLRLRGISNSITDY +NIDDLSVLMDHVK +ISEIATRRIATIALDIALK +IRRSSLMIPNPQQFVKSTLR +KVLFHPK +LESQEAGLIASLKSLWDNKPV +DGAIIIDK +NKEEDLGDMSMVKVRNR +ALVSGSRDKKIFHWDLTTGK +SPRVKMKSSLSKEIDPK +IIPDEGSKLRIK +PKSTTTDEDLSSSQSRRNHK +QSQNLAIAVSTLIFNYSAL +QYDDHLFREQL +PYIKQIAVL +KLEELNLNDGLVAAGLQLVGV +LEILSNQLIALNLR +SLIEAEGNGTSFFK +ATTGGGEALCKELGIK +PSPHANVDEFVLGDISISIEK +EMGLFANVRPVK +DDIASLQGLL +QELQVEYLR +TYIDKATGTR +SKIVQEYLR +KSNSGCLKFAEDDQNSLK +HSLGSGSATQAASFINLSYIK +RLDEWITTDRINLDK +VKIVCAYRYHNIAKAKKLL +KWYKADNGMFFTGSNDKTVK +YKCSDCSKSFDDLGKLNSQK +KTEAANKVEETKK +TKPINRDTVKSKQELRHK +QVEVEVQK +FNPLTDKLK +IDDSLEFSSEYKRLYSNY +CHLTLNGIVEAEAQYKMGGLPK +PVLPETASTEYQDALPK +IGIDISNASIQEAHKR +RATSDGPSTPLIKNTTALYK +TLLYGVCGISRKNYVFR +RKRQSRRTSTKLKEGIKKK +SSGGVDGIGILTILK +LLLDEVTVDLDVIARAR +DIEIMDMER +VLKENVAKDDAEK +AQYANAIDER +KPSLTPPK +INLQNAYQINR +RNNDMSTELNLDLIEKMK +GLYIGDVDKTSER +DDLYIVEFTLLDDR +CRLWGKIQTTGYATALKILF +DSSLISNIFR +MDSIQESDVLNAVK +RRKSSSVTLSPTISHNNNNGK +LNIFINLSQNK +ENLKFDPEYYVSEYMTHK +ILNAELRFPPFFNEDVKDLL +SLNTVKRK +QDLLDIK +EDRSITDISPR +TLEMDELTRLDSMINEL +FFCSVHNDVSSSWLYGKKLR +DHFFIRPRFPIFGGWNY +PLHIPLALGATLVQTQFAHEK +AFRKVRPVLQRHSSSWIV +RMTTVFGGRLKGEPPRSTSR +KVMWYASDLATR +NENINDRGSLNSTRIVK +KFVTDGILLRETLLDDTLDK +RKKKTVPIEYDVVVRCVKF +TSDVQSAALISIFGSPRY +QVAKEKKQEKKRKRLEAMR +LITHDSCSNKKSSVKINEPK +KKYQNNDPKIDKTILLKR +VNTNATIPK +ENIFSMMNNVRDSDNSTDE +QNVETLDIVRK +KSLEDLDKEMADY +NHLTDRLLFAIPKKGRLYSK +EATTPTNPDDKKMGDDIK +NWWGNTVPYAGADGVGYPLK +SQVVSNNPEMIRR +SENPDVTFGQVGR +KSAPSTGGVK +QDALNDLSIEEK +NDLITKAKKLPPNEQGSVKIK +RIEGGDLSELLTNR +DKSFGRTLASVTKEILGTAQSV +FEDTNLAAIHAK +KFLDLVGNEKTNRRML +LRLLYEAFPMAFLMEQAGGK +PYSGNFGENDKDGIDTAYR +DTKYSLYTTINRGYDVPRL +TQLASRLPTALRQLANQRK +RGNYAQR +PKGTITYYTSFYPALPVLTL +EDLELFQE +TKSLKDIDSLIKQVGVKLDR +LNNPAIALMWR +DNCPDKESDINK +VSYSPVLSKSK +GLPEQALDLFLQNR +AIRSSSEDKIIDK +VRKYTKDTPLAVGFGVSTRE +STNSQGQTPLMRSSLFHNSY +SDREYPLLIRMSYGSHDKK +EQESKHFTSKLVELDDKK +QNLAADLK +SDNGSFSRPQTADNLLPHKK +SYPWGVIEVDNDNHSDF +LKEVASK +NFFNDFLQVLK +KVKKVKTK +CLNKRPDLKELVRSEIK +DNQMLLANAVESLSELLQIK +KNKELNK +KCTESVDNDKSSK +DSNADINLESDNFPLKDNPR +IVENKNIDSLLANSYLHQQR +KNSHSVISSRRSSFNMMHSR +ESMNDTIEDILVEEKEEK +NMENETTVDDLQDQLQEK +NGIIDIIEKMLTDPLFNSK +DDIASLQGLLDR +LLLIEFPYLPK +LNETTKLMNDILHLIEILPK +SKRKAPGSREAIL +HTVPIQHLAEVIGVLLK +YAGEVSHDDKHIIVDGHK +TKMKEMIQLPLE +MVVLDKKLLERL +KALSALLR +IVGSLVSLCVITGEYPIVR +ELNAEEEGALNILK +YFLPVEVNSIYIYFMIK +VGVVVRIVDGAFGPVSLLFWLL +WRYPSLSIHGVEGAFSAQGAK +QQPSMRFKTTLR +VGFKNDDNHE +VLDCTNLKVLNCVHGLK +PLLDEISLPRQCAVFL +KLDPKVFDLAYNTCALATL +DPDYFQKIKRGPALR +KNKRSPVKNGGRFTSSDPKEL +TVDGPSHKDWR +IIDEASKKSAVKPR +RISGLIYEEVR +WGQLKELLE +ARNNVMLLIATNLKEYNK +DKLPIQTPYLFSSFF +KKARPLSVTMGNAIR +SKINLELLSNTKCCERILPV +FKLKNFQEIIVVIDPSL +RLYPQQQFPKKV +VTRIYDEKYKQKR +LDHTENDVR +LQLAQDDTPMVKRAVGK +QVETRRAR +LIFGFDGWSLNSK +KTTLEQAKASLAEAPSQPLSQR +LDEESSQLETTTRSIDSADDL +SQHKPLLGGGPVIKINANQR +NGPRISSSKALLSSF +HPHKSSTVKAVLLLLKSFV +SSTKARIARAKK +AAAAAAAAKAKNNKR +KELITEVSKEKFLDLV +AGAIRKAAAPGIQLVAGEGF +NTNIYSSSVSSPKSPKAYPK +YSFDGEQDNSDKKR +QEYINHFVTGSSQAHKEAQK +QEASQMAAMAEKLAAQRKAEAE +DESNINNNNETKR +NEGIDLDHK +LSGVNGVCKFSIHRDFGSSER +ISVDSSSPSKEVKNY +GSAPNFPHGIADDIEGLGK +QDSNVLINGGTSSVGMF +PFQEGKDSSKANPYQASSY +IVRNGFLTHDIESPESITL +VSGAGDETLR +SFSAALLLKVCVLSK +AERVTMGVITGDILVNGIPRDK +LVKADDKLLEQHYAEHV +KRFQSKSHR +DTLFVFLFEELDR +TSGKQTLVLSTVTTTVNGAATEY +QPSILVGGTLK +QYIHHTGAYVAELR +GYDYPPNLTESISDWWSLNK +LIKRRKEKLKLRDEMK +VEVNTIKFVGLIGK +HTANAAHSSQGDSKINYLDE +TNSIKRSVSRTLR +NIKEKDDLITIL +KAAELRMKLSGSLLYGFNQKV +LKEQCKSRGLKLSGR +YGKSIGVVGAGAYGVVKICAR +ETPANAKPQEEAPEDESL +VDKILEYIETPL +WTPENGLVTSAQK +LRKLGYDAVFQK +FILLDSMLLFFTVSSY +KRSEPGPAQEHIRAIETK +APEVNYNDKIKK +NGTVNFDNYMIDKR +DIINNDSTNWIK +GPPQQSIEK +AQSILRKFNVPV +RVSLQKSAAEKCNVYSEAIL +HDGKHFFTTPHQQQQTK +EEINETNR +IWAETKDAALALKQMPRQCL +VHDFTLNTPNFGK +VLSSKQLTNLNR +QTHPDTGISQK +YILNPEVIDLIEMK +KKIKESGADDKDLQQK +LKNGPPSAGLSYTKE +LLDGFIMNYAALAYTL +SENPDITFGQVGKK +HLRTEIQK +NGLASKIAQAVLNKR +SADKNNYSNSNDNANSNAPL +EKVIAEK +KGAKIKKEK +SPSSSVKAGSFGAPSSPTSGIPNPK +VSQILSRFEKK +LREAIIEGNLLIVKRLL +ELCRKMHEVAGLDPIIFPK +GIYDRFQKDR +SHSSDRSAAEK +NDVEFNENGMLVLGSGVY +QDYSLAQNIAQEAVNCSPSE +RPVSNPSGSPKRKRK +SLEDVRQIIDFGNYEGGRK +YGDLLDFHHK +LEARIKQFFITLR +PSITRKVATTEICSKSR +QVIAEAK +KKVSKK +KFVEAAPK +QKEGKK +NEPLDVEK +LINDNVKK +PFPLDVQE +KFKEIIL +IFDKLK +LLGLIAK +ITKIIK +LTKIIK +ILQLCTPK +EDALALK +DVTEPAK +KLKELK +QIKELK +LINDIVKK +ESTSSHKK +KFLASKL +IVTQVAK +YGSALNK +EKLAKIK +EKLQALK +KELKIK +KVGDLESKL +KEVASK +LILPGELAK +RTVASK +AGLIASLK +PGYVDIVK +KSTLFGHL +STDLVK +ALGAEIIR +QVAIQGIK +ILGKAIGL +KINASIK +LAAYNKK +NTLLK +EGDVNKSLK +QMHLAK +VLVHVK +KLRLGAR +IYDLK +EALVEGLK +NVPIDYPR +KYQGAPK +KLLAISK +KIFPLIK +NISNGV +EANLVKR +IAAYIEK +SSELVK +KNSSINK +FAEIVE +MGGIER +ELIIPL +ELLIPL +PELRK +HLQLAIRNDDELNKLLGNVTIAQGGVLPNIHQNLLPK +AIKEVLGDAATPEIINAWGEAYQAIADIFITVEK +HLQLAIRNDDELNKLLGNVTIAQGGVLPNIHQNLLPKK +TVLVYGHYDVQPAQLEDGWDTEPFKLVIDEAK +GVTDDTGPLLSWINVVDAFK +AIFATINNIIHSGDVSIPSLAEVEGK +AIKEVLGDAATPEIINAWGEAYQAIADIFITVEKK +YRGHLENISNNYMIGAINAENKK +LSAPAGDFAINKELIHQNEVPLVLLSSGVGVTPLLAMLEEQVK +KADTGIAVEGATDAAR +ILRDNIQGITKPAIRR +GNGIRNNLNTENPLWDAIVGLGFLKDGVK +ILRDNIQGITKPAIR +DYSLGATLNNEQITTVDFFQNVNAFLQVGAK +AWEPTEENPIIFNLPATVEVASPNVYADQIEYFATHITER +LDHTENDVRGVVIEGYPTIVLYPGGK +VGAQPNALATTVLAAAK +SLGLVVSVNAEPAKVDMNGTK +LTIANMTTEWGALSGLFPVDKTLIDWYK +QGLLPLNFKNPADYDKINPDDRIDILGLAELAPGKPVTMR +KETYSSYIYK +FYTGLYGNPHSNTHSYGWETNTAVENAR +LVSWYDNEYGYSTR +KPVKLDENSANSTVASALDTNGTSATTETLTSKK +MKDISCSLLVAGFLPKNLDPVEAENFNLSDVTRGAKV +SIEDVFHLMKISKRAPKPSTLANYYENLVK +GVSYLK +ASFPRVPK +NTTILDPSK +SLLRIPK +QEVNKK +KEVNQK +ANLCR +GITENLDK +QDLKQAQE +NWINKLK +SSGSADLEPK +EGVPIPE +GREIIK +KVIGKVLK +KNFPIFAR +AISASPAASL +EAIAKVK +DKAAKVK +EIISLLK +FDEASEAVK +LELGLK +QVQQAEEK +QLKELK +QIKEIK +EKKGSKK +FLGSIASK +KDIEGLIK +AGSILQK +QSILKK +QSIIQK +ERMNGKR +KIRSLLK +KKFEDIAK +EAAAMNKR +EPNDQLK +GGLEGWVK +ELNQLLK +ELDLKIK +NKGVIKNF +ENMELK +PLSDVLSQK +RVEGTSYSGLKLQGGNCRWLGHNNDPDVR +PDTETTVAVVNECILLLIQLLTEVRSLVMKSSK +FDGACDYGNEKEVGEGIRK +QLIHTLISNKNEELVRNGGGINMIGNNLR +ASVQTLIRRLHKYDTNSVNLIIIDEAHHSVANSYR +YHAMEEPSEFERHDMDVR +HLTNQSMPPIFLPPPNYLFVRDVWKSNLYSE +TGREKSYSLSELNGMAKRIFPK +KPGKDCKLQNLQRIIRKKIF +KTIRALK +NKKSLLPRWKTIE +RKQKALECVPLVMEPESAFYK +IVAALPTIK +NEQGGLQQLIKNSTK +SNNWSSSSSASTKMVSSITR +GVRNLGKPVQLAQKYYQQGADEVTF +SVAKALLDEQEKRNR +QTNPKLK +EIVKLGGEAWSLCKVENKKTVEK +LLQTFFFFYTVLFYESSAVNDVSNKSF +GLETILSQK +LVKWSSESRLEPAAAIYE +EMEAKKRRLEYQIDNGMEDQICEIKESDDFR +KEKYGILAPEARISWNVVTSVISFPIALLIFGWCLDK +EVKLKASLK +RNSLKLVNNKLPKYNEPSTK +PLVFFFWALFSLSLSFQDDIFLGLYNSGNPVPQLLVLR +GTFIIAYTFPIIHDVLSGYVFIIFAIIACSISAFIWK +VEEIVWLK +INIIEVIDHMLLVHR +FIYKLPKQLLGLLTSLAPTVALAV +LQDVKSELLNDPTMQNLQNDILDQFNEKLGIGAR +PFGPILNVRIPNGKNCGFVKF +IALGLCDNLLTSVIRAWNPTF +DPKNYPDAPLEGIRRLLEVLEHKTIPR +EDVSIDDGDTDPNQKKKKK +HKELSKGTLFQATYK +QTWNTRIAGWMTNLVTFGK +TTPSDLLAQRSLETDSFE +FFNDTQSQDSQNTIKLK +NAEAGGNGSDYFSNR +PGAIIQSELDIKK +QLVSSLKLGSDEANILHDIK +RDMQISAILKMLFLNK +IYPLNFHFEQLRTIDLEFIVETKRKR +PSFYLNSVNDTGSLTDKHSF +RIIDSHSVCFPPWDLIFLEVIEPLLTK +FIPSKFIESALVYTFVEEEDISERLSVLDL +ALYAGLVPAL +TPETSAALEYK +DLDEVHLSFPEATKKLLSIINESNQTTSVEVTNKIK +EDSTHLK +TRIAMKEAGSSAELMY +ELWPLLECLSCVASSLGERFMPMAPEVYNRAF +DVYCHEKELTIIKNPRV +IRPGVPTKFTKKQDHKLHTRLDNKLIDEAEVTLDR +SKMLLDLLEDGGSKKKLTDEE +LLHFLCRSCHWLVLVLLLLLLLLLLLLLLLVAL +KTNPELK +VGAKKVSVSSTPGKTKHFQTIK +GTTPEKPEETPLEELAETFQDTFSGALGK +NPFKAVSVGKNILQKYDY +QSIPLETHAVVTPNKDDKRVPKSTIKTQHFFSLFHQGK +TTTLAYLNMDGGSSETSTAFSSK +EANLLYILQEIIKIPL +DFSDDCRIAAAGFQDSYIKIWSLDGSSLNNPNIALNNNDK +SPNGTIRNILGGTVFREPIIIPKIPRLVPHWE +TKVKKHIKKKLVKKTKSK +QQPASGGLFGSKPSNTVGGGLF +TYNPVSLDILYSLNSNFYFVKDDLLF +QNRYLSTADVK +SVNFLKFAASRNHPSAMYKL +KVFNCFVIGKPCCGKSSL +HIQRLKAKANPENFLICFPPPDIYK +LNIKITLKQYHVKR +TASGNIIPSSTGAAK +TKIFETALNEKQITNNR +RHEPEALIIECGGDGLLGDR +EYTSKFLLNEMPKVMGSLIGDGSAGAIIDLETVHYRNSALR +LIFKEMGGNEVLKEKVLRPIIEGERMPLLDIIKALSRTNV +ALPTWKDSLFELNLNDCLLKTAGSDEVFKVFTEVK +EFNVSVYECLSNE +LIQCYEGGEIKKTLMFIPTSTNSKIHQKLSKAVIRR +EMTTDSQLPGFARTYLGLFELVRTIILTYSRLL +QWKHSFEKFASRIEGLTDNAVVYKLKPYIPSLSR +QVHDDLDDRTCSESSSRNESPVRTITKDNSV +DHHLLLRLRPRPLLLRPPR +DNQFINELQKAMHILNMIKLTGRDISK +VQLDKSYQVQQHLKQLIESGKFKRIDL +VDSLTKFYTNRIVEIVANK +LKLCEGNAGMAKTKPDVPLSYK +ELPAITLE +SSLWEINNFINHFHPTVKTYANAYVTGETEQIAKPDLGLF +IMKENNKKKDLYEHGIKKF +RPDYEENELLSQKVSSNKNIV +CLSCVASSLGERFMPMAPEVYNR +AFYQHLKPGSLMAETIGRHLSTPQDALLNLIK +VELLANKCPLLVEVDITLSPNVTDSSLLKLLTR +ETLKHVGVDASGRVELDDYVGLVAKL +GPDYCAPEINGVQFAINKVDKITHESKLR +RRTFHCRNTCLFKNTLTVGTTISIK +SLRSELDEKMKLYLKDSEIISTPNGSK +LREEQLKRHEIEMTANRSINVDQIVREHY +IKAFKKKHGIDVSDNNKALAKLK +IGIALCSRWGGNIPESEEK +RTVSHARSGGAKFGGR +PYMYKVTLSGLIEPDANVNVLASSCSSEVSIWDSK +TFKSLYIKEDDSKFTKFFNLR +SLNTSGISNSSGTNNNNSNNNNDNEQK +VIERLLHHTNSRYMYK +LYCPSCEDLYIPKSSRHSSIDGAYFGTSFPGMFLQAF +PAEDFVTVKKYDLTLLKTHDDELKDYIRK +ENPGNINK +SLIPKITVFSKVKTKNALTVSMFKNVL +KDAAIVKK +EQVMTANFFVSLFKRWIQK +TGASANGSSNTDDFLLR +MTFFLKRKISFFLSGIAQTFLFLPILLNRSVIHVV +LSNISHHSPVKPSSTSSHSTFIFE +NIVVPFIQEMCTSE +HVYLANDEEGPEAISRIIYSLIR +QIDVHLDKNK +DGEAACPFSKMNNAKTLKPESERSVKCHSYMSL +MRQEYINKFKIFTSIFDELGLPYTAPEGTYFV +LRSVLVVLALAGCGFYGVIASILCTLIGK +SESSTIPTTTPHPDLLQIQRHGELLRK +HLLLSMKDIDIKQLIRTILNDSNEILTIKDL +DNIDLDDLKSNTEYGGYK +LDIEMEKSLNLKVEKYPGLNCPFPICQKTFR +GHLYSWGIESQDCGCLGLGPSEKIVNELHIGNWE +NKYYWLLCSVVWIWSKYRTSRVNVKMIPIKR +GRGSVKEGKNASDLPPGAMNFE +DFTLPFPITSNSTILQKLLSSGILTSSSNDASEVAAIMRQLPRY +MSVSDLDKRDTFIENFLAK +RMNLKTKSVELRTNPKFTTDPGALQKGADFIK +TSAINNSNIGFVGIAYAAGSLMLIDRRGPAIIY +DQIKDSDIRTIMYNSSGSAPSLFVGTEAFEVLVKQQIR +SVAKEEAQKAKEFLDKR +AAIYLTAVLEYLTAEVLELAGNAAK +AADLVVDEIKKAGGIAVANYDSVNE +NGGFARFGEIRLGDDGLIENNNTDRVVNNIVKSGF +PRNMQIEFSSAVQDHADSLGRELKSDEISK +LAECANVDKIIVHTDTEPLINAAFLK +TEEKLRTYEELNKQLIMNNLERSRTEIESF +KQHGSNKDTIPSSQSRDIANDY +LENLIESTWNPVRIMGAL +ASLDYDPSVPNTSYAPVQSASPV +VFPKSVVNAIRNVRGEWHAVSDYWRKR +KKEIVKK +HMENVNRVHRILDNVRSNLSLMLNQSR +AFLRSFVPQDLESAKLPRTLK +QLEQGIEPGDSGIAFKNLTAVGVDASAAYGPSVEE +NDKILELLKQVKGHAEDLRTLKEERSRNLSEL +VLGSCILGVCYLTKFVQKLLSAGIVFE +LNLFWALCYNIFMIPIAMGVLIPWGITLPPML +YENLITSTSNLYNEVQEYDTARRAEK +YRNTEGVIFVVDSNDRSRIGEAREVMQR +LETETGLVKLKTLESLKRE +PQNKSAKLVDGELLVKASVESFGLEDEKYWFL +LKDAVPFTPFNGDREAHPRF +IDALLPAQFNADIVEKAVKAGKPVILEK +TNQKVGAQPNALATTVLAAAK +AAVCNIFKDVLPTANTNNFSKTIINLGDGR +AFDKAEDAALERFINEYEAIERLTR +IMNVHWITPNNTKKKQNVSISFSLGYFSIWAKYALL +LNNLSNSGGPTSNNGPIFPNSYTFMDLPHSSSV +SIRDIEGSVQPSR +LKGVLGYTEDAVVSSDFLGDSHSSIFDASAGIQLSPK +QSKKAMEERKKNGEGLRTVSGTSKQTDK +CGPYSMFLKLLHQWSPKLTPRQISEKVKRFFF +IATYQERDPANLPWGSSNVDIAIDSTGVFK +VIVISLSLDIASQFVKRSLTLNDPHYKL +ENGKLSERLNILQEKYNTLQNVKSNSNEHIDSIK +RRLDDGDSDDENLDVNHIISRVEGTFNK +RERMAKLSGASRFGAPVGFNPFGMASGVGNKPSEEPK +LKKLHLSGVASQIKHEAGVLEKSRAPAKKKQK +EKLASGVTKDLIRVSVGIEFIDDIIADFQQSFE +TDRDDKKILKIV +FKELFHPEQLINGKEDAANNYARGHYTV +KSSSPLAMSETLSKVSLLTPDIGAVYSGMGPDY +SEFDNVASVFMPLIFIACNDEDKDLETLY +ILAIDIAEDKESNYESIKE +QPDNLPVIAETILDIHNLPQTDVKTYVAAK +SSAAMGMLNDRNGRLSRVIEKMIKLMSYHMKL +TKFRTDVDISGSGREIKER +AFRLKMRKVSEWELTNQARILSTQSE +YNILLTSISRERDLFTHLWNQWLKLNTSLPSK +DTCVSLEKNTSSPPISPNAAAIQEEDSSKK +TLSNLFSFIDEPSVLENIFGHFIVPLLSQDKY +NNTWNIYGKSSIDGWPTLGSVLYEQK +SITSRSGKSLEKDFKFDMNVAPSAMVV +DLASSKALAEAVRKSSSLMTLDVDYVYMPENIK +VGLIFSNPSGAGLDLLVFMRGMSF +SKISVWLALLIFIMITLAYYMFRINQDIKKVK +IPFSERKLKFSNRFLPVASPFHSHLL +HELKKLMALAGRVHGESKIKNRVAKDGLVKTTAGDL +QFIPKSNSTTRSPHLGLPHNLPHNHSIKSINRHR +LEYGVLLERLESRIELDPELNCEDPLPTLASFKQELL +EKPLTGEQQKMYDEVLKHFSNPDLKVYTSEK +YLQNEMIKKSLNSKRAQLEKLE +LANAEKKIGSLNEELACVNDIVSDIVNNLTALNANLPKK +TGSHIWALTHCKHSSKSRGTLTVSPGAPPGTCSCSIR +TNILDRLKNNGIPINNKVACQFIMRGLSGEYK +VKEQLEMMNRRDNALK +WKVVMELESSAIIRKIAELTLHPVKK +SNHSSSVKTVKFNAKQDNVLASGGNNGEIFIWDMNK +IRFQNLPPLGSAIELQLRR +ANKRPTDLIVHQYSDEFAEQLVEELGWQE +GRKGVAINFVTNEDVGAMRELEK +AGLGANKVLELNSGECSKKLVGVSRCYRAEAGAR +HVYVITVVLFYISSTTNNNVFK +ESCYEDILSPELGLKLSPTRRKYSLFSNKLETEVSEYK +MGEVANVNEIPVKIRNHKYPAKEHNLRVK +LIEDETQATTNNTVEKDNNTLERLELAQEL +NAKYQELNNLKTELEKFKKESHVK +VKLIELEFKDTLQEAERLQPGWVQLFVMVCK +REISDVFFKYLPNAFINFTNLYRGHPDSF +SLAENLSRSGRFQVVVLNTRGCARSKITTR +FKLDDKPTPSQTALDSLLTKSISSPRL +DEICLRLKSGVYDKQGHQFK +SIMKSTCAPNNTPVHTPSGSPSLKVQSGGDIK +VYLSRKVEAFVPVSKLSDSYLKEWKKFYKPMQYVLGK +DNTQDLLLLLSLFKKITNVNPSKNFNVILASSLNEVGTLK +AEGTTSRLLKCCDLASQESEFQDIIE +MPKETPSKAAADALSDLEIKDSKSNLNK +ELNQDGTLEIPNVMEHSLLRHELLFK +TTFCLIEKFKKFICHFFPSPYLKFFLLEGSL +MVEQELLNTKDTLPLGFTFSYPASQNKINEGILQRWTK +NDFEWYNAVIMDLAMLCQDISDKSLGSKIGEQFR +SSYNTIDGSITFSLNFSDGGSSYEYELENAKFFK +EVKKQTVK +FGSGIELESLPITPGQYITVNTHPIRQENQYDALR +WNNGVLDSFLVEITRDILKFDDVDGKPLVEK +QLIQFCKEITENTPSSDPHDWEVVAANLNSYL +SCDSLCAVNREVNTTDRLLKLRQEMK +SSTTSNTSNGNISSGSNLSRVSTAGSLKK +EGVTLLPPVPESLLHKLNSWLE +LNVPTSSGPLIGETNVKDLYIASGHSCWGINNAPATGK +YFLYQILCGLKYIHSADVIHRDLK +LSKDVSIEDAILNSIDNK +KTAALLLSSMEELLVQDKYGIYGR +KAIEDAIESAPVVLFMK +SNNFFAITDDSQIVYFTKNLKVERKTPSLLEPQEIMSVVLNK +VNQNLLEDHSFINYK +DALAYLASPAVVAASAVLGK +LNSHDQIIADEYQNTNVPNIYSLGDVVGK +ISSPAEVLSTSEIPFSGVK +GVEYFEVITFEMGQK +ISHVSTGGGASLELLEGK +AVFATVNNIIHSGDVLLAE +IATLSPEIGQLTLTVGSAGK +HYDYLVIGGGSGGVASAR +GVVIEGYPTIVLYPGGK +NPADYDKINPDDRIDILGLAELAPGKPVTMR +AIEDAIESAPVVLFMK +QLSIWGLENDDDVSDITDKLGVLIYEVSELDDQFIDRYDQYR +RCVAIDPVDNEWFITGSNDTTMKVWDLATGKLKTTLAGHVMTVR +NKNTERLNDELISGTIENNVLQQKLSDLKKEHSQLVARWLKK +SLQEVNKKLPKLEEPLAEQIPKSFPENIKLEESASAAPIPNDIGR +ENVIIVQLDESGSLEDITLISDQYELLSHRTNSLSLEENQMR +LDEEGFSNYGMIGCTQPRRVAAVSVAKRVAEEVGCKVGHDVGYTIR +FISEQLSQSGFHDIK +KIPATVKSGFTRKYNSMTHPVAIYRTGSTIGGGGVGTSTSTPDFEDV +TLSVIQFTKMIKMKGFLTPEEVSLIIQY +IITNEIDPKDNLGVLL +PDQDLTSMKYSSHFLYALNKKGEILVIPIRTPDLIASQVSSRR +EPFRSLDNSKMRNAKEGMEKLIMGKLYSRCFSPSLYEILQK +QFLEKKSDSLEKVCKR +KFSNLLLLRLRILCF +MNGKSLKEKKSTRSVEDFMAAMQRVSTQHEK +SLTKKRYGASAGNVGDEGGVAPNIQTAEEALDLIVDAIKAAGHDGKVK +SLKEKSNLNADNTTANKINKTGENSKKGKVDGKR +PLYEDWAAEAVTGFDNFINGKSNPMNTRRNR +FASSTTTSIDQLITTFDK +HKKDRNFLNNTTGENVSTTASAERFRRVGGNPDIPSLLKPETF +ECGHEYCINCYRHYIKDKLHEGNIITCMDCSLALKNEDIDK +TFAQYVHTTGRTARGSR +DDNVRDKGNWKPIDVAQTFEVGNIYSKVLKEVKKKGPPLGAGKK +KGLPFRRTDAQKACRIDVNKASRLFAAFEKVGWLQDKHFEK +YDSIPAYEESTVTLKEYYDHSIKNNLTAKSAGSYLVSLFPIIK +ATGGLKKGGHLLKSLGGNPMKRSKSSNGNESNGAKKSSEKKSFDRR +INVDVIHAERTALQRDRIIERFKTGELWCLICTDVLARGIDF +LLLHILTELLTFSKNVLQRTKLEKRDFCITDVALQIKSIFGK +KLKIVNTKRKCTICEIVFPHEIVDVVMNR +SETLSESDISVNTNKKR +MNKNIKKKLPRVSKKASALSNGVSGNVMSNSNIVGHGAVGSASGWKV +GLFLDTLDANALKWTATSLLSDYEKGDAGATVYEFIFTVMGSQR +ESDLNKVILQESKSQEK +MCNTRFEFTVDNFCFLGLPIHVDSQGRWRKSKHKNKTRSK +MTKHDFVDLVHNDKYSGGNEIPMAVLTYF +AEFFTLKGMFLSKLRAYEEANQAFATAVQIDLNLAKAWAQWGF +YQLGVDLKLKYSKRR +EDLKGSSGDHQQKCCEHFLLALALCHSVLVEPNKDDPKKLDIK +LSNPSLNFRWFGIKFLPQKSKFCSLLLLLNNLTLMVVFFAAR +MGEAQTGANFDDVERGVSRQIAASAFLSLLNLATKGMVKLNEYPV +GANEYSSSSSINYNNDPNSDTSLLANEKNSPERNGQRMSDYKGY +EQQLFDGKKSDILK +RDDQLNVNLRNDLNIMSWTGSGLWTDTIF +ELSGALAKATSEAEKETELHAKELKLNQLESENALLSASYEQER +WDPKSGQCLGDALRGHSKWITSLSWEPIHLVKPGSKPRLASSSK +ILRAKRRNDEGFNAFF +REALDTYRYVWVLHLDDVRTPVLQEIRTSWAGSKLIMGKRK +KAEKYGMTLISDQE +YIISSKPFNAPVTER +TVPDMDSEKLTSLVQK +DPEFYKYLEENDKDLLDFAGTNPLDGIDSQDE +DQVSEHDHRFYLASK +EAKMVMVVPTIEDQAMIVLHPKILSQSVVMHIKGQNYQLDLVK +DETLEIISITSLAQKEEWLRKVFGSGNNSTPRSFATSIYNNLSK +DLLSADKDAEYDEVVEIDLNTLEPYINGPFTPDLATPVSK +GIGHQIMIEEGYAFPLNMTVASDSHSNTYGGLGSLGTPIVR +KAWEPTEENPIIFNLPATVEVASPNVYADQIEYFATHITER +IATYQERDPANLPWGSSNVDIAIDSTGVFKELDTAQK +VETGVIKPGMVVTFAPAGVTTEVK +EQFPLFAIHDMTEDLKYGLPQLSEEAFDELSDKIVLESK +VQNLAADLKNELKAPDSDINEVFNDFKDKIESLK +TVLNIPEISMPMGGFMAGAAGAGAGNVPSSTGEAGSGAEEEAKPEAK +VDPTGISTIVPMASHVDQTEHDLDILVTDQGLADLR +LNDKQTGLGLTQGWSNTNNLQTK +YGVTDKISHVSTGGGASLELLEGKELPGVAFLSEKK +AKGVEVVLPVDFIIADAFSADANTK +QESVEAYLVSLFEDTNLAAIHAK +PSLWEAPQNPPYSYYLYYLYSNVASLNQWR +DPRQLERLLAQAEDEDDVKAANLAMREVEIDNDDF +LVNIGFKEIEVSFPSASQTDFDFTR +DHEDVTKFKAKKSKAAAKKGRGKYQFEIMLQL +YQQPSFVDQFWGTLLATAIGIIIGCYITIFDR +SYDLTRHQNTIHAKRKIVFRCSECIKILGSE +QILNKLSDVFLEQRHCQSTLPTVIYHQPAILSPLAK +EQKSPGVSSSSTKVEDLSLDGLNEKRLSITSSENVETPY +ATYQTYAPILYENDHFFDYMQK +INVEFVNGVIADHIDVPEKIIKKCSPSVPKEELVDLYLKE +LLRLASKSTSMKLSMPPEVTSSNCHVRQKIKTLK +LDYDDEESLILAMPKNSGGTVLSSTRAVWYGKVSAR +EGGSIPITLTFQDALNTSVLLLPMGR +VDIVPESSNTVDVDKELKSVEGLIQDGNAQIGKELESIVNLIIK +TLGKHCGISCMVTTGGTNLRDDILRLNETVHILV +LTFQIPLHIDPITSKSNSIQDLSKANDIKLPFLQGSGSSLL +PAINSGGTSTTATPTASTVETSKTSSSAMDTQSQYGSSKKSK +LSNASPDYIRSTLNAVPKNSSLLKKSKLPFGLVIR +TEKGVLRAMEVVASERREAAKQLSLWGADNDDDVSDVTDKL +DRAELGSIKWQFMAVDEAHRLKNAESSLYESLNSFK +KSIGIKIKEETELIEGEVVEIQIDRSITGGHKQGK +IVYNFCTNYSPAQPSASLTDGISTNDLEKIHDDE +SKISRKVNENWNVEDGHITDVLLGSLRSNEEEIR +PNRVSKKNKGREKNNTPTSVEALDAELDAYMK +GLIVDRNIPTDDFTLASTNRQSPPPSNTGCSLHR +KSEIDALNLQIKE +SGEISVDFDKAFATPDIVPALQSQVAR +FQVLMVENITKSKLTQIDDIKTKLDPKKQKVDRLR +SKDCQIAAHTILVVFATALPLKKTIILAAMETIL +QPSRKRGPKSIRLRSLKRIAEVQRESGPNTIATAPVIYKR +ESIDTVKFHADTWTRGNDGGGGTSMVIQDGTTFEK +NDPRNLQQLGMLLVSPGLDEDRLSEKMISKIKK +IAQSFPQNWLKLSCEVKSITREPSKNVTVNCEDGTV +VVITAPSSTAPMFVMGVNEEKYTSDLK +LLIQNQDEMLK +IPETQTKRTGGNNHSKEGAQLYSCAKCQLKFSR +SIRRGSGGKGKYTGGNGVVRDVQFRKAVTASILSER +YFYVLHNHSYKEKSLAWIAEDNYIWAVVKHSLCLY +ILRKSILSSEARKVDMTIKMARTKFAPMTSNIPLR +RFRSRRDINPMKIDEALRQLKAAAKNEQVLTL +KDAAMVHNMMIENLSDLDYGVATIHSNNLRDL +MVDLGIQPPPISTPNLSLPPVILSR +LGFEQIFKNSLTGLDMGGGKGGLCVDLKGRSNNEIR +IGSSSSNRMEGNTTSNDSLFSSNSRGNKRRLSIFTNSK +CTWHLNEDVMTNVLKLLSEYGSNLKFVDQFVRSSV +DEFKTQYDTLLSKISSMKSIFNKMKEAQKQLE +TNKQEKINQTRDANGVENWGYGPSKDFIHFTLHK +DRKDKKEDAEEGGDSEETTNDSDHDSGDERSVDSE +FNPKGCSNLHPFVVDNEFPPYHLSLVLIKQQRMLDR +YQANAEFAKEAMSNQTLLLPSDKEWDDRREGTGL +EDAGRMAEKNAAKRKEALGKAPGEKDRRNLYLLNE +KKNVPEIVNLLNKKFGHNAIGLTGEDTFEERSEK +IYSGDFVNGENVTPENILNNVKAKFDYDLDSDR +LGNAETNPALRGDIALTIFDVCMKTLGKHYINK +QYWMKDWIALYNNDPFWFPDLDSMALGSKK +YREANMTINIYDFYIAFRETLPKEEILNFIR +DDSFLSSQGNRRFYIDNVDLALDELLASEDTDK +PNSALWLLNEAKMLAGKGRLRDSLALMDSIDVNSIR +LVRSSDGEALLTTSRFSENGVWYPQKLNHGVSLRL +KVSEPNTADALRSSVPEVISLLDLPNIDLNNSVIK +LLCMHRDPVTISSLYDLVWLANCSLFPLLVIGVHFLSFR +KMVSYISGNYDTDEGFDELRTQIEKFEKSANVDVPHR +YLNSLKFKQQAPAAPVQLEKAVRTKSNESRQHLR +TIPEFEGDVNPK +ISKKIIKLGGIFSKDLTRQVNVLVVGSTTNTNKF +MAELEAARSEKQNDEEAAGASTVMKTKTINAQGEE +FDVCTSPPTLLDEKFDMLEPGLSSFDTDSVGAANSLDPLL +QFPIFHWSAANKVVYAVPPIPDQSQYMISSSIVQEIK +ILFRKTDSDKIALISGGGSGHEPTHAGFIGKGMLSGAV +LITSHLVDTDPEVDSIIKDEIER +SLEGVATIPVSLTTAGLVLTYNLGLDLKWEPSTPQRK +TAGEATPINLTNHSYFNLNKPYGDTIEGTEIMVRSK +QADIRENGERKEQDALTQPATPRNPGDSSNSFLSFDEWKK +QHLFKYQGHIGAYLIVAGVDPTGSHLFSIHAHGSTDVGYYL +AGSGVIVARLKDGTWSAPSAIAMAGAGAGGMVGVELTDFVF +SIDTAGSLSENATEDDGTQNGDLHDDDDDDDLESTL +STSSEAEYSKDIETLKKEWLKEYEDETLRRIK +KRLLSVYSPSMQVSANIETICLQLIGNIGSTIFDIK +KLESFAQDLAKKIRSDHDNAIDGLSEVIKMLSTDDK +AAANIERKKTLGNIPEVKTAETKTPLNDKKRNKQK +PLSSFEKKILTQSLNDQRNGTIFSSTYSKSLSRE +STIGNSLVDALDTLISDGRIEASLAMRVLETFDKVVAE +LYYDGKPVDLPPQAEEVAGFFAALLESDHAKNPVFQK +IVFSMSNIRVADVYRSLNGGKNCVKLFSKSKLK +TFQQPIQSRGGREVALGKTVRIRSAGYKGQLGIVKDVNGDKATV +TMDNCIALRTMVYKDGIAYLQAGGGIVYDSDEYDEYV +LNNFANTRSFGDVAGKPYGISSEPDIFSFLVGNTLHLPR +DLQQNMEHIDEAFDEKKVLDEGCSNEPVTFLGENDTRSIV +VEGCLFGNGERTGNVDLVTVAMNMYTQGVSPNLDFSDLTSVL +RRWMKRKKTQIDKLDKIFTPINLNQSHWALGIIDLKK +IRVGIIHARWNRVIIDALVKGAIERMASLGVEENNIIIE +KGSFIVPIIDIPREDLSLRRDVMYVLEKLKIKE +DSIVSLIKAIDEVTVVRDASEIPEGCVLQSVNPEV +LLTTSKSAEMITDFGRPNIDEIIEEAVSGAKSLL +HEYKQAYHKELQNLKDMKVFDVDVKYSRSE +KFDAVLVFNDPHDWAADIQIISDAINSENGMLNTLR +LENALMQDCGTFSELSQKLSSFDFSCIFGSTTNPRFQTK +LLPPSRNTELWDSFEIFELKHGDKE +LASATTISQTDESHKQEYKSTTMLEKGKKEKSESVAK +TLRNLSTVGEHSSGHQQSTNKNTKVIYGELVEGER +RHFAHIFKLAKNNTLKFAICLTTFQELRYLR +LLNDIIPFELFPYLPLFAESLTNLGTTTESFSEIEDQIK +QHILNAARNPSRLDMKSVHAVGTRIEIDLRAGVTFTRL +KQGVLPLTFANESDYDKISSGDVLETLNLVDMIAK +GIDSVDDLIKNVTSEKVGLESLYGDELNSRSPSNDSLQE +QEKKIITDIHKEDPVDKKPMRDKNVMNFINK +MMDISPTCYGYIDDEQDLALVFQGVFNGNLRCIE +NISNTPLVKGPFHKKNEQLALSLFHVLVSQDVE +KKDEDEDEDGIDYSNDILSPLSLL +RTVDPSKLGIDTVK +KNGSACWQKINQWLRTIEKVDQWVGDPKNIE +STPAATPAATPTPSSASPNKKDLRSPICCILGHVDTGKTKLLDK +RYKYGYDMPCDVLAKRMANLSQIYTQRAYMR +MPLDMGKAPSPRGEDQRVTNEEDLFLFNRLR +KVLLDSLAEPFF +LGLPEELMRPKVPELLLKLLRWSHEHTGHFKAK +LYVHLKDFQSNPKNTIKELAIARDSALIPLQVLR +LYSEVEMNMNSVERVKEYMEIEQEPYNEHK +QTVILELKPKWLYYDTDYCRNCTHNAFKGRGTK +GVTPLLAMLEEQVK +SKAQQKTAEQVAAERAARKAANK +HENANDETTAVEDEDDDLDEDDVNADDDDFMHSE +NKNELWNGTLQHYSGGIDPIHDEAFQSLCIDL +RKHKILQQKVGYPNNPKTIVCHINGKKHTWVAL +MGISGYSLATPSLFPSSADVIVPKSRKQFRAIKK +DRLSRLITTQFWTSLTRRVDLYNIAEIARDSK +TKDPMINSGNLSTVFNIVSPIYGQNVPSEFVEK +YWLWYAITTEPLEDVKKELKNLSVFVTKTLL +SGSLNFAGKLSLSSKGIDFSNGSSSRITLDELEFL +FTRNGKKLNEK +YTSTIQSSSSEASSTNSVQISNGADLAQSLPREGKLFSVLVALLAL +LRREGQVLYDPEPFKPTMDKLADLSARVRIL +KDFNYHCGECNSTQDAIKQLGIHKLPSVLVLQLK +ELVKGTNMGILTPSESLGEDDCRFLSCNLYAKSSFGE +LSFNSPKKCSLLGVSDNEDGAREDKSGRNERMEDCLK +IEDRTVDKPVGSSHAQEKLALVKSTLFKLDQEDR +NTFEFIMGKPKLWLRLIIGMMIMAFQQLSGINY +NCGYSIHLQISRKEFLNDLVKRFPEQPPLRY +KDCPYEGYGGKDKK +VMDTIQDKLINDV +TELIHDGAYWVSDPFNAQFTAAK +WTAINALDLGMPVTLIGEAVFAR +ATRSVNLVRISQASDKIVDKFDKILMLSDSYQL +DENHRMFWDPEFINNLVICQKNKNLLSNKPF +SPGAIGGNAVLKTTLIRQNSYTSSSSSTPMSAVQSSVSSSSKAGSV +HASMKCRRQLEILWVEASNLEPETQEVDKNKFHDSWNK +EEEQQEENAIVSVKDELSLDDQDKNIDAAAPDVK +EDDEDVPPQLPTRTKSGESTGKVVAETTYIDTPDTETK +KGKKRKDTVLIVLIDDELEDGACRINRVVRNNLR +SEYPPLGRFAVRDMRQTVAVGVIKSVDKTEKAAKVTK +PSPEISINKSKESKGLLSTFASYLKGDEEPTEE +REDVDYVADKILTRQTVMQESIARFHEIIAIDK +VGIYGVVSSFNTVRGLYLDVAGGSTQLSWVISSHGEV +NRAMAIAVGANWIWGFLIGFFTPFITSAIGFSY +MMLNTPPWNTLNEFMKHKEV +NNIFATQFHPEKSGKAGLNVIENFLKQQSPPIPNYSAE +DDDTKPFFRENSRNKFTPRAIMMDSEPSVIADV +VIGGKSTKASLTCTSTTEAEIHAVSEAIPLLNNLSHLVQE +TILGPILSLSPIEAAVAIRNYGDNLLRSKQQTAMIHESLQAE +SSSSSSPSKVSIF +PQTATLILKRGDLVIIDGDRGKDLVLVVEPVVDINLALFINF +ILQEDLSVSKEISSTDGTKWRLRSDRKSLFDVK +TGLICGNTTDWHNYQIIKKNNISLTHRFEENTSIVNLK +NMAYESGTNNYSDTIANGNTLPPRSKKGHSGRRKRSE +GILTGQHRTENPSGSIPLRTTRKYIPGPNGLVAIEVPVE +DLIPILWDKLVDQLGKDNLPVILVGTKADLGRSTK +FWKKNSIKSTLLAIICMLLYMIVPMMWPTIV +KFSDWPTFPQLYINGEFQGGLDIIK +ICELCYDPFKYYKINELEKFVNALEKCCMVTSSWQVF +LNDVEEEESPVKPLKITQKAINSPIIRPSSSNGVPTTSRK +QPKRFIDPWKQHNTHQNILLEEAKWMQADFKE +LPVLTSTLGSSVKDISQLTDLLSINDVIGQATLNR +ANVGNVQQMDAKNKTELVHGPVTAGLGSSTFLDGAPASSAAIRNDIK +SGNCHVFQESNEMCVQRLTEFLSQNPGFRLRIRHINL +RPIWVKRHLDGIVPKKIHHTMKIALALISYR +EESKELKRLSDESVECQIGSQLDTPQGKANVLLQAYISQTR +DVRLSNGAGYLYALAAEIQTIPGL +EVKHGIHCNMTLLFSFTQAVACAEANVTLISPFVGR +TDSNAQSISNQLATQAEGIPSMEVISEEDYLRRDQSVLR +NKLVVQVNYVGLNPVDMKIRNGYTKPIYGEAGIGR +ASTQQVVDDVLSRL +KNKEKPQEVRKANIIAARSVADAIRTSLGPKGMDKMIK +SKTTSNPSSILHDLPRKVRPSLSSLSDLVSRGIPDV +HILNDVVTELISEQVDSPRTQKIVALWLSTNF +KDAESAISIDPSYFRGYSRLGFAKYAQGKPEEALEAYKK +LSAPAGDFAINK +DFIFKHPKSSFEFLCTLSFEQFVRVYSFISF +SFDFLMNMPNCDYLTLNKVVVNLNDAGLALQLFK +FEAPECLFQPGLVDVEQPGVGELLFNTVQSADVDIRSSL +FDLLGKNYTSQEFDELCFEFGMEMDEDTTEEALK +LKDKDGNEFMLKPPHGDGLPQR +FKYLPNAFINFTNLYRGHPDSFKDLEFVVWR +NTQPVASFNPSLPTFQQQQQQPQQPQQPRNVNVPTSF +LNQISNDTQVIRFGTMLGTKSY +NDTQPAIRTIGFESFAILIKIFGMNTFVKTLEHLDNLKR +FVYELFKWWKKHYNREKDKTMDWHIICR +KSKKNSLTSSLDNK +ADKDAQYDKVIEIDLSAIEPHVNGPFTPDLSTPISQYAEK +RLSQPYDTLLRSPTKAFHITAMEAYTPERGSANRAR +LKESGTAGRDLERLEEDFSEIQNFIIKNELQPVFRTV +LVSIWNKCYFALLVLGLISLKDTLQTLVGTPGYR +DREQAGENTLSQRIVGFAKSIF +SMNDSFTLTSRNRGRSNTISSIVSGYEIMKEHMDKEK +IEKAIEKELMDRLKSGAYGDKPLNVDEKVWK +YQFVECELNNTFPTTTSIQNVISQVSNNRPLVQHITNKV +EITLPVTFDSPSSKFYFKFIVDGQWLPSKDYK +YEPSDFSDLQLLIFNTGVTNPDIFDLEMKLK +RVSTFDDLNPKSSVLYRKKASKKYLMKHFPKARR +VVRAMQVHKPILLEGSPGVGKTSLITALANITGNKLTRINL +VDNFQSALNDCDEAIKLDPKNIKAYHRRALSCMALLEFK +VHTKSLEEINIGQELTGFVNNSSGNHLWLTISPVLKAR +GTLQRHSGISSTLVSANNDNNSPHTPVTRKGYIPSSK +LPPKKLDIVRLKDANASHPSHSAIQSLSFHPSKPLLLTGGYDK +TPLLAMLEEQVK +IKDSPLLSIVTTAALFKHMQDKDF +PLGYLFYNDEEELEEYKPLFTELAK +KCAHRNGKVRILQLATAKPINE +SDYVNDICFVK +QTQDYRNTRDSGAAHRANENQRYNGNRKSNTQALPQGPK +QIYHDARKSKKGDLWASAAKTQIKGLGDLNVKKFHK +DSDICTPKSKNTAIVSKLSNTKTISKNKVIEKSDKK +RIKYLILDFKNINADNIDYSAAEGFNRIKRFTE +VSDSGIVTLAYK +KVESVEKKSDEPSRESTPVRSQMSVELDDDADLDDEL +ILLTIFHYYSKFPESIETTVENIHYDTVVTEQLIRRY +IVQSYAVNLPEGK +LILMNNLTVIDDLWSMLIRNCGRDVDFPQVALR +KFLRVRIFTKIESEDDYILSGE +TQVNTGGESVVK +KIITHLAENVSSREVTPPILPR +DVNRYYQPITDWKIMKDRQK +IITLQKKVRKL +IFVMASSSMELNVIVIGIVNDPL +AAQHAIDSLLNCFPMEALTCFVLPTIL +KMDKLTNLMTHKDEVVAHATLLDIPAKVQWSR +FQRTVELPELEKQDIKDNKGEDKELEVEETEK +NKITIPIETANANTIPLSELAHAK +LQRLEFKKERAKLERELLE +KGVKMVKKWDLLPDTASMDQVYFILKFMGSASLDTKEKK +SISIVGSYVGNRADTREALDFFARGLVKSPIKVVGLSSLPE +DSLDVMTLAIGDGSNDVAMIQSADVGIGIAGEEGRQAVMCSDY +ETPSSIVALSAHFHYVYAAYENKVGIYKRGIEEHLLELE +YGISDAEKLDIGLLTSLPLAKQILNDIGDMKNR +FGKSVRFQQWVGMFIVFGGITWEALNKKKANIPK +RSQSRLGSEEDEEGDGHDGDEGETKIQDLYESLVPK +SSQNSSFLSLKKHNNELLGIFVPCNLPKTTRK +KFREEETRIFKEVIQNYGDDGYVFSTGGGIVESAESR +NGTSIDDYEGDESDGDRIYDEIDEKEYRARKRQEL +PAVDKSESWSDLLRPVTSFQTVEEF +IGVPVKGSCLDGVDSLHSIVQMPR +IMQENNLELDYSVGQLIIESIKKIQFFNDIFLTK +PLDYPIRNNAKAWNFVKSFIV +NQNFISFVLAKGETVTFPYIQGSFINFTGVTVCL +SRRLLWFDKFLLCITDNGEVEIYNTEEKKLWNK +EIKKCTKIAPSFLLGCSSAAMKYYGKLEPTGTIYTYL +GYLVAMTGDGVNDAPSLKKADTGIAVEGATDAAR +NAIDFAIPLFNEPQTALLFAKCLKAKIAEKIKILESHDVIVPPE +LGLAPEGSKEVTAALENAAVGLVAGGK +VAPDHPFIQQELEVIEASVEEAR +VNKVAPDHPFIQQELEVIEASVEEAR +AYPDLQIAYLDEEPPLTEGEEPR +EAYNYNDEQYQAISLVNYNVEK +TLANTAVVIRDGQLVEIPANEVVPGDILQLEDGTVIPTDGR +SVEMHHEQLEQGVPGDNVGFNVK +YKDPQSPKIEVLEQELVRAEAESLVAEAQLSNITR +SNKVTIEDPSIVAEMDTIMANVETER +PVPEEYLQTDPSYGLTSDEVLK +TLEEINELYHDEIDPATLNFR +QLENAGFVQVIANEEENLLVSR +EYIFSENSGVLGDVAAGKEQTFGTLFAR +ALLELLDDSPVTPGETRPAYDGYEASK +VTIEDPSIVAEMDTIMANVETER +ILNNVDGWVKPGTLTALMGASGAGK +TVEEDHPIPEDVHENYENKVAELASR +KGGQTVYFGDIGKNSATILNYFER +VIKRPVSSEYVLEEPTPLSLLEYTPQVFPTKESR +VIIIDTDPNSYKLQPENAIPMEPWNGEADDKLVR +APTFFVSQDDNNFETEFFPR +VKLLIQNQDEMLK +NLSASGASADVAYQSTVVNIPYKILK +EFNAYHTLTTEEAAEFIGTSLTEGLTQDESLRR +ILLDGEKLTAVYSEEVLDFIER +ESSYTEVTKLLKNEGIDLDHKRFLILQGEVENIAQMKPK +EEGNSTSSKDIDIDISLTLKDLYMGKKLKFDLK +LTFRENKLYPIVNLDEDQPVTNDDEVPSMLFY +KIVAAEGVGSLFK +LISHAGSLTNLSK +ALPDAVTIIEPKEEEPILAPSVK +KGLDAIDKAFLK +TNKDDKLNPFEK +NASIPKGSTPIPKNRNVSSIGKGEFLGSSSSNNSSFR +KPASKAPAEKKPAAK +AAGEARPVPEEYLQTDPSYGLTSDEVLK +RSLSIPQNSSIFWPSPLTPTTPSLMSNRKLLQNLSVR +NNIFPEEYTMETPSGLVPVATLQSMGR +GNGITDPSMNIRLATSIELANKNNVSKKVIENAIRK +YNHVQTSTQK +KKGLDAIDKAFLK +IGFFSSLFIIPLLGISFVFAIGVVSFGFCSNMSFK +AIFTDNSLLPSLIKPVQAAQDVK +KFIVTEGIFHNSGDLAPLPELTK +KVTAVVESPEGER +NFLGSTTLAAGPVKKDTDYDDFEMR +KVDEAKPNWESTWAVQHAKDLKEDIILNAKMK +VALLFHDWIIANNLSVGKESISGTPTPTSIPHEEQR +YLAEVGKIEEAKR +LVIVTALMFEVLYFLWTYSYIFRERTLGKQVSQFAK +SGALSAMLVCPFDVAKTRLQAQGLQNMTHQSQHYK +KLLLSGFEDYSWMNSKLNYPQENLQEFSDNFF +PGLRKTPAQLRLEFQSRQWDRVVAFQTRNPMHR +VKMLTGDAVGIAK +AMFGFKKEEGYAK +NNVILNDLLKDFDFDKPMTLNDSDEELLTEQR +LMDKNEDGYITLDEFREGSKVDPSIIGALNLY +APVASPRPAATPNLSK +AAEVGRPQSQQTINLTTLVVGER +NAPLADYLSVHFR +KKKGLDAIDKAFLK +IATEASKLAAYNKK +ILGNAEMQERAKIILSRQLNEVVDTVEENVSTEK +SITPRQKIEYSHVDNDDRTNEMLSRDKDSLQPQPSV +DAIEGVTHALRTIEYRDRNAQYDWMLQALRLRK +LAGITTVKGGTGK +VLAMPLLEDDLRAHIIKQVRKVLTDSTQIQPSRRLL +DFKSYKKMLKALFTPLIPVSFLKEVIDTELCER +GSSSLYTLVINDAGK +FNLVPLNFNNNDFLNKTTLFKVFSNYDGKAYVLK +VIDPSNNWVVDEIVNLDEVRK +DKFSDWMCRDLKTGEIFRADHLVEEVLEAR +VMRSSIGSGNLASESGSSTYNTKFHQSIQEQLEEE +SKGLRIKDHDAIIWMGDFNYRILMSNEDVRRK +SFLQSFRLPGEGQKIDRFMLKFAERFVDQNPGV +MDRYGTYYLLKPKQELTVQLFKPGLNARNNIAENK +RRLERASKNANLDKQVKPDIK +QNAIPLDSQWVLSCAISPSSTLVASAGLNNNCTIYR +ETLRIVRDGAESKLTLSKFPSNLDEPSNFIKQEL +NGVWQVIGFKEFLPWLTGKTDDNTVKLEDCIER +NSKLLNTKSIQIDEETENSESIASSNTYKEERSNNLL +SQYSRPSNPPPSSAHQNKTQER +VLEFHPFDPVSKK +DGIHRKSTRFLEELLLKQENMYHNNNYER +ILLSATVPNTYEFANWIGRTKQKNIYVISTPKR +LARYRQQLLADEAGSGGGGGSGFEVAKSGDARVVLIGY +LFADELKYQNHNRVVELNSVNEITKQQIFK +SGIPAYYGYGGTTK +IQQEQMGGQTFTLKDYVEGNLPSPEEQMKIQLEK +INEMTQKVEGSRSAKTQNEAIKAVENYIKDLLLR +YKQDPKKECEVKLVEMEAHDVDYCLKMLKF +MLFSVLEMADKMLASLGQSLLTVMLSRKNSER +FDKEWVCTSIRRSNGSTYGYPK +MSELHALLTFPERPISQSYYVPKLQHFLKSGIPATYTLEQV +LLNQLDGFSSDDRVKVLAATNRVDVLDPALLRSGR +NTTFTQPFFTAR +KSVISFTLPVITRYYNAMTVVLERSRIYYTNTSR +KGYFISQEEYDK +LALIDYDGLNAQKRRLDYDEKDLYTFIVKKV +RILNNVDGWVKPGTLTALMGASGAGK +EVGEGIRKAISEGLVSRKDIFVVSKLWNNFHHPDHVKL +GYENFGNTCYCNSVLQCLYNLSSLRENILQFPK +HRDLKIENIMISSSGEIKIIDFGLSNIFDYR +STTLRFREGHLDGQKGQGTYSNTSLNITFEEKSILIK +DQEAVKEILTSGLDGILEDEPSRPITPQDVEYLR +YLLKNGADPTIRNAKGLTAFESVDDESEFDDEEDQK +IVPPENAIVISSEAKEATVNEKEAK +IGFLLKTINNINKLPVAFNIITERAKEEIHNIIVKSTE +ADTGIAVEGATDAAR +GIWDRIPLRYEPNNRDFACNIIDDLPKLIRF +SIAVSNKVAVDDPSVLAEVEAVLAGVEAEK +MSRKRSTKPKPAAKIALKKENDQFLEALKLYEGKQYK +DWKTALNIPKKDTRPQTDDVLNTKGNTFEDF +NYLTSPIIATPAIILDGKQGIGKTR +SFSSGGSSGGEGSLIGAHGSLLGLGTDIGGSIRIPSSYQGLFGLK +SLSSALPFKEEEDVRRKEDVNYERRSSESIGDL +EMFIKLVEKLPIAGEMLDTISPQFLSDCFSLGAIGARTTE +PPVVKKPHYLSVAANKLNTSQEHSIKVSPSNSKSEEELPCK +THRYLPPGYLEGEPVRERLNLSLAVGEDADINPEE +DGQLETFKEFGGIVLANACGPCIGQWDRRDIKKGDK +DQNMLSCSKFVNADVAINGVCSISSSGRLNIGRVSNFPTL +TSAGYALLKASDKKIYKSSSLIQDLDSSDKVLKEFK +NIASIPAHLISK +DLNGAPLSYTENIKFTAKFWANAWIDYESVMKTL +KRIDEHQTENDLFIKGTLYGERTNCGLEMDLIIL +IKWCKSQMKLNSGITNNNVLELLLSLPTGPESK +GYIEDEDDALLILQATLDGKLK +TQEIKVNNLAKSSLHQPGSLVLR +IGAGMGEQMLSR +NLHTHPVAAPVSK +ARKETYSSYIYK +QLLRPGVTLGVGSSFDALKLSEPVHK +GINKGVNAVAIR +GAGGIGALRKVDKSQLDKPSVLLQE +IDAAYKLSKSKDEVKQWIDENLGDSRNTRLAR +ITHLKRLNDKIQIKIGSAIEYQKKPGKLHSVK +LPDSLFSHAMVNDFTDLAIKYKAHAMVNEEYK +ASPFGSNSINLLVLDDTMASYMNQQTIEEFDSYSR +QLSKYNFQKAGRPDCVEFSNIHFQKDNINSLSLV +YGSVRDVISGEVSLINLPPIDSNK +KVAGFLFNDEDMMIRVDCSEL +SASSSDTTPTPSKKGKGITGSSKKVPGAIHLGRRVDYLLSFL +LNDFLDIVETLLVTEISKSSHKFFHALSEVDNIQKR +NMPSSNAEAFNAKVLEELREKVKGLYLPSCLGMK +KAGVTIEDVSAK +YLVEAGQIDEAR +GLDSATALEFIR +PKPVIDAMMFWRKTKSEAANSASEEMEKLLKE +EKHSVTEYIFEAHEIIKREEKAMTIYWDDHTK +DNEDENDNDNANENENELGSSRDKRAPPAVQTSK +IASFATSRYRSAPIVVDDNTRYSQLNTEQINF +ILIAAEKLKKVLSANTTAPFSVESVMDDIDVSSQLSR +VSSQPQMNSPLSSHSQTFGENNGTNDKLLQERELQLR +TSTTASASVTDTGASQHLSNVKPGQNTEVKPLVKHVLSK +NIQPDSPYFVCLDPPCKKESAYNKVIGDKNRTVYHEINK +MSHLITLATCNLNQWALDFEGNRDRILQSIK +RGSGLRYFGNKLWRPTPRSGQSGQSRPKTGPHGSQRVVFLEL +RKKNSNVNDPEKLLKSRIHELSLSYKDFECSPV +MSIASYAQELKLALHQYPNFPSEGILFEDFLPIFRNPGL +ANLREFLACENIQDDLDDNIIKYILSPGKVLSVV +EISIRSRTPPSKLYSIQSCIGRGNFGDVYKAVDRV +ISQASDKIVDKFDKILMLSDSY +TGIAIGLNKGKKVTSMTPAPKISYKKGAASNRTKFVRSL +IFFPFMLKSNLLSVPEAYKPTSIISWKFNTILLTL +IRTVRHFSNIKPVLSKEVSRRVIVAPASHFKTSSPNVK +LPPQSHDLNVLNTLPIFVFAYTCHHNMFSIINEQR +LKGRLHPLEADCFMKQLLHGVKFMHDHGIAHCDLK +DSKKVKTEKAESECDLDAEIKDEIVADVNDRE +KLMSEIIKNNK +KSELNATEIELKKEKLNLLEAMKDVASARGDDKIDEEKVK +FGIAFISGTPSSSSEGLTIQKICERIGPIRSTVHGEGTFDV +TYEVFQGITDYYITHPHLDHISGLVVNSPSIYEQE +LIFERIGLSSSTKNLTIASLSAYVVSVYVKHIK +FVRLTFLFLGSCLCVGIVCSPNDPDLTAAINEAR +NSLASIITSLQNHSIERLSLPIDVKSDHLFQRLK +KKTLDDLTAQQKNLQDTVTTFETIISELYDVL +ITHNFHMGEK +SFWEALKNDTDLDLASLNVAVFGLGDSEYWPRK +SKPQDRRNSTGEKRFKCAKCSLEFSRSSDLRRHEK +KHFSKVMSRTRYVLMNFFKDAF +AMLYKDPLSFLLFNLPEDDLPPFFHKKKGDTK +DEKVIFRDGKLLTLDEVFRSL +CYYYEGKLIAITVSDILPSGISSVYFIWDPDYSK +IDSDLEWICQMHINQPDYMFSSQLRQDGDIEAQLE +SSNDFGKEGTDYFTYTGSGGNEVHISGTSSEAGIK +HLNEINTTSCKQLKTMCDLDKEHGRYKSVDPLRKK +SVEDFMAAMQR +VATASGSKLLHQLKYIPIHHFRRTCEYIESQR +SPFHGRHKTTDFSNLEPEPSKYIGSLPYASPELL +VRRIRRFLAGQNEGIVAEREYKGVVWTESHQE +TGPESELLPEKRTKIKQEEVVPQPVDIDWVKSLPNK +YNLSPSPEDEDFEGPTEEEMQTLR +HESRHKHAMRRPRGEGGRFLTAAEIKAMKSKK +SKGRRNNTIIVAEGALDDQLNPVTANDVKDALIELGL +NLYALAIDGKAPK +LQNRSRLQLIEK +KINNLVSVTESIVKEGLKLSKNDAAVIAKTVDSICSYEE +HEDDISIISTSRIKSSLLNER +VSFAHFVLPMPESEETVDEDLLAMCYISILQRAL +LANEEKVPFVALNKAFQQEGGDAWQQLLTDGLHF +KGPSMRPKRALKK +EEKSGNDDGLIKPV +NSFVNDIFER +EESKLAPISTPEVPKKKIKTGPKHNANQAVVQEANR +KSLKENWPQKVSAGLIGSCTNSSYQDMSRVVDLVK +SGIKILVNNNNKNFQGVINVIEPETGKLIGCFEAK +KTLSELVTKSNTYITTAGAALKIEPLIAICSYITK +HYGDQTFSSSTVK +NVVKSTPKMVAPAPYQFKKRTCVLLNDLDKTLFL +FELLAGRDHFFF +FDINREGSTPDAASADFIFLIGSKR +CILAKDPLMDSLQYLNVKKLL +GGIDNWYDTAKDTSIKHNVPMIR +INGGFYKKDTIVKLPNSSER +QIALIERGKCPFGDKSNLAGKFGFTAVVIY +KFLFPSDELV +KPASKAPAEK +RLLLLLNKKRRKQLVIILKRITQV +MTRNDASLSSEEQNLQIACELLGIDPF +AKCSQRCVPLQLANNLAFGDRHKRSANFKK +TPLPPAPAPKK +KILEKYKTKADKANCALALEAISEHARSVYE +YAMALSYFAK +DNMDSKPEQLEPVIKQNPENSKNNQF +YMLFSVLEMADKMLASLGQSLLTVMLSR +RCGGGSMTCGARLWRAIVEPPVTCAAALLRL +QQTKLFDNIIDLRIKLQKAVIAANK +SGVYYYIHTKQDK +AKDALTKYK +EKELKQLWFSRVLHNDPSRLDKFKVR +SISQNAHESLLDPADTSLEFALR +SGINRSEIKKYIEAWSKFDTDGTGELELSY +FFSSNYEYDVASSSSEEDLLSSSEE +ATYDLPTRAPGGRDSIITGDAHNISKR +RARIALLATAIGGPDYTSQIDPPPYK +AAGSASWGELFTGKPAMFK +ENYIFSFDYDEENNVNINVNLSGNK +STLLRNSNAYSDSLLKTSQNGAEIAHSLENIAK +RGITIKSTAISLYSEMSDEDVKEIK +FKPLGFERFKVVELIAELLHCSNMGL +TKVERADDLGLPPRIVTV +GEGFMVVTATGDNTFVGR +SDHYLCYMFLLYFVLNCNQFEELL +LLSNLLKEKQLPCIKGDNSSKITSATK +DGYENLTGITSDPDEIEKIVQKGL +AKKDKREGEIKKSAIPSPPPDFGVSRSKL +HWTSFILPQFLKLIPSREKFTIV +VIEKRRKKILNEIELDNLKLKELR +PRFHSRGLGRGRGNYRGNRGNRGRGGQRGNY +LLQRFGIDLMKKQKKVFQTMASGAK +SLNALSHNEELTNFLKSLSDQPRDLPHLLLY +EVWVWGVCDLVAMAIARGCGLSPNGCPLL +SVDLPGHKDEVYTVDWSVDGKR +GSRLVINNASCNDNFTLNIQFR +QIHSRKMTTDDDINWQELAR +RMGRAPIRGTAWLTPPSYRQSQQQYTGTV +DNIRLYNVEIAVDASNSTTKSSKVPF +VECLSEDEATEAIEAGADVIMLDNFKGDGLK +IPYLPLDPK +TFDNIVQTKITSPVTIGNLFSLLRHSL +TSCLYFQNAAGCFKHVLDHQKNLETIPV +LKNISPHSK +SHANYLAQLQVESFNSNNKVTEMLGKV +NNKELKNLTKLGCYMAVTSFQF +KKYDLTLLKTHDDELKDYIRK +VLTTSLLIRDLNDDLSKLQKDKVSLEDRR +RGEGFMVVTATGDNTFVGR +AKTVLPDLLTKMSLSCSRVHSSTFSWKCFSK +EIFPQLKFERPGEKEEIDPYVCFRR +HLSFAENDLNFEAIDSLIENLR +DNVLFTLLEKIITSATMDYPEINLEER +SSRRSSISSTVSSSSSSKWRFWKRNK +AWKEYIDFKPRLNNDLSYKQYQRCY +PLSETIILDNSPASYIFHPQHAV +DLQRPVAAVVRIPSESEFDFNL +AKHLQKAIDLFKDPESKITLELWQRNNKE +ENIELILQLSKKINDNANTLAISSEDPQK +LSLNSLVTILQNDLK +KLTPIESRNSRRSSKRSSRIQFNNNGIYK +DTTTYPDDTESSASSSSRPANANSNQSR +VFGINLNDLVARHETKDPVVNNTHIIVYR +ASLSKVNKVAPDHPFIQQELEVIEASVEEAR +LLYHQVPSEIEGKR +DAQKDKSSKLAAKSNEQLWEIMQL +LFTDDTVLDNVTRPYLIALAK +SQVKSNYTRGNQKSSFTEIKDSASKPK +SSLLTKVDADLTEVLTPIVTDAVLSVY +QFSSSTMIEVTNNNNKVNNSSSNPDISTNSVV +IHYRLSTNSYSINILSYTVLDYDISY +EEDDLAEIDTSNIITSGRRTRGKVIDYK +AEAESLVAEAQLSNITR +SSNSDTSIFFTKVNLEDPSKTIPKAFQF +ASTLAFIESSKDGSVSR +IPAVEYFGGESPVDVQSQVDSSSVSEDSAVFK +DDGTRVPFGNKYITFETPIMKQR +DIATSKKPTRVKLVLPSFKIIKFNNGHE +LPNLFNEISTIDNEITNAKIQLY +WEIDNFHIRLYTIQLLEAVMATRPLK +ALREEERHYVGVAPKVK +NVNKSLLVHSLLNNTSQTSLEGPNNHIVTPK +IMLGEQPFLK +LLKTIIVDKQEKVLIFSLFTQV +KLVKNGTIVKKAVTVHSK +YTNIIRKYDRDESFTIKRVFKEDK +HGELKETTPEFWR +KISPELISAASTPARTLRIL +INNNNLPDVNIDKELSR +SVTSNSVNSVKFANTTVFSAQTTSSVSASL +SGLFSVDGEKFPLEPLQVEIMPMLCKTLLR +YPHFQVHYVVHYPSDRWTGDVGY +SQMQSVTGLDATPTIIWSPGKDNTAKKNTSNKK +LRKAYPEDIQNGDLAASVDYSSIHSAQCFVLE +ALLKEWIRKVKEEGLHDPSKITEEASQHK +VVENEYVFTEQNLKKYQQRKKE +KSKGGSCHRRANDEAAHVNGLGIADL +KELVNESSIQAYFAALLFISGHYAYRSY +VPLIAIPTELAPKDFVENADKYSEKLFVASIK +PVPEEYLQTDPSYGLTSDEVLKR +VLEFHPFDPVSKKVTAVVESPEGER +RQWFEAHYGQTLGK +LTGNNDEDSNFQQNQNPK +GLDAIDKAFLK +SRKPANTSFRQQRLKAWQPILSPQSVL +LNRSQKTAVEHVLNNSITILQGPPGTGK +QISLNGWSSGTGGAGIIGGASYMFL +SLDHSIAQAAINKEFYVHVPMEVR +KTFPKRKQVFVPKAACKTIAPDKFK +ISIKKRPTDERTAQILENARKGINNR +EKEEALLENDNEQGIDNRGVKGDK +IEKANDILATPSDSLPNYKLTR +NTVRASPFLKDEYKDFKFADKPLSPPQKK +AGVDVDEKGQGKNEETSGEGGEDKNEPSSK +TKPVGIIVPNHAPLTK +YTGNLSPVSDIVRDSYGSQKTVDTEKLFDL +KKNQNDPKWLQNFYDQGDGKHLCDK +ANNSRLSKLPGQVHIFNAIDGGALEDEEL +ILVSHVSRFGLHAKHHVNDYIEPGTTVEVAV +EHQALNMIFDEQPETKFIEIFEIY +QRDKNEIKLLLLGAGESGKSTVLKQL +TVIAFATLATFAIIFAPLYFLGGGLK +PEYVLNRNCPDNSIVLLPIVDLLNHDYR +GKKVIAYNIQGFLASQTVYYLLNFNLADR +ISLAWNQSLAHVFASAGSSNFASIWDLK +PIGISLFMAHMALTGYTGTGVNPARSLGAAVAAR +IISSDPNITVHHMSNLKRKGGGTSVIFMVK +EEGEKTIRYELLELDPMEVDTSK +LMNGKPMKEK +PRTFPLIKFHYEFIPKKVYR +AYLKSHQVHRHKLKEMEKEEPLL +KFSIGSFRGVTMNLSKNLVNKLKKSPLVADIV +LTKAASGLANINAQVTVEDPNIDLYNFE +FRSANFEDLLWCEDAIVLERNSRDFEDR +DVEEGSLNALPPSGITESDDKAEK +VGKEGEEVGEGDSIAK +ARKSVLLLQTEAIKYLDDRFLPLFKK +VLDGGKKELTYDLLQEMPLLNQTIKETLR +KDEDEIEGLAASDDEQSGTHKIKRLNPK +QYENLLDNGIYKYNRRTTKTYHDL +TTSVFPAKFFQVRMNWFYRPR +LFQASTMDAASQDPIGGLNQASGTSLSE +RDSRKRNNRRFDESNINNNNETK +NYYVCDDLWVPICSISHKMYIL +YLVNVPKTRKTYCKGKTCRKHTQHK +KGKCGANKENKVIKNTFKATESSIRV +DADALMHDDQPFYKK +IPSSDFKASVFGTLHDLTLSIRCAQAAKLVNV +FQDKERFGSAQRHAGISLKGFISGILFSF +EGKNFQTKMATYEKLLSCDYGFVHGFRNL +DVEKSISADQSNLSKINYQIPTLPDLTGNLIR +STPLDKKDTRRSSSSSQISPEHR +ENFPAGLVSEYLHKDAK +RADDKSGNLAPSDIQTNEEAR +VIDPSNNWVVDEIVNLDEVR +VFSSSTVKTGEAFMVVTATGDNTFVGR +QKKERNPPSFEAKVCAEEPILRK +YVNTQGIDNKKYIIGESGQKIAASFRSGR +TGPKHNANQAVVQEANR +NFYLTMDFNDEFMRRFDVDIILDLLVK +AKDYKDPLYGSKIRIVGDQSLLSPEMR +WSWYLTNLRLGDFEELIGNQLKYTLLK +LVAAPSPKIYDRVKQELTKLYSMKDLGK +YNKYIDEQRRLLSRLKKGIENGALKYDK +LVNHELFPIPYQHSLGVLYLLVPLPHSR +YIEAGNNGMFGCGAGSTINPPDDNRFFHLRK +TLKEQITTYENLAK +MFLQLEAFLKINGFAIKNEDLKK +WFSWAITFALELSVVGQVIQFWTYK +LRLFEEYRVSRSGIEFQEDIEKAKAEHE +MMLNTPPWNTLNEFMKHK +DLKHKYITLTDPMAPFGLISITNTFK +DIPSAAFNFFEPIKEAK +SLGLDVPRPMQVDFSNTLQK +RNVVLYDVPKTSIDLIHRVGRTAR +KNFDSLLKSHGENVTLPFL +GMFFIAHCSTGYLQGINEVLKNPLYASKL +GLGKGIVGLPTKTAIGFLDLTSNLSQGVKSTTTVL +TKRLSPYNAVALDKPIQDISYDPAVQTL +FANLYYYGDGSEPKLSLSTSLPL +SWYNLARCHIKKEEYEKALFAINSMPR +RDVTVNLKLNPNIKETLVPNLETCLCCRFY +IVAAEGVGSLFK +SLKQYPKAK +QKYGTGMYKVNERTFSEYVKDPVR +DKTNGEVERRVVSQL +YADAVVGVAGEGLNVEQRK +LYAITAYYVIIFGGRFLLSKSK +YVEAQLDAFE +QNLQNDSIGCAENSIGPHFAALSLILNK +DYKFCGDKVLVKDIITVPRDSALRFLL +ISALEEAAKVPHQQMEQGCSSLK +LNQLNIHTIFGLSGEFSMPLLDK +YIYQSNGLK +NMLKDPSSK +GAVVGTSIGCWMNEIGNNSHK +IKETLPREKKPPHSQGKISPVSESL +EAIKEAHIAK +KKSNLEVNENGDGDEDGENESAKNAVKK +TAHFENGSTSSQKKMKQSSLLSFFSK +LKDMVEHLTVSTPPGRLLKHIIR +IKLDMTEKYNDSWNMLCYK +AHMCVVSKEPGSSHGAIGVLTLEDVIE +GRKGAKIKKEKKETFEAK +CRTFKPKTKNEESLIVSFLR +SPSCNVTFNELNAINENIRDDLSALLK +QMRGVPGVIAERFAKAFEVRHCAL +YNHVQTSTQKEHPGYR +EQNSDCDQQGEMRHVTDGTLTKSPESK +LGDLSRMAISLYPSGFIDWRLSAE +SKQSAEPQKNSSANAR +KNGTSSKKTGTQRKRISTQRFSLFTY +TEAAKRIMQYIAAASNSHSESIGK +TAVVESPEGER +RYTSKKINKQGTISTSRPVKRINYSLADL +DHDSVVEYSEDEIVEADRITLGYK +SNISVLLNLSNNSDAKQLDLKRR +FSVSHERVAFMNPLQTMLSFLIEKV +PLSMSSSQSTTSSRRENFVNAPPEYTDRAR +ENEKVILKK +VGFVVLDEADTLLDRSWLEETHSAIKR +IHSLVDKGKDKNKNSKYHAFKIDNLLIIE +MLTGDAVGIAK +SYHQREMLNGVNKFYCNK +TGKNLSTFDYNSLIKPYLNDQHL +YNNLVKCMFITILIGIVLTFVNLVFNVLR +VIENHEGKIIQNSYK +VAVDDPSVLAEVEAVLAGVEAEK +LGLGGGGDMPGSELADFVENADGFAEVFPQHKYR +LADVSAEAAYAHLTTPVFGK +GLVIISGIVHDVSGYISEHPGGETLIK +AAGEARPVPEEYLQTDPSYGLTSDEVLKR +ILEMEKYADAVVGVAGEGLNVEQR +GANYDADALMHDDQPFYK +IVLEDGTKLIELPLEER +VIKRPVSSEYVLEEPTPLSLLEYTPQVFPTK +SAVLNTTFTQPFFTAR +IGASALGGGLSAWNQPIEVIR +TGYVQQQDIHIAELTVR +NFVSQIVSEFKDEVIQPIGAR +LNRLPAASLGDMVMATVK +NKLSLHEPYTVEGVSPDDLMLTACLAASR +VKLLIQNQDEMLKQGTLDR +SISSNTHGFDLGADTK +VTMGVITGDILVNGIPR +LAHLEEINSEVNDLSK +GANYDADALMHDDQPFYKK +LLIQNQDEMLKQGTLDRK +VNSQSGKGGAAWVILR +TLLEAIDAIEQPSRPTDKPLRLPLQDVYK +NKIFPEEYTLETPTGLVPVATLHSIGR +TVEEDHPIPEDVHENYENK +GRDLGFGTILNFTTK +GLNLFESHINDFNNQFR +ITGKTNKDDKLNPFEK +NLLQEVDEFKENLTK +NSRAPTASQLQNPPPPPSTTK +SQPASLQDSSILTWSDFFK +YADAVVGVAGEGLNVEQR +GYLVAMTGDGVNDAPSLKK +YEEQTTNHPVAIVGAR +IFLEGPYGVTVPHIAK +ELSPLWEMVQEGIDLNSIK +VLPASLAANIPVKWQK +SSAAETEAEKQVAEKK +IGASALGGGLSAWNQPIEVIRVEMQSK +DFTITEKQDEVSGQTAEPR +LALESIDDEGFGWQQVK +QFPGIAYTIPDLDAQVR +LGYHFGPSDAEAVMAPK +AQHAVILDQEKYDR +VSNLNDAVEEVVSLK +AAFNYQFDSIIEHSEK +FLTIAESEPFGPVDAAHVLELEPAVETLR +GIHIPQTPKEMNDYWVK +GANYDAEEMTHDDKPLYKR +GTVSDDISSLLQESLGSMPFR +YKVLEFHPFDPVSKK +TFGATILSYKPEEGIEQLMK +APVASPRPAATPNLSKDKK +KILRDNIQGITKPAIR +FSAYLRQPAEVSIEEK +LHYGHPDFINATFMTTR +VENADGFAEVFPQHK +VAFVVGKAENLVDLAEK +NDDELNKLLGNVTIAQGGVLPNIHQNLLPKK +VQDLINDLSKQETK +GHEFVFNAKLADVSAEAAYAHLTTPVFGK +SSQKLNINELKRRSSKDSGVGNNSSLNYK +VHYQTTGPEIAHQTK +APVASPRPAATPNLSKDK +LNRLPAASLGDMVMATVKK +FMSLRPFGNDNMLR +TTGTIDVMVTQPEMTIFTASR +SIEEAERAGNAGVKAE +GILSGIPVVFSAEKPDPK +YMNLQPFGTDVMLR +GANYDAEEMTHDDKPLYK +LLEKDNQEKEEAKTK +TEQEILATSDHPFIVTLYHSFQTK +NTVLTINSIPIIRAAKGGPAEIIAEK +KIPVGYSSNDDEDTR +FKPHELENAEFLLR +LLNDDEASREAIKEAHIAK +KIPVGYSSNDDEDTRVK +LFESLHDHAFTLGTR +APAEKKPAAKK +MADYSSLTVVQLKDLLTKRNLSVGGLK +SQYSRPSNPPPSSAHQNK +VARDSLENLVLENIESDEEKIISSCFQL +NSEEYRAVQSELDWMER +PSDYPYKPPAIRMITPNGRFK +AGLPPLSSTEITQEISKK +RPQHLPDSEKMDYVEK +NTIVLKQETLPIVPSLK +AAGSASWGELFTGKPAMFKR +LDEGDAANTGDETEDPFTKAAKEKVISLEE +ANATFSSEQGNPKEEK +YKDPQSPKIEVLEQELVR +SVTKPVAPTSTDAPAKPKETLMVK +SYGYENTGIYPGSITEWLAK +RHIYNRVVLENSIIRSAAVVALSKFALTK +VLDGGKKELTYDLLQEMPLLNQTIK +SSVISLLCCLVTGSIGFISSMLFVRK +TSEVITELNTQYENSKR +AQEINKK +EIPSATVK +RIFYKNE +TYTKAPK +KYHSGPK +VLMNLFK +YDIKSLE +TAAHTHIK +YDDPSTDK +VMPAIVVR +QAENLKK +QNSKFLK +SSSKFLNK +KEVIEKK +FLNLLSLK +KSLQVKK +TRLAADSK +ELLINLK +SKGAQKRK +LAELIAIK +KTSTSVDGK +LRLEKSK +FETESAQL +IALELLAK +HLQLAIR +YENVLVK +VAVIKESK +RDAGKIDK +ILDVLTK +HAVSEGTR +KMEALNIE +EKNWIK +SHILTASK +TYLNGLDF +KLGEKWK +GGADVKPKK +IIKLKPNK +VDLNEEPR +DFMAAMQR +LHPVSNSK +TLNKDMLK +SPNLGILK +QIADLKK +AGLTFPVGR +GLGKGGAKR +KLSVKLK +GAPLFVLK +LAADSKSSK +LERPPLLR +EKNADLK +KLSQLVK +KETARLE +AVEATKLVR +KLSVLQK +SATAVAHVK +IALIAGYGK +SHSLLLR +SDDLNLR +FLARVIK +KFLPTIK +EKESASTGEEHPSWIAKRLAEEKLQKAKFE +LRDDLER +STENLLR +VIENHEGK +GKGGKGLGK +LDVLGDEIFINAMRASGIIKVLV +SNPDIWGPDLGRGGLQNYDDIVLKLDAIGK +ADMVNQTSTFLDNYFSEHPNETLKDE +KQILDGLVGANRICFQNESFSR +GSSVFSGKIKKLFHPTSAAETLSSSDEKTKYY +VALTSIPYTK +DRPIISSLYEMAPDEADTLNAVKKSYL +HCPDTLALRDMIFSEIQDIEDLVPL +MNWLFLVSLVFFCGVSTHPALAMSSNRLLKL +NDLESYLNQAVEVSRDYPVVITKY +QKVPIPAYLIGIASGDLSSAPIGPR +CHSHRILHRDLKPQNLLINK +LHHGEYGTKLIGGKCSIDGKLGHPCPLSRR +ISLANLYVTIARDGKKSRNPKEQGK +WDEKGNEIKVGKQRFQGCNNLIK +SLIIGNFSYVYRSGGSRSGINRSEIKK +FGIRPVFVFDGGVPVLKRETIR +IAHPAYSK +SPLETVFLPLPSSQTTSTHAIAHFVLPACLFY +SEIEDDAIVRVVDNQDVKAKHSQTSLSQK +LFSETANKNELYLTAELAELQLFNFIRVANV +ASVYPVVEVERGRVGACTDEEMTISQK +ALLEDHRNKPLLSINTDPGVTGVDSSSLNK +LLFAHYLAAVDPPSPEAR +IEKERELNELLNESSKDK +GRYEDAKR +SPIAIAISRAGWAGGAHLVNAF +QGPVRPFIVTDPSAELASLR +KNVQRIILHTSKRRIKSKCADNTIYSK +LMNGKPMK +GVRVVQVPTSLLAMVDSSIGGKTAIDTPLGKNF +TLKPAEQVTEKVIQAEFLVCDALR +VKIDETCQIHSASEPEKTSISPTFGKNIK +MGPDEIEAQKKKDKKSGVVKQAKVIMEVK +KTDILKYGKTKNDDTNEEGFFTASEPE +DAIDKAFLK +AKLLKLSSSQFYELSTDVSDELQRR +KTVTSLDVVYALKR +ATIASGGVLPHINK +VRLEPLLSGGGQER +QLLRPGVTLGVGSSFDALK +LFLNELGIYPSPK +ILATHQLSLIER +KGDKNTIVSSYNR +KGEFIMITGPIGTGK +SKDVTDSATTKK +VLEFHPFDPVSK +QLGLGTNIYNAER +YLVEVGKIEEAKR +EIIREDDQFSR +STTHDVGEISNNVK +LVGDESEKAAGDASR +TATQEGVISFWR +ENADGFAEVFPQHK +NELITSLTPGVAK +RTGYVQQQDIHIAELTVR +NFLGSTTLAAGPVKK +KMLTGDAVGIAK +IVQIMQNPTHYK +TISLFTNDIASNIK +KSAPSTGGVKKPHR +YAWVLDKLKAER +KLIQSLPPTLK +KGISVFDSNGDEVGK +EELRGQQTEHETEIK +VRKETYSSYIYK +NRYVEEVIK +KVDTISYIKEELPKLNQK +ISYSGYSGDDIKK +VEIKNILKSSSDLK +DQLKNCNVGLMLADEGHR +SAKAGLTFPVGR +STAHGISAASGK +KQDVVGSGNLQETRSEKDQK +EGIRGINKGVNAVAIR +QDKKDKSRAPITAKLVANL +FQKSTELLIR +KQAIVQK +NTMKNANTTATAGENTPFL +IKLCGFLGVLPKERIENDEK +AFSPLAEKKETK +GLHLEMKPFNVR +IPFFVTPGSEQIR +NIKPLQPGELILVR +RTGQVGVPTISQV +AVLDQITGDLKLY +LLSDFFDGKQLEK +QPQQMAAAGSAPANPIPVEEK +LINDSLIHKFSNIAEVILV +SPNYKELMKEVDQR +TLNKDMLKK +EDFMAAMQR +DFCITDVALQIKSIFGKV +AIKKVTLNK +TGSQSAEQKTSNNPHSRLFKV +VITPIYHFIR +GDKNKVAELIHSNSHYAF +ILNEFPLAYVNSINSIGNGLF +ELLLDANVELDLFSNRGRK +LRKETGNPK +TLKSDGVAGLYR +ARTALSKSTVKIK +YICCHALFPEILSTRQKR +QSSLQSLSNSLIR +LDIAKSQGSPSSPSLIQIDMQK +KDEGPSFELAKSISE +ITDEEASYKLGK +KRSSEKVYGCTVFQNHYR +KPVFPGIDDAEENLNPLKV +GIVTDNPAYIKVLLSFGVIGK +SLLDIIFGTNVSEWAFSE +LLRCDDRVDKKFVSQIQK +EDELAKIDGQSAYHIDSAEEK +TLANTAVVIR +SMELTANERR +QVLSLYKEFIK +NWKTGHCQRNWLLNK +DITENLGALQINNQGSEEDE +AFLDTTKSSFKRQIEIAKK +SYAFLRSLFVAVLQNQGK +AATKEVESNIITK +LMNGKPMKEKK +KYPELLTKELRIFYVK +NLNLLDINGIDPE +ILISIIGIIFVTNTSFGSYR +NLYSARSLKKSTDPLFVEAK +LGMENSLTEKIPK +MLQETEKNVAIDK +EEFDLTGPINNSQGSVDSGRR +KSMSSALKNGIMERTQPEKV +SIGQESINSIFKTLPK +KDVAERRSQPAKK +LINVEETNVKPNCLIAR +PGAGSSPFVIGIQNAGIKVL +NLGCIDAPFCYSPMLTLLDF +YAIERNERR +NDMEDLSPLACAYARARGADR +ASTPQEVVDKIEKYVVPEGR +EVGPVVQVGIFIK +IPETGEYSVKLLKGATLYIPK +TSYLLLLITMLEGAEYF +MIDLVCEPVGLVDFLTTGVSR +LLSNLLSTFNKK +NTNIPLPALQKLRREFEY +DALIRAEINR +QITYNSIPKNANLIDGSTNSSK +KEALNIK +NDQPAPSEILISDSQGLKFL +NQHNPVLLTLLQTYYYFK +SPNYKELMK +TAHFASLSDAFLKIPK +KSTGGKAPR +VKKVVEEINKIVKDAENSVTK +TKTPGPGGQAALR +QLSSFSNIPQL +VMPFSKQGYLKKDLLKIIK +ILLEIKILNEV +ISGLIYEEVRAVLK +KLNTNVIR +AALILADNDAKNANEKNKTY +EPRKFGEIDFDIISK +STTAFLKGGFDPK +AEINPFVFEIAKSDANVKNE +MPPKQQLSKAAKAAAALAGGKKSK +LDNQVGDGDCGYTLVAGVK +REAERVQAKNQLESYAFTLK +QAFFTGSFRNFLYSR +QITNNAPLTLAEK +KKNASGLLGK +PSNARKNALVGLFDEKVK +RNIQNLVR +SDDEEVAALLNLLK +DKYWAKTGANNKPTKSKKKK +MALGNVAKDHTENWEYELK +AGDKAKDIFLKAR +GSRWFLPKHTIPDGYSYFK +KQANQVK +GLGSSGAAVVAGVILGNEVAQLGF +MGPRKGSKLESVDE +NRPIVSTK +SYVPLIAEEVYK +DKITDKIAYLK +SLISDLKTFCAVPKAQKL +GKGGKGLGKGGAKR +RKKHGLSK +LAGNASWGELFSSK +DQYYIVYVPPDFR +KKTLKKK +LCAETLNGNIIGGKKGTFY +VKPTVNQVETHPHLPQMEL +DRGGRSVWLKILGITKSLLTY +ILTRFEAGIKNALDKSTVQR +CDFIKSSEDSDLGGNDASILCL +VRLVDFLFCKSDEEFIK +NILSSTIQQKFFLRQLK +NILWGQVPALMGYNSLVNTR +PKSGPRLDENGNPLPKEPRL +KIDDSRIEENTFEIALARL +VKKHWGGGILGNKAQAKMDK +SGERQGEWSFIGQHK +PPAPAPK +QGDENTEECAIKKVLKIL +GDIIIDGGNSHFPDSNRRYEE +EFHPFDPVSK +IGPIPTTLISLYIRNGNMAK +RNETIER +LYPLFEAVPFRR +ANIQLDFPELKPYK +PDASSQVK +DALTKYK +GLVTAKDILRFK +RTNEPLDKK +EDGDIVGDPMEKATLK +QDDDMYEDIIEETPKKTK +LVAHKLKKSLDSIPMSKTIK +LLKEYGADELFDYHDIDV +IPVIEKRPPAEDIK +PQDIIVQNGSYATRAY +VARICQLYPNACSAVILNR +KEQLQILSSSSSTIASNALSSLK +SSATSSASSSGDASNAQANV +FIDESIRVNDNQAIRMAKYL +FLYDLETTLLSRLPKMNV +LEVMVIKTVSTLCETCR +NEESDGTATGLKNKINV +IKSLRFKHIEDDVVIPVIE +QIKKVLK +SVVADISDSDGK +AAGSLPSGVVPQQRVKPTRK +TQGNQKESKGAPE +QPRKELIVNEILVMKDSR +FTDFKIQNIVGSCDVKF +LRPITSEQGSR +LKYKDIGDLGEIAMGARNV +FDETDTLSSVIHQVHSIDL +LNDMSNALLSLNACPMSQVK +IRIPDSDIPANIEDDPVKVRK +RKSRDTVGPWKLGKTLGK +LLVGVVETGLFIDNASKAY +DKTGETTLLSMSKNGSLAWFK +NILQKILQESSIAQFDRK +LNQKFPLILSSLGEPR +RGKLEEEYAPFASDAEKTK +INGVTLFGPVAPGHGSFVRPR +SKNKALTEQAVIDLTVATLVLK +SAPSTGGVKKPHR +NRAEDPLFVLENNIQVDSR +IQRLLIIVSISFAAFNAV +IVDADKACQDYEKKTGLR +LFEKWLPSLLDYAAQTLSV +QVLDMTYELIQFIWNTR +GHMVCTLNKTTDARRAAE +SGRYMSGSVTNRKGEIY +KIVVVNLGCGYDPLPFQLL +ETLSPEVVKALGGAPK +GPSGPYTNFAGHDASR +INPPTGADFHITSR +LTKDDPSQQATR +KGAAIVEAEK +QNLRCIWFWALFLDVSTSY +KTHWSHEIDLRKSLKSNIK +STNEIGSIPVVIAKSGKYL +GPSKFVNVTNGITPRRWLK +YTSITISLSEALTGFEKFLTK +TFIASCGHAFCGRCFARIDNAK +YELMVEKLLIDYF +YTDDQTRFVGHVASCPFQYR +LAADTEKLLMVNIVEEICRK +LDEINIIDLTPGSRKILHK +KGIHIPQTPK +ISRAEWAEKHSIVEK +PEPTEGAPTAPPLVGAVYLGPK +DIASRKRSLGINIYSVLSLR +AKGSHISRERIHHFR +IKPGDILVIR +KSKQEAGSNLNFDPSKLSR +GHHKHSSSLQSNPFDINDE +IDSNKLVGVGNGK +VNAITSQVVSKCVPDGTMKK +ELVQFKDKVVSRYEIL +KERKKK +KDQDFDLDGPDDFEF +YQANAEFAKEAMSNQTLL +QNNRATAGMLLK +ALNMLLEGGNDPSLPNTFK +IPALGFFTVLLLDKSTIK +NDLSGIIDISLRRINAWKKV +NIATEKANSSPSILRR +SLRASSHLNAKSVKRRGVF +QDNTASEGESEAER +EGSQKYK +VEIESKFQEIETNLKKLPK +VSNQALDCVVNTICSSRVQGIY +KKLDSGISSNLGEEE +VLVSEEQEDLIV +QKQTNILEK +RNEKEEEERR +GKKPIAGASDALKLLNR +EGIKKHK +REGQAVVQWMRFEAQRK +ATVIGADRYGNAWTLR +YFQLFLNTGCLSVLYQSKGR +RSVVNELVGR +NFRFVGLPKKPIEIASLV +ASLMGKSKTNGKAK +IIYIDDAKPTQNSLGLEL +LFEWTYTTPSFTTFVNFYK +KKEQEPAKKLVK +QFNGLIDVYKK +LNILHSSGSGIRRCY +NLALKSDKELIK +KFAPLLK +NRIPVICEKAEKSDIPEIDK +DAISFIKEIHKSIELISNL +SKESSTGRNPYQTPPLE +LMASRESVELQAK +EELGGINLKK +ILLESSLFEFK +KRIEDGVEFHPK +KKMDLFIQDMKIKDDNY +KLSALKKSNSDLEK +QIAMGIPMHMISDIR +SLYFIDKHSGEFQQFK +LRQEVNKVVAK +LGLRPSAKFTAHR +ISAVNDEAK +GQPFPFDQLKGKVVLIVNVASK +NIYFISFGGTEFNYAGSSELV +RFAFKIYDIDK +QKGEILVFPR +LNKFPKEV +LYQYLSGALNTQDTSDANNR +WECIRLSDGKAVGLDSQLLK +SSTPKIPRPKNAFILFR +VIDSGNDLVRVPLNRWF +YKDGKYDLNFK +LKDWKRAYKTCSRGLQL +NVTLEKLR +IEQIVLQLR +LVPIERVAQLKPFFK +LLNFRERLLRNAKLK +LGPGLMETIYDGIQRPLK +FLLAIATNKGLNKFVLPSYGR +KKSEKTQGGSKLSKRINIR +IKDAINEMEQLKVLELK +HMQQKSSNNGGNNGGNNMNR +LQLTKEKLAQCEKECLR +TQLIIPRSETWPKLLPR +AAADLPPSMIQMEPKSPILK +NIIHRDIKGANILIDIKGCVK +FLLEDGRIILK +YHPDHSDNIQIFSSEK +VTTATTSTSRDGSSSLAF +AAALVNK +KLEEPLK +FTRDYLTTSPVRFQVLK +KKKWENFLLKNK +KAKKSSSASAILPK +QKSRYTLAGILYGLSIHFK +LRLIDWGLAEFYHVNMEY +FMKDIKNHYDPNGIL +LRVIKQILSKVPEIPR +PATEPLNVNQSKDPVSNFFY +VTIAGQK +DLLSKLITADLTRR +GREGNQGER +SKERGEFVIRQSSRGDDHLV +LPKPELPNLKVSNEFLAQLNK +LYTPAYEHFGIVPLEAMKLGK +MKILTQDEIEAHR +KDSIPLRITNSFY +GGLAYSFRR +ESSKEKAELEKSK +VLKNLQCEVNITADVWRGE +SKVMLTRRILVRGLATAK +MRSELTRQSLEK +LLRKVSQIAGVLK +VSGTPIVRGLQKSTIR +KDLPDDLK +LLYTRR +HTYNTK +LRTNNTIR +KAQLDPSR +QELASK +SPPAAGVK +DVWLGNNR +STGGKAPR +KIAESK +RADINSNR +KVSKKLSK +EGLVADAPK +QSLLLSQK +QSLIISQK +LQEDKDAK +RIVDCIIR +KSMPLDVK +RALDAIMR +KMFGKK +QQIASK +KQLASK +KWALTK +QLTETK +KLTETK +ARFLSK +LQLLQK +IQILQK +FGKCR +KAEAEK +AKDALTK +QAIVQK +FLLLGALR +KAALIR +LHQKTK +FEPIIRK +YAGGAK +INFLSK +QNGLGK +MEAAR +DAITK +KLTMNL +KLAKR +KLAQR +KIAKR +LIVIAK +QLAQR +QIAQR +KIAQR +QLAKR +RLLPK +KVSKVK +KRNLKK +KVSQDK +KVSKDK +PSVLAK +LEVGV +KVASNGGNE +LLVALK +RDIDIDK +FLAAR +FIAAR +AGIAK +SSSTLYAVR +EILQNR +ELIKNR +QVYKK +QKKAAEK +KYVQK +KNLWHHK +KKTLQK +KKTLKK +QKTIQK +QQTLQK +WAAAGV +GAITGK +NELFLL +KNRLQK +ALAAAKK +KVYKE +KNKKAK +INPR +KAFKTLK +INGNIKK +KIKSLK +QLKSIK +KIKSIK +KLKSIK +QIKSLK +EDANDGLR +GGKGLGK +KDDNIVR +VGGGER +CDYSYEIIPKNWTSFYKLFQYVMGAVGPIISY +RLAEGLTPFQGDNDKLWESFSSVVPR +AQSTSSLKSLKGSSSPSSCTLDKGNYDFPF +DVRDKDAK +ASLSKVNK +ELVFHHIV +ELMIKR +ELMLKR +QGVTSLGIK +ALGVAR +VRANFEE +RRALTSPE +YPYFFK +LGPISNLVK +LVHELK +QPSPSLK +LKTPQNR +KLMNRK +LSQKYPK +NPMIIK +QAKIKEK +QAQIKEK +LVHNKK +RLARNK +ASTFGKK +SPGVAR +LILSLR +ILLSIR +ILISIR +LLISLR +ILLSLR +SIAVSNK +NFIEIAVK +VTLLEYLK +VFTGQVK +EASVKFE +SSMAILRK +NISPHSK +SVDKTEK +NLYIIAVK +AKIVQK +AKIVKK +KNNRLK +EPLRNE +RSKKINK +ELNRLE +VMENVLFK +KNDARLK +AFAEAYR +FERANIR +APVASPR +SLKQYPK +RVSKTNIR +QKVEKK +LYEVDVLK +LSEPVHK +GGVSKAQK +PMKEKK +ELGGEKK +NYIPNLTK +FSKEDLSK +GGAAWVILR +QLILQK +QLLLQK +KILIKK +QLLIQK +KIIIQK +GIHIPQTPK +EQVEQK +IARLDVGKNMTCISLPLNTTHQGFHRQQISE +RNLNQR +RNLNKR +LCKFDLSK +NLKVEYPK +EVKEKK +KKYFPNLSERIPEIYSVGDWGIR +KAAATLAKHYTLEK +EELQKRFMLAGFLNIILAPFLVTYFVLLYFF +MNKRTQEYKNTRAIMSATLFNNIELLPPDAL +LITAVAPPVK +VVDETDAEPKFIDIIINEGDSY +ENLILNGKNTVSERVCGAEGL +LPALTYHCSVELNGNIYIFGGLMPCYSY +GTLENLVIDSLMATINSIK +AYLGIRGGIDVPKYLGSYSTF +TDFAKIINKPNELSQILTVDPKTSLRIVK +YKGSKAKGVNMAAKSLIALYRDVAPEMLK +ILIEPVVITRKAIGAGR +YGGCFFGPAGTGKTETVKAFGQNLGR +EMSYKIVCSVLE +DEQGENDLAK +VKYPAKITLVRGNHESRQITQVYGFYEECLNK +HAILVDNGVLRLNEAANVK +NGFILQRTKSRSTYTFNDKMPLHLDL +LIPLSNAEEFTPKVTRTLSR +ACSSIDGRVAVEFFDDQGDDYNSSKRFAFR +QQPKEKFTWIKTEIIKEK +SNSDGVSLLKLGVSSKGVKILKTASFMFDLNGITSMDVSPNKK +SAIGAMASEPISTAR +QLDKDLLKK +KKKRKK +QQQRKK +RRDMLEHINLAMNESSLALEFVSLLLSSVKE +DIPSLIQAVK +IILAIFLQEKKKYDCISSGSIMTASEEYLE +KSAYANTEKDYKMVQEQLSKQRDLYKRKEE +TVTSLDVVYALK +KVDTLPLGGNFLNTIDLSTQFWEEHKITLSKK +EKSSQVVFSATELQQLTQQSHATDK +GLIKVNGSPITLVEPEILR +EPRDER +LLRVPSRVIRYAGTKDRRAV +NCVTLFYLILR +AWSHFFKTAGIQIVADDLTVTNPKRIATAIEK +EPENAKK +SLVSECKRISHSDEIPYEELTHLIFTTGIFASR +AMTGDGVNDAPSLK +SANVKKEILDEFDENHKHPIRFGDFGGQYV +RFVWRLIFFYVLGTLAISVIVPYNDPTL +VWVDLHGAAGSQNGFDNSGLRDSYKFLEDSNLAV +EFSIPNFAQLNSSQSNAVSHVLQR +KCNHPTRMELEESCHHLNLVLLDQNEYSTLR +KRESERKYIKNIISEYCIASTLKNPNICETL +LPLVGGHEGAGVVVGMGE +EGINAEDESKDPNSVLNFWKEALRFRK +IKYTVPKNPKAKYARLMAYYHQLSLIIPKNPY +DEDHRRTNGTRDDNDEGEELQLKVPFEVLFAKLK +EIRHILDRSSVDIYIKVWERLLTLSSR +LQHWETLRSKYSNKALLIVSNTAGSNSDKDYSQAK +TYNGLDAALHFQLAFHSLIIDFCDTDSFELLK +QTHSMAELKR +FKDNVRYTLENDPEEGADEATLQRR +GNNETVLNNVVPPKEDLDALLKTFRVQGPV +EHDKITADTQAVTHAAFLSMGSAWAK +VTAVVESPEGER +LFDKGVVSRFGMQESPDLVGVLKPHIDRELDR +RRPQQPLTDFTELYSRIANETIYYLNL +ELLLKNYIQRLLPPGRGDGDDGDDGNGNDGDGR +FMDKFIDLDK +LMRFFNTLYAALKKGGKFVAQFYPK +GQATLTVTHK +DKKSRNILNDQVRLINVLRECCETIKRLKDTTAK +EKDTDVPDYFLDLPDTK +KIWEHLQPHFTTNDGL +LLLTKNVSCYRPRRDGERKRKSVRGAIVGPDL +LNDICPIILEFQETVQKY +TPIGLKSSCGILSATEFKNITNDQAPSNFPE +RPLKRKLSLPGLAQR +VATITWAYYVFYQKFPPKYIK +LKEIVPLFPRSSFTDGVVSTGKSF +MSVPNSKEQSLLDDASTL +WQAISGSSARDVAL +DLIRKNPENYKSNMK +DVPEPILDFSSPPLDELLMENIKLASFTKPTPV +RYIAASKQDGISNIKNDTEKWFLYPKPL +DPQNAIIVTNHMWLEQCYMNNSK +WCTSEDPSLF +RRLKGLTKVRLVDASFIWTEPHSRR +DELTETKEKINAVNL +ITNSMKIDLLKADYTRSLLVSLRSRDIR +EFIQQYNVFDVLYLSWEIGV +MSEFNETKFSNNGTFFETEEPIV +DYTDIISK +PTKEQLALDDAGITNDQWYYVALSIPTVV +KKLASTENSNGVLSDSKPIRFTYVLYENQRR +NNGSQNAFTTGEQTTFYF +KRLLLGQNRRNSHRNCIQVMK +DHVGVTPLSSLSDSVTRELEKIWTELSKPAGCEGSSL +VLNMKPSEILSLIEEAAGTKMFEDRREK +QQLRLSHAVQFPFFSIENQYQPSSQEDKSVQK +AKKLDSLTQPSQMTKLQLLYYLSLLLGVYENR +LNDENKGLNLSRKDAAALFSWCAFE +GPTDSEESSLKDGTSYLASFPSDPNAKQF +AKVSDSGIVTLAYK +ERLNLKIDEDYVITPNGDYFVTTKR +RDGTHKARFVARGDIQHPDTYDPGMQSNTVHHYAL +MFWDPEFINNLVICQKNKNLLSNKPFNSV +KINKELFHRRDYLVHDEGEISREGDLVRIEATR +HSTFQPGWAPRECIENISHLKECIEV +LKENEEKLEDDLESDLLEDIIKQGV +LSPLGNLLSRESGFQGKQGYLVIRSTAK +LIQFEVETSGGNKNSAGDSGDDDDDNHNGNLDDSFYK +IGEISAGVTRVFIQIEEDLFASIRK +ITRYDLLKAAQEAEMQELLTR +VVEILQNR +ELGDAMDNELNAVK +VKIVTRESPPSAKEHMRPTKTQILVPPTQSLPNGKK +KECAMISKTAGGVGLHINNIR +FRENIELILQLSKKINDNANTLAISSE +ERKTHREDWTGEKSVK +GGINLKKMYKITTEKQMLRNLVK +SSSQNSIFIKNLPTITTRDDILNFFSEVGPIK +NGELTEVEREPGANAIGMVAFKITVKTPEYPRGR +MFEIADANEENALKKSDGTRKSR +EDCMSAKDPFDEEEFYSGLYAFQK +LNERFPIPEDALQELRSTELHTVGPELYAWK +TSRSFNCGDSQSKVKLPEENDASIAFSKMF +TRSIARYDRSKLNIILSLLKK +ILGINLANEQPVLEK +LNYELFKESTDGSIIFYAKVYINDLPQIVRWE +NIVQGIISEDSDLLVFGCRRLITKLNDYGECLE +TVDAVLNATPIVLGLITRRSIFRAGTRYF +EDDSKFTKFFNLRHTRIKEL +EAPDKKFKSESEPTTPESDHLHGIKPLVPDQNGSSDVLDASSMYK +EEKLRISRERKPYLHESRHKHAMRR +KEKIRMAKEERAKSLKRRQEELISQR +DPVDSSIKSWDDLSIGSIVKAKIKSVK +SNSTSPRPSVVVNTFNPINIEREGSISKTGEPTLLE +LNNTFPTTTSIQNVISQVSNNRPLVQHITNK +RSLEAILVDMTSKFTVNYDKEINKRVLLDKYK +YVVVDKSILGVSILDSFMYNQDLKPVEKERR +IISFWSVSQLPLIENLILQERQTAKFAKKFYKNFGRIK +HGFNRSNTGALMRCSFEETV +IKRISRHRHVPQVIKKAQEIKNIELSSIKRR +RDIKGNHLSKLLFAKSPLTINTYCQFYDR +HDWINPATGKHAPMISDEIYNIVMENK +TSTSTDGKKR +SEHIKSSALAFFSAGIPGVVEIKPKSSRESGSVPPISQNLFDK +LIHNNNVDDPFTKFHIDRQVWDELKAKY +ISQDLPLFPGLMPINSYLLFHR +LTKKFDLNIDYDLSMYILKGLKR +QLSLWGADNDDDVSDVTDKLGVLIYELGELQDQFIDKYDQYR +KPLVVPVKLEEIKTVDPASAPNHSPEIDNLDDLVVLK +STRPNIRKMSSDSSLCGLASLANEYSKNNKV +LHPLEADCFMKQLLHGVKFMHDHGIAHCDLK +SIYWYSKAAAAQPKGNPMAML +VQKREMDMILTPNNNKLNILHSSGSGIRRCYTDDTSATYTKKL +SKLTLEEPGAYKEPKLLL +HGRRGKLPKGEKLPKKEGGDNTPSKLLSSML +AIQKKLIAKCNLAGKPVICATQMLDSMTHNPR +SIINYFFEELQKWCKQTYNDEFKSTSNETGPWNKIKLILR +NLDPFNERTDDELWDALVR +IRTARDDLLSKIAILEAEKSK +MSFRDVLERGDEFLEAYPRRSPLWR +RVSILEDKKAKNETQHIASGKDFILK +DIDELIDLQMGVQFGKDEDSSDPEPNDSHF +IASISGFKLKKEKKRELNEVSLLHMHALLKQLL +NFFEDIELLADSSDEAFEK +IVYKDVGGFWIFPNLFEDCGVLESFK +LALAFIPNILALNLVSLLIIVTR +SKPVALTSFLGYK +AIGRKKSVCNIILPCRKNISRQHAFISYAADR +LSFSLAPAILLLIHFILKRRNNQRLK +GGFIDLGISDVIQIFGRGGRPGFGSANGTGILCTSNDR +FDKHFNWWSLLGIAFSLSCSWVGISASMAV +DDIKQYIKDYIHAAKNSIAAGADGVEIHSANGYL +DILTFFRMGVSHLVENKIFQNFFPDL +ELKEKNKDLEQENVEKENQIKSLTVK +DYSLLKNPLYVTVHGSHRSEVERAR +GHVDSMCLSGTIWSKTSNVKKRDLARAAAWFR +AKGTVDITKYGGFRAYFEMLKKKESQK +GKISISGEISTSSVIAALNDFLNVEVFKMGQENEML +DKDSEITIDKRSIFVGQLDK +IGASSVGVVSAPTLLGIR +VVDPRQRIKIRDILSHPLLKK +TPAANLKPFVSVITGPLIRVVGERF +VGEEDALGKKEVHKSGREIAKEHPTPVKMKEHDEL +FLGGEILLVK +YRRASRIMYGNRKPWKANKLAEMKSAGL +YLLLNDPTLAYPNFHEHFEQLKGETNK +GQSGLAGSSSSSNILGTRQRAQSTSSL +SEKKATDVDKDKVHSGSEQLANASEDTKDK +SASWVPTSQRGANYDADALMHDDQPFYKK +QLTIDLIESKGPPTGVLPLLDEEAVLPKSTDESFYSK +SLRPSFDEAVSQGK +APSQTLSDEDYNMLRTTAVNVIR +QSYLNALMKSEEMRIIMFLNMTIDK +INCPMTPKGRSTETSDIISAVKPRQLTPILEMR +ATEEYTRDLIEQIVLQL +DEDKPHDSLGIQLDDNSQNSMVPAPSATSTHSKSL +FIAHLKDRNKLLRCYTQNIDGL +GGIVIEDRTIGDGPQAKRGARVGMR +VAGVVTTGTDHIDPSVLQAYLDDTIMK +SSTIPKPSDQVPDVDAFLNK +LKFSLHKLFVAAFILSVPNVVGDDR +GNQPLGWIIVDSVDTLMLMYNSSTLYKSEFEAE +ILRSLGLDLPRNMQIEFSSAVQDHADSLGR +NPSLTENELLSDSTIWDLLRRVSDLKLIDLVVK +DILGSAELNDYILK +YDALNKEKCPMPLTSTVVASNVHKDVKDHARAK +LITEGNEKLAAVPAAGPASAGGAAAASGDAAAEEEK +FIQFQLIVNITAVILTFVSSVASSDETSVLTAVQL +YLQILAMLLLNIFISSDHEFVLISLIMTTWRK +RANKKSSETSPDSTPAPSAPASTNAPTNNKETSPEE +DNFRFLEDAIKQLKKNSAL +LYQLNEFLGAK +EEGYANDRGKSIVVTQPRRVAAISVAK +LKKGDYIKALGYPGFSQSRVK +LTEVEPFMPIVMDILEGKISSVYYFEAKNAFK +LCVNEKPPAESAVAVKSLVFKPK +GPSSSNLLAQNKGISHNNAEGKLRIDNTEK +PRRGTRAGPTRVKRAELDPDGTTISSSLRPL +AAIVGRDQERTEQAAKGISQLAKDKDAVLAIANVDVRNF +INLKKAKSRERKESITSPTIGINQGDVTE +LPKHYYAQDFPRNKR +RIIGAIHGEPTRHFSALIGWSDLQNSIDSMKDPER +MAKLQRKRSKALGSSLEMSQIMDAGTNKIKRRIRDLERLLKK +CVSITQDNAPDKYWCEQCR +HKNVFVRPSKLEDALPLYK +EVADLVGISAVMIQDMQGKRINNYEFKWER +SINTSGAVSNNIRE +DGREIMTVGE +LLIQNQDEMLKQGTLDR +SFVYNNLNEVLGGMDTIK +SLQDLGVTSAAPVPDINAPQTAK +GGGGDMPGSELADFVENADGFAEVFPQHK +LSAIESLAGVEILCSDKTGTLTK +LGLIFDEEPAEHVGPVAEK +VKLLIQNQDEMLKQGTLDRK +LRPSEDNLQLDGVDKIAVLHGGTK +YFQPSSIDEVVELVK +GLTLEEVNTMWEEGVLPWK +TAEEFETYWLNSPEFAQMKK +MSPDQALLSLHADYIGGDTANYKK +VIPVDTMKPLDGVSDTPSFK +VDIFEIPETGEYSVKLLKGATLYIPKALRFDRL +KYADAVVGVAGEGLNVEQRKRLTIGVELTAK +SEEDSTGPKKIAPSINKRKKF +FQEIVKETSNFIKK +NSRWTEGLISAAKAVAGATNVLITTASKLITSEDNENTSPEQF +QEVPSELPSIK +IVFIAIFADVATLTIAYDNAPYAPEPVK +IITSDATVSKKDIETSGSSLPK +TYCPYCKATLSTLFQELNV +NVFKASKVIAIAGGPEKVAFVESFGDNVVGVDYK +MSPSIRHSMDDSMKEMLVAPTPL +GESITATSVGTYPIGLDWAWHGTENAL +KRKRVPPALNFSDIQASSHLHGSK +SSYSMAYDSPVDRAMNTPLQQQEGL +EWIMRMEHESNNRLQFITVSR +EFTSQRTSIVRELHVYGSVVPLHSRDPRKF +EEKNNIGSSIRVKLLQESVVKLNPKLVK +LEELQIEHENLSRENERLK +INVNQTDSGIEIILDCSFDELMNDKEIV +DTEILILLQLSTISILAFDTREKITKK +NKKNEDEEKKKQEEEEKKK +NDEEEDVEYDDGDDDDDDDDEFVATRK +AISNSTAPDSFKSKNNDYRFIVREK +PLMVAIKSESLSRQKAALSIIEKMR +FNVRKRSPRSNEIKNQNNSKSTY +CPSSPSSSLIKHLTTSGGPSTSLTIMLSVIAIR +SVLAEFEELNVEQVNPYAPGLR +HADIDEDIVLPYVNNSNYTHTDRSHHR +DPLFKSSAFPQSPIRAYGSTTRTSSASGKPFR +ARAKQKVNRADPSDLDVENIYETSGE +KLDDLENTKDNLVKEKEALQNNIFK +DTIEKYLWDTLNSGRVIPGYGHAVLRK +IKQITNNAPLTLAEKILYSHLCDPE +LGVIAMNTPVEVDIYAHANSTNVNGSR +IQCKPIFSNIVSLFAEQNDLKFAV +DKHNIACVLDLVEGSMTVKTTRKTYDPAIILK +NGKSKGFGFVCFSTPEEATKAITEKNQQIVAGK +TFVPEQNNEIKEPRRRKTSTNSPTK +YYLNYMTKFVEFADTVLMVLK +QYYRILKRRYARAKLEEKLRISRE +TGLLLFDGSGFSDRLGV +FQSSAIGALQESVEAYLVSLFEDTNLAAIHAKR +FQDLMNTFSELLVPYLLKKIENDASK +NEHNSMDDEEFEFFHQFSR +SNVQDYLTDGNMMGATVGRYANRIAK +VSLALQKDLENKREQEKLKNKNLLFNE +LNQLDSLLDLSDIKYVAYSLALKIYQLK +LSGADILMSFPLQMAFER +DIIEETPKKTKLKKDTKKKLNKKKSVKELR +LALESIDDEGFGWQQVKTISIAGVGFL +LNMQRTMQKDVSVFRTQDTLDEGV +MIEGEPPYLNETPLRALYLIATNGTPKLK +NNLKKILEEYDGDIGKMNAEIRRFR +YAHLKKGETLPEEKVSIAGRIHAKRESGSKLK +VVAPNLYIAIGVSGAVQHLAGMKDSK +QANQVKRHSYAQSSHIRAIRKVISEILTKE +DVVKKENTGNKLLRRVKSLKTSK +EVSEGVAKETKESHGDPNDSETTLKDSKMHEY +SQGFPNIQEIYSDRDFITLGSSTYR +QKIKEDRSPPNSSLKSLGGMDDV +LTRSTGTLNLSLSNTALSEANSK +TQETGKTVISSLSLCRLANETTEGF +PLPRDPRVAIGEVPFTFGVRTEGESKLSGK +NDKIKREIAIMKKCHHKHVVQLIEVLDDLK +NIYNVAANGSEKVDAKHLIEDIREY +NYKIDKPTIKKKKSLLKTTNEPMLSPASL +QTLRMFTGIALQAFQQFSGINFIFY +SIQREKVSIGDVIYIEANTGAVKRVGR +QSSRTSLFNHNNSSNRNFHNLSQRSSAV +LTQKLEYYKDLLIRESELQYKEF +ESHLIIPACVSICDLTVNGAKCCNIFSLVNDSK +GKARAKQKVNRADPSDLDVENIYETSGEFVR +PQRMMPPPPGLVQFQKDSKDVNK +VRRLWAYIKAHNLQNPNNKKEILCDEK +ERAKPGDRCKFTGVEIVVPDVTQLGLPGVK +SALWGDWQRDLTKISHK +EDVKKGILLQLFGGTNKTFTK +LTNVLNMEFNIFNDDNSKSPNENLLIK +LEAELSSTKVENSAIIQNLRKELLIYKK +MDLVQKVSHGVFEGSSEEPAALMNHDYIVLGE +DWLTANKLNGVNGVKMPQDIVDR +QVQDVSTIENHVILSLKCTILTDAQISTFISK +AGDEEATEEKRKKDVSSFFESAIER +HTAENLSKAPIYSLLGLVLYTVTGAHAINNILL +EGFAHLLDLLEDEFSK +QICLVQKTVQESGNIDYQKGLLIWRLL +VPRISTPFILHNYISNGRMDLFSKEFHNGR +EVQLSSLRSLLYAMILNRTIGSETGVFSF +INEFSKLIMRKDAIAQELSLQREE +NEELACVNDIVSDIVNNLTALNANLPK +FDDLGDVNGALEEMDSLISAKSINK +NERKDAKRHYNRVLLQYNRDSEVLK +SGIGGKSIFGNTFKDENFDVKHDK +SQRFSEAAFLGSTYGLGDDAVNDIVTKWK +KAKLNKITYVDFDLHHGDGVEKAFQY +GKVLAKVIGKELDNSSTISTHDASTNGLINQFK +APHQVGKPIAK +SETFPMRLVVAREYANWGAFQHAFTRR +TLAQDLEDLSTVYQTVSDRSLRVQLYK +EAAAAAYGPDTDIPRGKLEVTIIEARDL +TGRAGNTGLATAFFNSENSNIVKGLHEILTE +FFKIANISIGCIDIIAALSQL +GKTQEKNIKTIEVGENDSEVTREGSK +NFSEVNDVLDPLSSL +QIEWVKGHDGDPGNEMADFLAKKGASRR +MELGPNLAVNDKIQRGDIKVGDIVLVRPAK +AGLNDIKRPVEKVSGAQNLSLLATALIWTR +IMKIGGIKLQMQNSKVESVCQKLDILVAKLKK +KISNSKLLSLLRSKTSAGR +LNGLRFDKMSFSHFKNILLTFAQMNPK +LRIMQVGEGTYGKVYKAKNTNTEKLVALK +SSAVPQTSPGQPRKGQNGSNTIEDINNNR +EREDFMGEVEDMITLKDIFGTETLK +KRKTGVIVGEDVHNLFTYAKEHK +LTCAAEHSKSLSKDVKKTILGAPFCPRRKDK +LESVLEEAMSPNAVSNPLK +HNNTGQLWSRKYVNEEGEFTLPIK +LSILPEESMSNGHQKISHAELVVSCRKLLF +KIVMILQGHEQDIYSLDYFPSGDKLV +YLGATYLLQLVFLTRDEMDGPIKLK +NRSNSEGLIRNEDKLVLTTINK +PVRYLSSSSTPVKSQRDSSPKNRHNSK +RCVFHRSRIRGARFIVPIPFIAFPRHK +TEDGILLLSQTGDLVTFMNVIKK +PLSRSNNNQEPVLWNFKSLANNF +EQVARDYVRLLKFGQSLFQCKQLK +KKVENVSRNNSSSFDISNNKGY +LAAVPAAGPASAGGAAAASGDAAAEEEK +EIVSGSDYQWAKAWARTLAEVINAF +NKEIALK +AEGLIYTPPKESIVTLYKKLNGHSNY +ETNRISLTYDPVSKRKVLNTY +VKTLVAQLNIQLDNLCQFLSQERVEEFAR +EVGYQEFLQRDAEARGGNVPNKGSKTK +EFNSSRKRMSCIIKIPGSTPKDEPKALLICK +YAEGAYNFSKYTQFQNKL +EFNEELGKIRSKLDTLR +QLYDEKKIIPMRFTGNIATHVEENL +KSAIRTKTDVVTSSYISPALRELEPEIVK +HFHGDALLLIDVRPRSEFVR +SLIYSTHEVEDCTK +DLFRWALRDAVGYEQLAASGYMLLAER +IGRPTRIVAPMVDQSELAWRILSRRYGATL +SSLDTVASNSSISASSSLKRSSTGLSLRQLFTK +SQLIIAIKNILSPDGWIPTRTDDVK +QFQKDSKDVNKKEDR +EISEAFEILNDPQKREIYDQYGLEAAR +DDYKNILAVSEHPTVIHLSEKASLLNKVLVDK +KGQISIFNIEDAKQVGNIDCRKDIISGR +DGQYCMATGTYKPQIHVY +AGGKIINK +LKKLSDELKGDLSIIMRAYLEKPRTTVGWK +FRGSRDDGPHVNQNEDEIFFQLRK +EEEGESDEEEEEGEEERRNIEESNNPSLR +NKDVPHCPESLKWVPGNLSPKKIAYIGLR +HRIGRSGRFGHLGLAINLINWNDRFNLYK +QVLENLNSK +QDLVLFSDQSVLPAHF +TKAKSVVNDVEELGEIIDEDIGNNVQE +NKAILNK +SRCVKWDSNGGKSGSGFLKTLDDRFIIK +KETTTADAKVCASVQGLKALQQQIMDSTTVR +FSDVVKVAKKLGYTEPDPRDDLNGL +KNELNGSSSSLSNASNGANVPK +NSNSDNKREATTPTIETPISCKPSLFR +CVVMWVSQIVAGMAAGGAASAMTPGEV +PVVVINKVDRALLELQVSKEDLYQTFAR +TQLKDSKTITTITTPNPRTGGEHPAIISR +LLFYASKKSKITAQITKLHIK +FLYTGRGPSSDSMHLGHMIPFVFTK +NAKYYRDKPYFKTNSLLKAMSKSPR +QNSRGGRTRGGGGFFNSR +HDLGEIYAISAKCFDMCRQQGGMRK +KKPEKKQNAIIKLSQKEAGVEK +DGLGVECLRGSGLIAGATSRAYHDIFTITLVTCR +EHFDMLSKTCRSDIAKYDGSKTDPIGDE +SVISPDPNIETNEIGVPPV +LYEYSQK +KVEELPYEESADNQFVRSITLR +TPIGVGSIAQVYVGELSQK +DTEGKNVFEGGFLGLDNIGVF +YFFVSTVKAFYLPGVAPTTYR +HGTSITMACVVGYSDF +ALHQELKNAKDLALLVAK +LTSLSTVSSDGKSKIELTQVSSITGDSNV +QGFEKGGDDKAQLDVSNDKDK +ILLLQEAALRRKIRTISKSHIVR +AIVDTEFCHYHSIGSILYYCLLK +LKTEVYGSALKDYQVVNNIEINSDER +KVFEAPRMPFANGMAKSDSQNSLSTIGEF +FSTIIPVSLRVNLDLAKSVYAHQIEHDK +LSMFNQDITEQVPLPKSTHLDLENIPVKK +NRDPLLANLNAFKSKVKSAPVIAPAKVGQKK +DEEDKKDKTKDKEVELR +EMQRLEKCLKFKKKPLHQK +HDSNDIVAHRKNALVFNGNSRL +TEQDDILETEASPAKDDDEIR +MIIFVSEEPERRLAIVSNLY +LTDNSLDITAKTKLLNDSLSRLNL +SPTVQQKQYPSVVQNLGASAVNTPNFVKTHR +EDFQDIFK +DVNQKFEFNRETQLLPIGGLQEDKTEAK +KTKSEAANSASEEMEKLLKE +QDSVAIKPIINVMKQSGCEVSEWMDKMAK +TLLAKAVANESRANFISIKGPELLNKYVGE +DADGKLKGFGFVNYE +DKSLLMATNKEDSLDHGSNPDLPNKSNLKFNK +KNAELLK +QDIPKDE +RYPIVSIEDPFAEDDWEAWSHFFK +SPAHADVYTCGSLAFMQAMIGHLK +IEIDSFVDGIDLSETLTR +ELINLGQGFFSYSPPQFAIK +ALYKDIEFSVEELNAATGSK +GVAGAGVISMYDQLQMILFGK +FGSGIELESLPITPGQYITVNTHPIR +NMQIEFSSAVQDHADSLGR +TSLYDKKEDILMHR +INSWNKEFQSDLTHQLATTVLK +SQLKEIYHTPLLELTHAAQLQHR +GYDAGENTYQAPPADR +GKPNSTVLATTAGALGLLTLDGIISKK +SEKSLEALNKLVPAECHLMRCGQESHV +KGTVSDDISSLLQESLGSMPFR +EIEVSFPSASQTDFDFTR +NRPHLFQGVISHGVYQDK +MIVNNTHVLTLPLYTTTTCHTHPHL +TAGFIMGILSMAGALYFIAPNRKPLFASR +ATHNSQLLLPPLVLYR +VIPLQANQGTWSNYR +SDPTKLNVGDLATTEEDPLAR +HVGDMGNVKTDENGVAK +IVLENMAGTGNLVGSSLVDLKEVIGMIEDKSR +ILQVRGEIGPFASPKTIILVRDLPRTRSGK +VTHAVVTVPAYFNDAQR +EITANNNFDSKDIFNLKVR +SKVSCYKCGGPNHMAKDCMKEDGISGLK +LGRRLVMQYAEEDAVDAEEEIARMTKKVR +KSSVLPSKRVASSPLRNDNKSKVNPIGSV +IKVFPESSIKFGSFEVTKKIMTKLEGCR +YLGGHSDLLIGLASANEECWPLLRSTY +LNIDTSAALESIQSPYLFLNGISVINRGMVR +YIARNQK +MKLVNNK +EGTPKLNR +KTGNAGPR +KNKGKKNK +RTLNGLF +KVLVEQEK +ENALLMFK +GNSLGGSTK +EVILKKPE +KAAQVRK +IFNVLLK +ELAQNIK +GYWVTEK +FLNIENPE +ALSNLRNE +KYSNKQK +MNGWTSPK +KYEAKEK +EVENDLK +SGTQVQQIK +IGSGLGGMK +KEIINKE +EQNLLEE +ITYVNKK +YEEAQEK +ASGSHGSAHE +KIENLEE +KHARLKY +KKKKVRK +YEEAQKE +KINLKKK +QLNIQQK +KLNIQKK +APEDSAVVK +LYLQEFK +NQVDLNK +GYSAAHYR +DGSIIVVK +SSDALFYKLKSIIPDIVIFSDTSELSK +LSNSFKTKPLNVVDRSVNTYSFKLSNESELY +SLFLGMAIVRLFISRKVTIGQWIK +NFHATLLSSVTGIISLKECLDLAEK +SFVVWDQIINSISSMK +HKLVNIGFKEIEVSFPSASQTDFDFTR +IFLIHPRNKFIALSLAEYTYAK +YRDMSMINKEWAEYQSFKNANLSDIINEK +TKDEQFYTKDIIDPKLTSIFERMIEKCLK +KPEWIFLESTYENIMKEQSVNRIIEEEK +FMLLILVGDTYDTDTDTVDVNSKL +RISSSNESESTIQNFEDYLLQYEVESKSL +EPISKSQIQKYLVLEKIDDGELFERIVRK +IPLALKDVSYLVEEVFK +FAVANYTEHSLGSGSSTQAASYIHLSYRR +IHIDVNEMNIDLLSISSHK +LHSLLDNEETFQREVVDKLTELQK +NCIGENNQIYLQSLNSWLKLHGTK +IKETNQLVLLQKMLNLLNYQELFIQPK +YGTVVIADEVYQENIFPGTK +SKYDDLLDLYYDGILQVLSSIPDPVYNVAK +LFLYLFFCEYNEGAKQNGEMLVFPHSVVK +FSGLKSILSGPAGGVIGYSSTCYDKNNNIPLIGF +PSSDKDASKVAIRLENGQRLVR +DYIMSPVGNPEGPEKPNKK +NRLFILVVLLGIVLVVYYSQLNSLDLVEPV +MTQKKLDFNSKILNLSSTISRPKLAIEQTML +ITPRFLPKSLTPGPSISSINSDYR +TELFNESRNNDKQHFTLQLIPNANANAK +SLHNKSLPEDDEKKMLENTKKENIK +INIPKAPALGLLLEAPVFEGYNKRLEQF +RLADAEEFWYISYDDREGWVASHYLLSEK +QLFQTLSPTKVDTRKNILNQYYTSIFSVPE +VGMSSNRSDTRNGGGNNNKHTNNEKLGSFK +GSELPENASGGDKPLIADADVAAKDPR +MAVIRIKKPRGPGEKDQPLEGEPKLKRIR +QAVNMTDIATQGLKEYIASVEDR +FNNTPLVGAQIFCQSDIPTGGGLSSAFTCAAAL +VPTYIRKLISSGLLYLQDSNDKFVHV +YKEHVQDVLDINWSKNNFILSASMDKTVK +KICYIDFISEHHVLNEVTIDRGPAPCLSLL +FPMHVTAVQNAIESITKGDSMDAEV +ELRRQPSVNLFSTLMNGNMEK +SIASLAETLGDGDRAAMAYDATLQFNPSSAK +ELNAATGSKTSLYDKKEDILMHR +KTSGNNPPNINISDSLIRYQNLKPSNDLL +VRLNASEREELALIEEAYDNPHDTLNR +YFTKYGLSALLEGLSDLLSEEESVLTAFR +NTVLDLLSVMTHPHNR +EGEIEILTIDPTEYRFKKALVNKNFPEVL +LSSGVGVTPLLAMLEEQVK +QVIEFEETDIRNLTLWERTDER +YCKDQMVMDENQVEEPGKHSE +ICIMNLIYSNTLKQIIWEKEEYEMFSE +AENVKNIKNSLLGIQK +GVILSSAGVVTGLKLRSKIAKAELPCPGDVLR +STEPQLLKLIRCTYSSMLNEFPYLENYY +ITTERIPGPPKLPREEQEEFER +DARFVTIGAGTRFQATFANLGASIVDLK +MEYAMKKLDHTERALRKVELPLLQKEV +ICYIDFISEHHVLNEVTIDRGPAPCLSLL +RIIHYDDPSQQLVNTDLDILNNTRAK +PHSRVIYYNAIKKLDECDTYQMWCQQASV +IFKGVGKPTKEIDKADGKEGIWPYK +LLCEYILEKSVDHLLSKTVNGTKQFKK +SVGAGDELVSRATSGVSFDLIMTALKLPK +NIRKLSNYSREISSPLQENCKSPVKE +IEFFDKHLSMFPQDLTYGFYTR +KFKHIDDKYGRKFALEKLYIF +EVKNVNDKSVTGVALIHYIIVFDRADYIE +KRIDCISAKKKEVWKTEEKFLKDILMWL +ELYRFQQQVARNTDEVSKESLKKVR +DAVADEDADDKGFKNDLQNFMKNVGFDQHK +RKEKKANDELTSLAEKIRAKALENQKKLIE +RILARRLKQSGSTVLKEIESPR +KKSVEGAYIDDSTTFEAFHLDSRLLQAIK +FIAVNWNASGGGAFAVIPIEEVGKAPDQVPLF +YEEWQKSVSLLSSESNIPTLIEKLQGFSK +DSLKSVKGGADVESKSSNFSCNALKALQKKGGIK +QYPLKWILSLTESLTQRTTTSESIGRNIV +QPAYVSKALSTWEETLTSFKNSISEIEKF +LVPVLPILLDYVLYNISLGGMTFADFLEV +TREKKHYLFVVGKPNV +RIDGSVNNETRKDQLEKFNSSKDK +GLKRGEVVKIIRKSETSGRYASYR +RKHLEENERRHEDAIKRRKEAVNMNVEK +TVISPDPNLSIDEVAVPDRVAKVLTYPEK +CFTFRTWLLLLLLMWLPGFLSQIK +LFLAQELMAYEGETVTSTSKSSE +PKSQLDFDFPDKNIFYDILCL +EEPPIVTPRLAKGKQRIEEIYKK +REKGGAYGGGASYSALAGIFSFYSYRDPQPLK +VVLIKKGQSAGKLAAIVEIIDQKKVLIDGPK +SSTITNILPEITATDVKNYQYEDENVKYLK +VVELLTNGTNFKYAEKIDNTETFQSV +YNLLVENSVGYGQLVALLILAYYDPDNFSKV +EIIQELLKELSSRISENCGRTAQPSIVR +GTLVMDTIKIIQCSICGDTDVSRLSL +LYDSLQLAHKVILNSFYGYVMRKGSR +IFLEGPYGVTVPHIAKLKRNLVGVAAGLGV +GYFYQIYQSELSKKNTLDFDDLLMYTFR +LLKESVIHDGRSSVDSWSERNESDFVE +DLLSVSYNEFIDPKDDSKLFQTLVNLQK +FQLRDHSGEKIINEHLRDLSDLQEYYSV +LWSDMVHETRNDLFGDSTPWNLHF +KFTVFSNLDNTTQLRLLSKEDEIRFWKK +NVINRERFISKLFLRGDSVIVV +LVQMFASLPSPKNDFEIVLSEDEK +NVLPETIVNQWKLYL +VLEDKYGATK +IYRVSSTYSSPGALEFSRIDGSSLSYSR +NGKYFHSTCYHETSQNSSKSNSGK +NNCDVRYSFSHDSCMPVPICKSSSTK +YPKGEDTTYVKQFEVSEDPKLTFE +SNGAISPDVYKWYLKFFGGFKALTAL +AGYRHIDAAAIYLNEEEVGRAIKDSGVPR +ISQIVIEDLVVFVNIDGANATSALSKPQGSFSK +AGDLDSLKDIFTTLVSPELLSTCKESE +SLKYGKLRNGMFCQVPSSLIVRAKNHTHNL +FSKKKQNFARNSDNNNVTDYSQSAK +DAMTDEFVEKVLLLFNSAIK +ASMRLAIEGPYGSSSPVNNYDNVLLLTGGTGL +NYKKFLYKPDVKELNIESDLRSLE +KATIHTYLATSDMFR +ADQHPIGKSYESSATQLGSAREKLLANRK +VVGLHIVGDSSAEILQGFGVAIK +RIVAVTGTEAFEAQRLAEQFAADLDAADKLPF +EDINFEFVYFTDISKLYRRLSQETTK +EWVRILLNRSNQDTKILLQSY +LILFTLCALPVLFHFILFMLQYL +KRDCIDISIFSTPGSVSLSAYNLTDEGY +NFINSTQMRAMIQIHGVGDPTGCGEGFSFL +IKSKTYRKIKKKELMKNRE +EDIGVGIALKKLNAQTLADALKVATTNKIMK +KKRTQQSSDIQQGAMFDGVFSNLSAK +GTFNNINKILYQWHLYSTVEDLHK +YVFDIVNFDDSNTLIRAEEDSVEISF +WEYKKNYELATRTELTEAQKLQIISV +ELNLYVGMSSMQKKWYKKILEKDLDAV +SSPQFGFTLAAYELFKGFIPSPDNKLKSREGR +RFLYLTLVVTCIGIYMRGSQQFLTV +TSYDGSIRSVHLNNLQSEEVLTLK +AALKARGLTGQTNVKSKNKKNSKRQAKEY +PQILEFLNCLVDFILDNIPPRL +PVGFWTVKNIVEDTSNVNNNWSL +EQSDISRVNKDGTNAGSHPSSKGTQDPK +RKTALSECIAIFNNKPKKAIPVLIK +QYSNNANNNAKSPKNRSSSILFQRQSILSNV +ENIASGLHVRGQKVELQSIKDALHKMDK +MGHSGWRAYVDKWKKMLVLAIKSE +GGDYSHFVVSNSSVGK +ILHANSLTSSNQQWLK +FEDAPAGIAAGKAAGCKIVGIATTFDLDFLKEKGCDIIVKNHESIR +EALQILNLTENTLTK +SLANFMNAMTGPDYTFFPFSTTNPQDFANLR +NWTNTTHTAQLQQTAVPLALPIFNFDDISK +ESNFLIDFLMGGVSAAVAK +KLENNALMLTYGGMSKQPVTLPTSLHIFK +GEGVTYFMSGVTDDMK +FDIINDEEVAVVVGGLDITGVFTELLPCYSFIDNTYGSTNSLICY +LNDKSLLQNDVGKKYLLKKYFEKMEKVHHNVQNTIDSMFEK +VNTIESAPNVSSAKENAAK +SSGVGVTPLLAMLEEQVK +SQIFSTAVDNQPTVMIK +LEPELHQDQDAIASEVDVSMQDTTFNEQGPSTPSAPTTAVPRRK +TYSSRSVGSQWFNRLGFKQNKYGTCKFLSIITAFVFILYFF +LLKSFVGTGVLFLPKAFHNGGWGFSALCLLSCALISYGCFVSLITTK +DVPASTPQDRLNSFISVAAQLAMERFNRLLNRPKGISKDEFDK +SINYMITTNDDKIHKSAIPSSSSLPLSSSPTRNSPVNSVQSPSRSPV +MVGFLNEVVEKHAAETWKYILHIDDEGNDIAQPDMADLINTME +KVFTPEEISGMILGK +NKEIEATEERKRRAKEIARKEHERKHGFMSSNGDYDGANRF +REALRTIDSVFALDLLFPGFSQEIINPDLIEMISSILTRLFY +IMKLISHTNVMALFEVWENKSELYLVLEYVDGGELFDYLVSK +QSKLNSITGPPATDDSYAIDPYRVYCADVYTKGQKQILKEALTR +HLSDLDDKHFCIPLYTEDSIEEENLNNIFTKWWLHYYRK +LGLRTAMFKQVRGKTTTSRNRGVIAAKLLVAWYLATIVMYIAK +SQQILEKKSTAYTPQFGQNHSVPMEKSNSNVPSLFADFPAPPKL +NYTPKQDLSQSIVLK +ELRLSLDNIKIKGTGCPK +AAGANVDNVWADVYAK +LSNNAKGDNPTVDNTTRHSRLENSSNSLAPLHESLTSLILDLISVK +YTLQMIVKVSEEEPLETFINYLPTVQKLLQKAVEFLKTVKL +LLSHPNVLSLYDVWETNNNLYLILEYAEKGELFNLLVDHGPL +APTAAELQAPPPPPSSTK +GYDQQDLHVVRETPDMYRNIVVPFIQEMCTSERMKWVNNIL +RLSQLAKWKTAEEVSALVRSLPKEEQPKQIIVTRKAMLDPLE +LIEPNLGVVISNAIFQE +KINTNETLPSSLSSPKLR +PKPSRQVLLDDNTLMK +SVSGPESKAHLEVETVTIKNRGAKTSKEPAELVLTIAAVLASEEEFE +QSNGMMESEKGEISAPKLSLYLITECLNRESKGAALIVGQNEIKR +ILIDGIDEMVAPLTEK +FSTIEPQTIAKQFTQSR +SILQSLNPALQEKISTEL +AWKNEEFFFDGIDCEWFFSHFFYRLLSAKKSMWLLPLNVE +SRLVSLLIHGPAGSGKTALAAEIALKSGFPFIRLISPNELSGMSESAK +AWNTEYFFFNAAECQKAFRKVLLEPFSVKKDESSKIKSFGDSV +SAAKKNTEVPVDIIIQPSAASKHKMFPFNPAKIKKDDYGTVVDF +EPTLQDAAFHACEIFIRSIPSSLCHHLSLY +DYSNAFFKYRKSLNYINEYMPEPDVDK +RRAALLSSGNVKVAGLAKKDGEENKPKKVVYSKKKKRTTQENASE +NAHARKNFFIHLPSDCIAKDKFFTSSDDPTNLTIPNRDINER +ATSPYNKSSHHGTPMAVR +APHGTYNGFITVVAAENVAKHVQIKISLTQGGRLKHIYKTKSQK +PGSMHLRPIATPYPVK +LSPEQTVQLYELMK +MDVEKDVLDVYIKNLENQIGNKRYFLKQAQGAIDEITKRSL +KTVLDPLVHQGNQLNL +EAGAVKQYKGMGFHR +IIENKTERPQSSTTPIDSKASTVAAANSTATETSRDLTQYTLDDGR +IKILPEQPQLELLSTSKMTRNSWMMLDGTKTDFHITVRNKSL +EEHVLIFDLGGGTFDVSL +KVRKPQKSISLNDENEVEILPSRNEQETNKLPKDHVTADGILV +EQTQEDSLYTIYELLPVWRMVLNENDLNLDSIVTQLKDQK +QNYLKYGHPDGPQSTSHGIALPRFLVDGSASPLLVVCYVALLGLIL +SDDVEKCLVLVKISELPRGAVAEFGGVTCKRLIVDDNDSDKKER +YPPLNGVFIALTLFV +PSSPAHSSSAGSSRASTSSSTSSHAVVEADAETEPFVSLSMSTTATISK +AATEESFQIGLVEVLMRCSLDLYSQGFLLKSVSIAKDTIERIK +FLVSYCKRVPYEALGEDGEKVIGYDENVPHAEGFQSGILLINPK +IELKPEQDELDASIESISWSSKFSLMAIGLVCGEILLYDTSAWR +YDGVVAENKLLFLQR +GQAGVTKASVTIVFDNTDKSNSPIGFTNSPQISVTRQVVLGGTSKYL +ENFPAGLVSEYLHK +NFNQETGKNKSVLEVCKSHGLEPDLLKRLLTWYTEEWPNKR +WLTEEFFTVLGNPSSYIEFFPASLKVILVPWVGCDFIDGKLLR +VLLPQESTFETWKLELGQGQYHSIEHYALHDNIMEEIEGPK +GNNAFEYMTGGRAIVLSQMESLNAFSGATGGIAYCLTSDYDDFVGK +LGDAATPEIINAWGEAYQAIADIFITVEKK +SKSSKNLRGPKIKSKSDTRPSALRNALGEAFGTKKAKKAIADLER +FLTPENANNPSITESPYTRLTELFNVNNF +LSLATKKGRKKNKRSTSNLSSPSPVVLSNNEQESARTSIDDAAAGV +KAATELSRWKLYGSSK +ELEHGEWIPPMIKNPLCTAERGCGQQIPGLINNAKYKGPGELNE +ETELAFEILSKTTLTEKYVNSLEYFLMEFRWENKLVGLGLK +RREIARRNEIEITQDADTNIRKTADALTQY +TAGIQIVADDLTVTNPAR +LSVPTIGIGAGNGTSGQVLVISDLLGMQGDSVPK +YLASKLSVLKLHLK +EIPLDPQVGQNDDVEELSKEQIEKLFER +LFEIYSKDIPAAFVTPEIVYRLASMLNYNLE +DQIVTYQKLLVGAYFVLSLLFWYFSRFIEK +WSDDQIDEFFAGLLGQRVNFNENEDEEQHARIE +QLCQITCQILESGEDEAEFSLRELSCCINAAFL +RGGKSLDRKEWAKILKTELTTIGNHIESQKGSSR +VVKMEIGTPPQTLYLQLDTGSSDMIVNNADIAYCK +ETTPDILVPHLDPIDPWEAAMGNSSPLSETSMR +VMQLIETLPENSSIGDAILTAALSTELSIENRIHAVNLL +YDFPTVPARKFVQPESTVPLPASSSEIPIKEERPPSPQEE +INQVRLRRDHRNKKFNGTVLVEFKTIPECEAFLK +QMDQQLQYTALTGSPNNPLVQKKNFLFKPLNK +QLIKGDAGETLILDGLTVRLVNLFSSTGFKGLLIELQADEAGEF +VLIVDEVDDTRTTLHYAVSELEKEIAEQQKVL +LTLLSDSTSLHGPSLTESVPNALTSLCTALASAVYTL +DFLKGDASPIVK +VWIDLHGAAGSQNGFDNSGLRDSYKFLEDENLSATMK +RHYSPSAKVVLLVPHCEGDGILKGVDRMERLK +VVPVLTGLALASIFAK +SIKQAQYELEISNTPAKALESFIKIRDDLMIHIR +NLPIQGCLGDQSASMVGQLAYKPGAAKCTYGTGCFLL +QPVYGQAMSSTTNMQDSNPSYGASPMQGQPPVGGQPPVPVR +DLADSSADQIKEEDFKIKYPLDEGIPSDWERL +MKLVNNKKSEKMHLLIMDNFPRDSLTVYEISHLL +AAQRHVKNALVTGSSIAESQSAIELVSSVKDLSPLKL +DVCALASLDPVRLYAGLGYMPIRKNHVAAIVDY +SDSLDENSDEIQNNGQNSSSQKKKAKKEAAAMNKR +NHQIIHSSDLFLTLVGNSSGTSSGSFWVQVVRWLRWLQVFV +YPPTFNLLPNERSIMAYTVLLSLWLIWGAGMFSGL +NKHINNLTLALFESFKTYLLIGMLWVLVNSIVNLL +KYKGDLSKIKINGRPLKGAKPHLSSIGNANSITTK +QKRLEDKQFKERLKALKDEKEEARQAKITMLKERRE +NDEEKDFPSKQSSTEPRFENSTSSNGLRSSMF +KRMFNNTIDSNDEKVGKRNEDGVPLTEKAKFNPF +HSGSSQHKAQLSIWHGQPIVVNSSDDHWVYGWR +NMHLHPLFLSKITSKFMITDATGKHINVGIPVK +DIEKHCTISSDTDSDSGNAKAKNDNSSTQRILDEPGVPISL +FPVRGMGEPLEREKTIEDATYDPKENELFLR +LAFWMPTANDANIETIVPMHENLELKYNCVQE +DDTELEDDLSKWLAQIKIVENDNPSILGDFTR +LLNRNILDLMFKCPLSDYMQETFQILTERIPSLGPKINDE +LDRQSRRKPAKSCHFCRVRKLKCDRVRPFCGSCSSRNR +KLSPNDFADPTIQSQSEIYAVGRIVPDSPTYDK +LQSCDRLDIYISKVLKQDYGDSLSINWNLPPEK +EIINNKTSSQTSLSSKDLSNYRKTEGIFEKAKAK +IIGTDSHTPNAGGLGQLAIGVGGADAVDVMAGRPWELK +ITDKSTEFVMYSIFKGKPLKNDDMEFQSYEK +IIHTSVWAGQKRLSQLAKWKTAEEVSALVRSL +MVKLKLKLKVRELSELVLSEDISNDLPPVRWIRINPLK +GRIIVVTGANASGKSVYLTQNGLIVYLAQIGCFVPAE +GFPLKKVPYYFAGQLIGAFTGALILFIWYKRVL +STGVGCMRLFLLSLLLQGIFFTGSMFTIPPASRWFL +NLMNKTRAQQEEFEARAASLPEGYSASFDTTPKMKLDITK +IKESEKSKKPRSHIKRYGELGPQIRVAVNSLENMPSQRL +AKNVLENHINNGDDERDIETVEKLTTASIALEQFFK +ALIELSNGDMRRVLNVLQSCKATLDNPDEDEISDDV +KIQQLKRELELAGNRTDVLLQDKKGRSRSCLLCRRRK +DLFHRLEKPNPHSGTFARMQLFVRCEVEAFAFK +PKKIAFTFLTKSGKKTQSRILQLPTDVKFVSDVL +VCGNAGDSRTVLATDGNAKALSYDHKPTLASEKSR +LEFIAYDAIAKYLDPLMNKLFYMLESNESSKLR +ENFKKFNERRKDLAERASELDESKDSIQDLIVKLKQQK +RQEHLKRHQRAHTNEKPFLCVFCGRCFARR +GERMALQKTKTKSSISDNENEAGEKKVQFKSVQRGKR +PERRLAIVSNLYALVLKPVGKKPSDKPLCAIELLQKNDLKK +AKLLIDLGEYNE +GTPEKPLSDLGLLTYRTFWKIK +VDDNHDEGLSLRRTLSLGKSGSTNSLYDLAQPSLSSATPQQK +EPIMRLSKPEWRNIIENYLLNVAVEAQCRYDFKQKR +SWQRALQLNPKNTSASILVLLGE +ALKDKETFEK +EYSSVDMSNLLNVHQNNTDLPHNIIEPSDYGDYVK +VAVGNGRSNPSKNNERGRTKAHNYKTRRSLSSSPSYCDL +SGKPSGYYGPNSPLKLDEENIHLNISLNSSTKRR +YKLSRENKTIWDLYAEWYIGLNGKSSIKKLIE +GKKPIAGASDALK +STFFQDYPLDALATTSVLFGSMILFQLLRGFVLDVAFR +NAHSVHEECSSNTPVEINGRNSGKLKEEASAGICLVKK +KDKATQTAQISDAETRATDITDNEDGNEDESSDYE +KYSNETKKRNFLETVELQVGLKNYDPQRDK +FNEMVHEVFSSFKNSSINKLLTSESNIITPCVRSLSF +PSELTPHTAVVMENLLTTAGFPDGLIQVVQGAIDETTRLL +LKSRLLYGIFSCFLLFYSLKDLIGVFKQKYLYLSILL +CYGRYKFSGHHCINCKYVPEAREVKKAKDKGE +VEFFKEKCMNVSSGTGTIITANIEYQTDELYR +KTKDANQGDFDFQTVFCYNCGNAGHFGDDCAER +IGWNALLQLRSDVFVMESKFKMIESSDKLSTELRQK +VKDLSELPRAEKTDLTNILIRTAAKNEALLEAKISK +ALADERRFITQSLVAIDRSNAPFFYLNMATEWITYRV +VCTPTVLIHGYAASSMAFYRTFENLSDNIKDLY +SSFLRCITKSDVDVQPYAFTTKSLYVGHFDYKY +LSRSILEYVVDLSVGDTRRALNMLEMIEVSTRERKADEE +RFDSRIQFGTAGLRSQMQAGFSRMNTLVVIQASQGLATY +PCGQYCPEWHQKPRHINPQEVLKIMKDLEAR +FPSFNISAIDHTREENLQRLECVERENSICR +ENIKKEACWTISNITAGNTEQIQAVIDANLIPPLVK +TIMSPEMAISETGDEKKEIEDKISIFEKVWTNHL +SGLKYTYHHVWRNFGIIIGFLCFF +SALSSPSKQEKVLAGPIEIELDASDPSR +INMAMTHIVTQIQADSTKFLSHLLKYCGDEVVRK +LVDKDANGVSLFELIVPIFQLISAVLVSMGSSNK +TSTNSSSVTQVAPNVSVQPSLVIPKMASIDWSSEEEE +FIKLQDNIIDKVKQQINSNNNSNSNGPGHKRY +STNSSTNATTTESTNSSTNATTTESTNSNTSATTTASINVR +TVGGFVNIDVLPYADIVCSSLTKIFSGDSNVIAGSLVLNPR +VSGWNVEKLYPHYIGHNLGLDVHDVPKVSRYEPL +AKFEELNLDLFKK +QVKKNKSKGGNVDQIDTKREKDKMRAFGEER +LWNIVIASLLVFLASNKISHDFSSIEDPSLRASK +EEDEDYNDEEEDVEYDDGDDDDDDDDEFVATR +KFLNSKTSYDVLPVSYRLIVLDTSLLVKKSLNV +AIKGWRTLFVITGVITIFIGILIFLWIPDDPSKAR +EVQELLSRFGIPYITAPMEAEAQCAELLQLNLV +AAPQNVLNWIDQISVAGKIPPIESVLSKGNADCADDK +PEVAHLLLVEVCYCWMRSIDDNIGLYSRDHDLKGEE +IAELFQNDKK +MSKLGPLARSVKWTLSVGVIGSVFYLYRYSNNGYF +KKSPLKVPSRPQFKKRSSYYNQNMSAEMRKNRK +GSEILSLLKGASNASKRTFEVLNQLFKEFNEK +GKNVAAIILEPIQGEAGIVVPPADYFPKVSALCRK +TIETVEGGGIVVILLKSMSSLKQLYTMTMDVHARY +DNGKYFTTGGKESK +LAHQNVTFASSTTGAGAATAATAAANTSTNFTSTAVARPR +DGKPKHFCASCGGQGTLLRCAVSVDSRTGNVTPHLK +VSLIFRFYFNFILASFVQELLHHPKYLVDR +RDPKKGRTHKPKPSEKHKKNKTGKKGAQEKTHRSRSSR +MSEITLGKYLFERLKQVNVNTIFGLPGDFNLSL +VEHILRESKGAMTPQSKDINGY +EPSDDDHLMPQPKKEDINDSPDVEMTESDKVVK +DNLFFIGSPIGLLKLIQRTKIGDRPEFPNDLERKLTVQR +TVVDVSADTTNPHNPIPIYTVATVFNKPTVLVPTTAGPK +QLIEQYGENYKMTLNILHLDGSIKHSDVGLDNPTE +KGKAIALKNADK +MCKNEARLANELIEFVAATVTGIKNSPKENEQAF +WEVLTSLCVAIPTTLDLVETMLK +DSYYLGFDLSTQQLKCLAINQDLKIVHSETVEFEK +NIGIHVEGACPQIQQRVYDMFARVDKGLSEAIKK +HNSNESFILEIYRSKNTWGFIKAFSEAPETFV +GPLCPKKHVLPIFQNKIVCRHWLRGLCKKNDQCE +KKSQFVDQKINTVLSCYFSNVSSEVMPLSPFY +STIDGLEKNYDNKENQESEYESTKKLDNSLDASSE +DAKLEFNNQK +SIEDVFHLMKISKRAPKPSTLANYYENLVKVF +LIQRDLQEGDEPSYSLESSDTRSSLSLNNANVNHEK +KRIELTIEPSSVNIYADEDLVKSTSIQCAVKSIEDHGATL +RTRFPPEPNGYLHIGHSKAIMVNFGYAKYHNGTCYLR +TENIDLPPPLLSRFDLVYLVLDKVDEKNDRELAK +SPYERRLIDLIRNSGEKRARKVAKKRLGSFTRAK +DPELKYLGQKAFISYVRSIYVQKDKQVFKFDELPTEEF +LGSDILTSFTMVSRVSKGYQDIF +VGSSTSRNSDNVNSLNSSPKNLSSDPYLSHLVAPR +GTDIDSLLLGGSFNSRRGFLEKKILVYDKTLF +YIQESFDNNGLKLVKEMGYSV +NAEQNVSSTNLNNAPTNGALDDDVIPNAIVIKNIPFAIKKE +VCASAMKAIILGAQSIKCGNADVVVAGGCESMTNAPY +HKDNGYALSFSTLVKGRLLSGSDDHTVALWEVGSGGDPTKPVR +IVEENFVIDEKINLDLILPRMVPESDVINIK +KQLMYIIKSNTSKENIAVVIRNEDLKSDIPSVIQIKLLK +VLSSTSLDSNMLSGHGALSDTSSILTSTFLDSEPGVGK +TGCGEMDLFEILTAGSDKLISHIHDGQDGGTQDYFE +EKVGDDQESVENESGSDSESELLEFKNLDDIKEGE +HEANWVKLRSVTQESALDEFL +GIQILTRQFSAKSGEKSVQDGFASVVVALVMTAFGL +KQLPEDSNYIEKHYKELQVFLNEFLIKKLNK +NPNTCKFSMLALVPVFKSIIPGYRIRPLTETEKKEKVSK +NTCSDKKFKVIMSIGGWSDSENFKIIIKDDKLLQNFV +DNNERESLEIEYEKVEKALDAALNVSPFEYIKK +EIGYKYDDFSDIPVFQLMQEMYQLVKKNSSAR +KPTRHSSSLSSKSKSDSRRNSSLKRSSSASRTSSFKKSSF +FLKPLNHLQAAAKFYDNKLASDNVVRVCNVLKNIF +RHDAKNIVESQALSCRVRISPLL +QQIQEARSNGLDVRDDFTRYDEKGKVIFTYNPPDYEPE +YMPEQKITEIEDGQDGGVTPYSNESGLVNADLDVK +AVQYAKAMGYRVLGIDGGEGKEELFRSIGGEVFIDFTK +LPLPDPDISIRK +IRWFVGDTPTYTIHAKALHPDGNIGWRRISK +FTSLLHIHEFSWENVNPIPELRKMTWQNWNY +NYKGEYVMNK +EAATPVAIPTNNTNGGSSDAGSAATGGAPVVGTTAQPTINHR +QIASSSVESYTTNDENHSRKHLK +EDENVKYLKKTPRQVLNLDGLVPPSGRCITKAKR +NVITKLLRVPSRVIRYAGTKDRRAVTCQRVSISK +ALYGKLEQFYPRCEPPKFIPLTFLQDKEELSK +SWKVIDKIDFPKNSVVNEMRSSMIQINSKTKRKR +PVLEQQGTVITR +RTIKHIFHSQLPCVPFTSLLIR +SLERTLSGKGPEKELLVSMELDKIKTTIEKEQK +QGEDEKEDEK +IKQSFDFFLISNHDDVDLNTMLTLIDTVLFK +IPFALPLFTFVILNIDHFFAYQSDANFTKTK +SAITPFAAFGFLIWTLCKAKGHL +FDFELVSPFPK +YLHFNNVIGQLK +VFNVFNKTIDDFNGDLVEYNKYLEEVEDIIYKL +LCELLGYDNVFPLIINIKTKSNGGYQLCGSISIIKIE +LLQELKTKTDANFEKTLKDTVQNEKEYLHSLRL +AIVVDVEGTEAVEDEIEMLIENVKEDSMACGKIL +LFQSYTAGEKSHSMKTYKQVLSETASGRVSTATDWGTV +PSILTRYWPSILLCLLYGPSSVMSLWNSRYFIQDFIK +QVIFECSKFIEVNPGIAGRATNPE +FPKINSKLKDK +RQKLHSASLIYNSKTAATQDYDFIFENASKALEELSQIEPK +QQLSVVEWHPKNSTRVATATGSDNDPSILIWDLR +RVIRDTIFRLKPALAVILLER +RFSQAPVIIVALTASNSQMDKRK +ACVGSKCLPEDCHVQLSVVVDVKNTGKEKINKNK +AIIIFNCRLNKGLYVTSACVSRSVFRCCKQEPLIE +KQAYIDDDVLEALKENGSCGSRKVFVSCNHHIHHNCFK +SGASRFGAPVGFNPFGMASGVGNKPSEEPKKKQHKEK +LSRKQIDETQVLVSTPEKWDITTRNSNNLAIVELV +GPRVPLFRLER +SNGAMAKPFITSSKDFDHLELR +EFDNDQAHIKR +AAAYISAILEPHFK +ESKVANLSLSTVNPAPANRKPSKDSTLSNHLADNVPSTL +SDVSGVTQVTSNTNTPGNSDRERV +AKEAELEAKKAE +GTQFFDAKIEGYRDMDLTDILQMMGRAGRPAYDTTGTAIVY +GKPNSTVLATTAGALGLLTLDGIISK +AKLDTDFAYLYSDLDKGFTPINFVFPNLPLEHYR +LLNSPNLLSSSQNTISVANANSVK +QGVLPLTFANESDYDKISSGDVLETLNLVDMIAK +VIVAINNDPDAPIFNVADYGLQGDLYK +AILESVGIEIEDEKVSSVLSALEGK +HGLSFNFIDLYAGFQTFQETGK +IINANIGNPQQLQQKPLTYYR +MYEEALWPGWKPFDITAKEYVASDIVEFTVKPK +VINDAFGIEEGLMTTVHSMTATQK +SLMEDIGGSVGAYSSSQGVEGIRK +WFAGNLASGGAAGALSLLFVYSLDYARTRLAADSK +WEPLLDVLVQTKDEELRAAALSIIGTAVQNNLDSQNNFMK +FTNPIAIMRGMIELFMAQPFGGHSLLQTMFSTIL +FDGILGLGYDTISVDKVVPPFYNAIQQDLLDEKR +LNSHDQIIADEYQNTNVPNIYSLGDVVGKVELTPVAIAAGR +TCGSLAFMQAMIGHLKELEHRDDMIHYEPFGPK +TVLVYGHYDVQPAQLEDGWDTEPFK +IYRDYQDVDTFKIVSAWRGLTDMLLTPRSTGLLTEWL +KADIADADVFEK +NFTVTDMDIVAYGQMSLNPHRIHWDKEYSRY +LAIDNLRIIIYDSTANQTESSVSLPCYGIASKLIEFDTNV +TSNNEFYPAEQLTLEDVNENVLK +IPKKKRNRGKKKRENREKSTISKTKNSNVVIIEE +WLSTDLRDGNQSLPDPMSVEQK +EKFQHMQDCFRKYPEHYAEQLKETSDDEEPQDKVK +FLRELSPLWEMVQEGIDLNSIK +TTFDVLGSHSELDISVYDAAHDHMFLGQVRLY +LRELRKSIDSNAFSDLEIEQLAIAMLDELPEL +FSTEEEVDYVVK +YRTLRMIDNGIKPCYVFDGKPPDLKSHELTKR +SLGNVIDPLDVITGIKLDDLHAK +RAPHQVGKPIAK +GTSLARPVIAKAQIDVAKQEGCFAVSHGCTGKGNDQIR +DEPEEEDENEGDDEEDTYDSGLDETDRLEEGR +NEKEAAGEDSVEVMMGKLRSLYALGEWEELSK +CQDLPGVKYHVIRGAGDLSGVVNRISSRSKYGAKK +VIDRLLPYWQDVIAKDLLSGKTVMIAAHGNSLR +LLTLTNAANVPVENIWADIFAK +SRLKHFKDGGFNIAKRHAQRVAFGGQAGGQSSSPK +PIMFMIIIIVSLISLIVLFHDNDGCTVILVMSL +DSIVSLERTRSTKSNKRSSMNSQRRSLTDTLSIK +SKTYSTPKRPYESSRLDAELKLAGEFGLKNKK +LLQSASSNTCMVTNDGATILKSIPLDNPAAKVLVNISK +KELLLNKDLIHPSILLLTSHLAHYKIVGSIPR +GNVSGNTMVQGDLEVKDTDYYYAFILDNSSSKNAKK +IALREYINNCKKNTKKCLKLAYENKITDKEDL +DKKLVSEFALYYVQKEHLNSDDLNPTLNELLK +VFKFIDAFKNYPNVLGFFSGNEVINDQSDYAK +VSKKFGEDGLPKDTVVVNIEGSAGQSFGAFLASGITF +RRRIKNLNFK +HSHQAVNGSGPDLITDVKILRDRNGESRRFGFIGYRNEE +SNVPTTLSTLEFGDSIRQINNKVTDNTTGLNLKK +KVESLGSPSGATK +GVTTIQSVVESELEQSSLIATQNLVTYRIDKNDIQQSLSLAR +IDSKKSSTNDLHKELPREEERTFIETPEDNGGGF +LIETHLSFIGECKDLNVAQTFFDKALNDEMPYK +DAKGDCIPDYDQIALSDICDKANGETVSLEPLQL +HAEQIQSKIISISDFNTLANPSMEDMASKLQKLEY +KFYNWTFELCALGVLFLVYAFYKFGNSVNLK +FLKHSGAIDATAYSLFLNDESQSSGSILFGAVDHSK +KCKWKECPESCSSLFDLQRHLLKDHVSQDFK +SNVNNNLGPKELNTSYRNSTYIDMARFENSQSNLSSHR +EINGDDDEDEDDSDNVMSSDDENAPVATNANATTDQEGDIHL +MRQLWQDPELTQMLKAIVTMIYEPMVKIFKVARMDVALK +RNSKLLNTKSIQIDEETENSESIASSNTYKEER +SQEKSRDDQTDEGKTSTKKDRFPKFQLHKTKK +EAQLEILLLIKSSFIKGGINVKYTFPAIITNFWK +PMNSYYRLLSHQIAEYHNLNHVLARTQDSCVILF +SGSYVFKQGKIYKVPANEIEAISSPLMGIFEKR +NKLSQGSRLALLKSLSFSFFQLIKIHIRIGSARDCEFY +LWAFDHPLCQFDLPENIIRRIRDTKPSMEHLL +TESSTQSEIRQHFGNEDFSGELPKKLIQLKKLK +SKIDESHDDVNMSESLKEEEAEKAKEPLTKEDQIK +PFPQHDFIKVISHLEFDDLIMNNQPEYREVME +MSKGKVLLVLYEGGKHAEEQEKLLGCIENELGIRNF +IGKLNLVDLAGSENINRSGAENKRAQEAGLINKSLLTLGR +EFRHEDDEGIDQGQIVRVKAKELTALLSDDERL +KWDKATSYRDLLENIKNRIDILVTTPGKLLNLFSIR +SCPLAPAVASTYAPLLLLSQHSNHQEIDNTPQRLL +PTKKFLLTEQKGPKLPNLPNDANLSKAKNMGNLLQDPK +IIKALNAHKDGVNNLLWETPSTLVSSGADACIKRWNV +VARRSNSANVSSPESEKNKRQSKSSGKSNTSNDASNK +EAGCIGKIVANLGTVEDMRPPKDWNKDIKQFENSR +DEHNAPNSNSNKNIHNSIQNKDSSSSGNSHKRRSNGR +RYVINDAVVPIETCSTGPGFSCEINDFYDYAEK +WSLVTKNRRSSLTTVKYGADIHNELPGQITGFPTR +WGFLIQLSSLIGNSTLGKKSILYKGSVVSVLGFPPLIYMALK +SNIYAPSSLIRNFLTDPLMASDCQSYVTFPEVSK +QVEISLVNGAKNLVVSGPPQSLYGLNLTLRKAKAPSGL +NNVAMLARSSTTSQTTCSSSSSSSSYNSIKGNENDILLQNNNHF +FIKDGSLFLILLGWIISSLCDFIQELTLRYL +IGNNQLNKNPSFAMFWDSMGR +TSKGLKWIVDRGSDFPKEVIREIDSWGTDVRFRDDFSR +SKASHMHMYAWRTAEVSNNLHLQQEQKKKGNK +SYETHPAPYIAYRSFNAILGTLTVPIMFNTLKELNFR +KRKREARESHKISERAQKLTGWKGKQFAKKRYAEKV +DLTEFLTKVNVLKDGKFRPLGNKFFGMDSLKQLIK +IYFHTDAAQAYGK +FRLQLGWICTTALLFYFYDALILHSGFIEGYR +YDLLAHDLVLADFGLAAEYNTSKVNSLKEFVGTISY +LTKLYQIDGDQRSSSAAEGGAMESKYRIQMLNKALK +IPRNSTISTKKFEIFSTYADNQPGVLIQVFEGER +VVGFMLPLLYAK +GEEGYIPGEEEAWVRNNTSTLAQIESNVLEDFEFPK +IDSPDKKDNEQCYLLGHSLGELTCLSVNSLFSL +LAGYLRGLIPSNDVEVMRLAAKTLGKLAVPGGTYTSDFVE +LKSITTGSTPSFIDLLLNVAQDIDSNDLSEHDSWLQQF +GIPVMAHIGLTPQK +PSSAVSLNMALLARTNSATLPSSESSPASPDLKLSR +GCNYYQTIIEGPSADLHSGIFGGVVAEPMIDLMQVLGSLVDSK +TMTIFKSGWKWPDHWKKGESITATSVGTYPIGL +NEPRNFDGSEVEASGNSDVESRSSGSRSSDVPYGLRENY +RENREKSTISKTKNSNVVIIEEAGKEVLKQRKKK +FLTKLREAELLEQMVPSVLACLEYRHAYVRKY +WVLAYGGVALVIGCWTYGYNIIKNLGNKMILQSPSR +SDLLGIFSTSNALLDALVMVQFWEQPAVTAEDKDEF +NSQPSDTIRKRTAGDDGALDQTENTSISPKKRRTEDHTK +RIWNELYKVIDSSDVVIHVLDARDPLGTRCKSV +KHKISYKLAKNGQEAVNIWKEGGLHLIFMDLQL +TKPLTVDTKFKANHPQSEDSKVGSNTPRSPLVSYTPSL +EERVRELEAENKRLLALCDIKEQQISLVSQSR +SVKRRGVFQKAVDAREQRISDKL +NVLLLGSGFVAQPVIDTLAANDDINVTVACRTLANAQALAK +QLHVEQLSGGQK +MSTSLLFEQLNFLILVAAEAE +SKILKIPGLCTVLETF +GEKFTDDVAKKGTNGDLTRR +TLPVLPEARKKGDLLEDE +MTVSSYQILKEYAGETLRML +KLIFDAKASNSVIK +KQQKERNKEGRSPSRVAPLV +EIDLVLDHIHFSLDV +FLALFSRDQDFNVRMWK +FMCGKRVSLYAKSVNK +PFSIIDGLSTKSLYALIQE +TNNSKTTESSSSSSAAKEK +ETGQYEVLETDGSRAEYAIK +HVIDTFHLAEK +AEGDRSIVYILSNPKKNYYK +TRKYIPKKRSGGYAILLSL +VVMACVWNSTLAYIGSQCVQL +TFQYQETESETSSSGLSDSE +VLSHNSSIDESLDAATQNTKK +SRLPCLKNICVSPKLGWNMK +DNERVGLQELGPQFTLKLKR +GLRSGTLAPPLVAGFGEAARLMK +AVSTVLYMIALQEFTSAPFRV +NQILFLKNQTLNEQLSHV +NEIIVNTPR +DYPIEVDEELLQLFLNNFV +HGTQTLKNSNFL +NDVGKEENAEKTIE +VDDMILFSKDLNSNKR +LEIMVIISYLKYVNLPCSF +QKSGRKQEQKKAR +AFFSIAYLNGLLTIPR +AKAKILAIVKEETK +RKLFKCPKCLVDLETSNK +NAIVKFLLKWSKIFKYE +QATNSFSLRVTMVR +IPVIASSGAGVPEHF +LNFELLGGITGTTR +IERIGKPILQNLNNYYSKK +ELSENLLVECRKLQSSNEAK +RIETKAKKRKAKEDFIDQE +NGHHDLMGGVIISKTPEIASK +LKENDNNNAKPVYCR +NEWQLTIRGLSRIIINIMK +VLVIGGGDGGVLRE +EMYACDLLWNGCKCAFCSK +EAIVNTHHHYDHADGNADILK +WEIRQLIASGAASIDDYPELK +EVYLLLYIGGNDQDPYIIMK +HDFITPNSNTSTRGTTSLLPK +LRKNNYDSIRTYKRHK +NFISHYLLYLNNTQLAIF +GPKIDDSPQDEVNSIKGKPADK +IREISTPCLLPDFSKIKSIR +NIPTIERSPNVYVSLSITGLR +QEMAKKFAKANCILVEPTWF +KISFNNSDNLQLK +IQEKLQKDDFIKVSTAATHE +GETVKAANGFQLISTVRINE +MKDKLKGTKSLIIR +LIELAKASKESLK +PIFDLSRLERKYSIPIR +KVQIPSSKK +ISYPLGSQASLCIKELNGR +YFDNKVVCDLIEARRPPGIF +LTRRADVKTATVKINKKLNK +KVGTKPAESDKKEEEKSAETK +KKTSSDLGIFGHRYR +IQDPKQLLFAVYGLLLHE +KDMYGNHSFILK +GLLFSSLFLDGLTNATQDKLLK +QGQDDGKK +PGVVPSDYRASALNRLETEPL +EALAPYLPYINK +NIIRDAHHAKQAKRAPPSSPY +QGDAELINSIPDFY +HGMQYNPPNPTIESALFK +SNGNIEIWNPRNNWFQEMV +RTLLERFQRE +KKISNIFNKEILLK +TAILRFNSERLTIISTPK +IELSWLQEVVTNAAAVAKQKV +AIQDLNGTVFQNQKLF +INELELVTDLYRRHINEL +QGLNTWMQSVAGHPLL +IAELEEEISTKNSQLIAKEGK +EISEKFDKAAELFKATAKK +ITRLIADPINRLR +EDKAAYLNDINSTESNYDPK +SRVGEVEQNNRVL +QLSSLFLDGLEKAAF +SAATLIHSTELHNR +KPDYWKKMPPDDLYIMEK +RQKKFNISEGDITKLIE +LSSFILKNPPDSVSGSKKK +KDLKSGISGSRIKK +WFNSVKATVLTNAYEFTGYE +AVAIACGVAIPLGVIL +SEIRILDSSVLQSENSLFLGE +IRGTILVSLSSAEGSDVLYMQK +NKVDAAVEKLQDK +PQMIKNDSTAEKLVGDSR +NVRKRRSQCIGAKPK +NLFSDFLSYQK +GNISIVDALLDYGADPFIANK +IKSLEGHKPLLKPSQKILNPE +EVEETDPLCQRLR +KIEKMSTIVQLCK +EAIFSTLSGLFK +RTISRSIQNK +VQLPIALVILRLR +TWENDNGEQEVAQGYR +EVDSSVITAADELKARPKRYV +FKMDVNIIWLWF +QSKCGRKMSLQME +KSRNLARRPASSDSLLK +QGHNHGTVYFPR +AMKDDKIAMRGAESISEDMKK +NINAEKLKRSLK +TSTATGCLNLFRCIL +ELLLNKDLIHPSILLLTSHL +RTDLGGADASNAY +INQKGEKKDVSGK +ANSKENRRLRK +AICSGVFAHLIGLQNQDWVKE +GKARLLRGKQRTKKSYHKTV +IALQMPEGLLIY +LLNDIIPFELFPY +KKICQLVK +IDTISDFIK +NNSQGEFEDDDENTISK +LKDGKLIQGKIAK +ENKGRIAGIKPK +TDIQKMLKSYHQR +KVSLLSLK +KNSFKARIYKDSKDSKDK +ILIPKGCDSIGLIKTVDER +VNGDVEGLLDPR +VLRLLNNSLPIE +GLNLCSYICDNRVLKFYKIK +FLMPQTVIDGKK +YGCTVTHLTPAMGQLL +FRPLPNR +LIGEDK +ELKDKQAE +LTEKGFDR +IILDEVIK +AKSVNPER +TVIPAK +LASIIIR +ESVIASGLK +LLSSPLR +EILTDNNK +IFSGVKSPK +IVQDDILK +RYDFLR +GGNNLIK +LSTEIRK +RNKSIPR +ERNTLR +NRDLLR +IRDIIR +LSQSKRK +SLVLK +ERSKIR +QDVEGK +KVVALK +QKDKLR +KKDQLR +LNSIIE +LNSLLE +LNSILE +ISNINK +NLSINK +ISNILE +EEIELR +AKSKYMMK +LLALVDK +LHSALVSK +IADFAK +QLNGGELK +KASKRKLR +KAKDKK +KAGADEK +LISLNK +SLVSR +GKILIDGIDEMVAPLTEKEK +FAAYNVLEDPELR +MYNYGHIISPR +VNTIESAPNVSSAK +SMIEYLEATGR +SLFNKRSLSNPNE +EGSIKTPDLGGK +MLNGLGGSADFLR +PAYIDELIKDAKE +GILETDLLLSGFAAK +MKQIAEDYLGTK +AVDANLREGSIKTPDLGGK +LLKDSDGDILR +WLTGVELADMYHSLMK +AIESLVKDFLK +ELVKNAIEEELAK +KVNVFNINNNR +AIQIPAVSSDESLR +GDDGAHSINEKLDISNFVGGMK +IDSLKPQFFSR +WGVTDLDEAKLTIFQQVDAPK +IEEAKRSLARANK +LYEMEVQRLKSEIDTLK +SLDSLFDFIK +VKEDLWNEFLSSINEK +EVVDKLTELQK +KSHLGMGSENVGIK +NKLTGSAAILGNITKSQK +YGILSIDDLIHEIITVGPHFK +TFTYGNLPLVDTLK +LSNPITAVITGSK +QDLSQSIVLK +EAKNDLGVLKR +NVQARAKEEAQKIGKSSRIAR +ESDEIGGYFIVNGIEK +NTVIAIVSAPSVYAAIQKK +EFNNAVQKLSEFNEIHLSDV +QLFQYLNEYDMFAAEESAK +SNVLSQSDGLFR +SNKFEMWALSSPR +AYGVSKEDLVDNLKVWLELR +FSSDKLNRSQK +LNQKPVNSVVK +INHTHGEHAVKPRQLFPIPL +SSSIDPRGIKAQKVK +FGSDPSKK +TGDQVSVRGRLLSLKFFKVLK +VCIGCFCIGTNQVDLDYATSR +VKFFEDPESAAAKLANREGK +QIESEGGNLKKKTENK +TEKVDNAKKNDNKSKGAQKR +FPGKEIIPFVENLKPDERF +SSTSQQITSSYDVIWFKQSV +LKAIELGTRLFKSGEYLQAK +VQEVINQIKDFYNKSGRV +IALVGLIDAENDDSLAPIDEKK +IDGAIDFAKLAKLTPGFVGADLK +VKPLPELQKVTSNAAPTNFDE +VSSDLKRCRQTTALVLKHSK +IARYKAFKDFEKRICVSTDV +DANVGVYDRLKSDCREGAVSGK +MEAARENFPAGLVSEYLHK +MKNIISLVSKKKAASKNEDK +RKSNLLFQVLKGPQHLECQK +TPEHIAKVRAEREVMRK +KKRKQIENADLPPKKEIK +EQDLHFENAKVIDLDTKLK +AGPSSVGGAGVSTPHSTKINKPRK +YNAQGATIERSVTDR +LCFLDTLGCGLAALK +WSEISKDIYIPRSSSNITLE +MVDVEEKSQEVEYVDPTVNR +NVERTELANAPAYTTTLK +INLCFYDGILEEGEKTIR +NYADFISAEFNKPDGTVAEAK +PSGGKLLPGAGATEIELISRITK +RDRKSLKDEIDNVPCAQNR +ISTLQVKLYGREGSSARTIK +QQVAEGAAHHKLKFEPTQEIV +YIGDVLASVHSIIANEADFV +IGRGTILRLFLKDDQLEYLE +AKHRFCVEDFKYKLR +KKAYCRVYLERELSLKKTY +GILMEVLQNCVDEGDLLIDK +SFGAAGGYIAADQWIIDRL +SISSLQANQINWNRVFNL +TKITEYSAALKALKEQY +AKIEEKPESEPAKR +YNYRLFYIVHNLVNVAFIL +KLAPSLDAIYDVTIGYSPALR +LTGWNAIKSRVDQLNLNL +RLQDDNALLESL +IWKLIKEKLILPYLDVDLK +IISKQKYLLKKAIRNF +QKIYAEKIQTESNK +KSLRIEFVNEPGIDAGGLRK +AVSLTKNAMEIASSSSNGVR +LPNLFNEISTIDNEITNAK +YNTIQDIR +KILPVFAQLFEDTENYPDV +NSNSDLIAAKDAFLVSVLR +SIVSLKEANLVKRIFHSWKK +AVSLVKNWKFIERNSIPVQK +INEDHRAEPQYK +ISQEESIYAGGVLADEMGMGK +NLGIPESFLISIAKKNIKL +DLWLSILPTKPASVSPDDSFF +SETPASTKNFSAPNVSSSSNSL +NGFVTISTIHGAKGLEWPV +LPRIELLIEIYK +LPANNSTTNGGTDGIAVPV +GMARTGSGKTAAFILPMVEK +AGLLTETYLEAQFVRQHK +KCDHTPNMTSWSPIIF +ASSHDASNTSMKTLGDSSSQASL +LNSKQGLKHIWIAKHLSQLE +KNLASGTSVIEVNPGNCNEF +QTIVGIYIGQICLLGLFAVGK +WPGWKPFDITAK +MNQNLKNTSWADRIGSDDQE +KQKEEKKLLERRR +EKITKFQK +ISPYTHKKFDSTKLVEV +KEYMEIEQEPYNEHK +RIPSFLMSNILDVLHV +PEEEALETESTQLVSREHGR +GLEEVSQPEPNTANDSSTEY +NLDRENKEKHLNKLQQV +EIKVDWYMSPDDLNQYEK +PLDNYMDFVYQYGKKVPK +VFGWARFNKDGNVEVQKR +NIIENYLLNVAVEAQCRYDF +LLLKALDHVFFRSKSGTKER +EDAVVKLGELRR +ASFLNELVK +MQKPTLARKKIGKVFKQTKY +KVQNGLLDK +PADNSIGLFSPEQWEKYK +QLNASLADKSYIEGTAVSQADV +RDNNSKKAKKTHK +LSDNPLELDAAAGVGIATGLASR +PKFQEIECKCILDLGHFK +LMMDIISGETK +ALDGQNLKDLLVNF +PLSRTRNLLSLLRDQPR +SPLYGRSDGGNAVGVVAFDVRLV +EKIILPYITAKLDEILEK +LGNDSILLRKLLCVKYHIHL +TLAKLVATKSHRLWIVQPPE +EKLKNKNIK +EPEEEALETESTQLVSR +LSIIGVIQGIWSLTSSCV +KQVEEKKVLLGRPGNNLKAGIV +HDFSIPEFQKAGDIIETVLK +AWSQPTDSGGKLASKYNGIMHK +KDEEIVDYIKPLFK +TISLTNEDIYDSLSIF +LKLDTIDFQYTGHLHKSIL +ITKALCYAIIVASIGSIQFGY +DSLYSGQVFLSIFALFVSL +NKIDSEETLHR +KEVIPLENEDLK +LTKLVFLSVARNKLEYIPPE +NILFQFHNFANIYFLILL +LLWIVKLINDKSNNQGGFIK +ELPLRHPQLFK +LLEESNNLQCQVETEHSSSR +EIVQTNRDVLK +CHDDLQRLKKTGILDKE +ATPPVQLINSLDVALK +QEPFIGSKTETALL +GALIWLVPEDINEVRAR +YEKILKITELQR +ENPVERRGNKGALLNQFIK +EQGNINSELSSFK +LIGTHKLIVLGIYTFFLKY +CNKIPVSQR +KGDLWASAAK +VLKYGSFIVDALVDYK +FGFDLVCRAHMVVEDGYEF +EEDQTAQRLNDANLNKKGSGGIMTNDLKVYRKTEVVLGTIDDLK +NYGYNLAESVNFALEEWLPIGKKAGK +MDLSFTTKSVKINGQNHRILLQNENGPCALLAL +RENILQFPKKSRESDHPRKKEMRGKKPR +NLEKVLVGAEKKAESRIKERWEPEKTNFQYGVK +GYLATKSSHLNQPFKSVLNFFANNNVQLVVRL +FRTGAMDRKRSFEKIVVSVMVGKNVQKF +TSINAPFSHTPGFHHLLVYLKHRFNQQDLVKMCRSIAEFR +QIPQPEFVKNPMNLNTNSLQFKSTGWLNTEKIYY +HYTTQFVYQIHKILGSADCF +LFFKENYPASTTILFDLNGF +DDHPVVVPNCVAVPKKWLDLENSE +NPARCSLRARKFCRLFSSFFQFHYL +NALHINNCSENEKKKLLYDIILHQHELYPEVAR +YETVYSVKIDVESRVYTGSCRNKVAIYDK +MGVPYAIVKGKARLGTLVNQKTSAVAALTEVRAEDE +KWKKYWQYKAGIPIGLKRSQLDEFKNKYLK +DNLRLIDKSEDVGPIASTVPDSGGVVFVPAFSGLF +NVVIMGDSAGGNAVLNIVLYLRKCHREIY +DELMDFFQKRGSDSRVIIFTELRESALE +VHDKIWCCRSGSAADTQAIADIVQYHLE +DLLFSDSPSSKALPSIHVPTIDSSPLSEAKYHAHDR +SCGYGNLEQHLNLGTLIQNLIHHGYSQDVYL +KPEDIDVVIPVPDTARTCALECANVLGKPYREGFVKNRYVGR +VNERNTVLWPCRCFAICEDCRISLGLR +TQLANDNLLVLNPDVLFSATSV +VLNVRTGYRGVLPRVAWEKSLQKQQSSKVTKRK +QAFDDAIAELDTLSEESYKDSTLIMQLLR +KKGENSKKELKAKLEVNKVFNESGYLQNDAYFK +VGQNGIGKSTLLRALSRRELNVPKHVSILHVEQELRGDDTK +PNTPAIKSDDEVNARSFTAVELAKHLKALTIQTK +GTEMNIEEVDSSLDVILQTLIANNNKNK +QLGLGTNIYNAERLGLGGGGDMPGSELADF +KDEKFAAWIEDKVTSPNSMVDRVTPRCTDKERK +SIMNFLVYHRVLIDKIRDSLGLSNNSFIITGSAPISKDTLL +LDLFTIREEIGTVNGITVTFMGDLKHGRTVHSLCR +RDAIQLAGKEKDIPGLKEIYNIIPPNEPELK +KLNSKSSSGGFNPFTSPSPNKHLQNDNDK +KSQDKQNQHRKRIRYCIFQTTVKAFLKCL +LGLKPEDLYISQIWTGSDGFWR +QDNPDAWQKADQILQFSTNPQSKFIALSILDKLITR +AHIIVADLKPVSDENELLRLAYIFSKALKK +NSSPIVDKKSSKKSRSKRRSVSAKEAEIFTETV +IALNCLQLLVLMTWPLIVTEQSSSNQITLYGE +KVFQEVISSRAKCLHRTRLECHLKKKDSNSSIV +MRQIQLWKSKGKITTNMSGNEAMRLMNIEKCRWEIFAASR +IDKEKLQLKQKEKEHEAK +DRGTTTAGNASQVSDGVAGVLLARRSVANQLNLPVLGRYIDF +ILPVLGTMPSLFGLTITTWILSNISDKPLEPVEGK +ALYETESYQAGQFTVMEPSAGMFIIIKINWGNF +VEEQEQQQQQIIKIRITL +GIEKSINETMVKVPMGCDVSLSHY +KENSTIQSSSSSNLRNFKGFKAVESDPVV +SSYISDALIHGNAATQQPQYSQPVYINNNPSLQV +RTWSAYHQWKQDPKNKDK +FKLNIFGSSSSSNNNSNSLGCEPIQTENSSSQKMFK +SEEELSNANGAFETSYIDALADPKICLRDIPF +NSSNNTLTIQTTKKNQSPQNFKVIKCTFIK +SKNEFFQPFIEFLAMFKKCAKENIEKEEMER +LIPLKVVPSTGKDQHADKDKLKLVPTLDYSK +NRHRHLKISAEQDLSQDSIGLTGGISGYL +AAAEYEKGEYETAISTLNDAVEQGREMRADY +LAPISISEKAASNLTRNLHNNAIPLTFPFIGGEDHR +KLEEVLQNSRYIGIVLEYACGGEFYKYIQKK +KGVTDPEKKRKIIGNTFIHVFEREAEKIKPK +PLHSRDPRKFQHQGFGTLLMEEAERIAKEEHGSEK +QDAKFLSGVPTKTFSEKVENWGVKRF +GSRGDGTGVGDNVVNQLLAKMDGVDQLNNILV +ERAINSSRRNTYVDGRQDTVRLVSRDNEIEVDSKHLVR +NTKLSISDQVKRLSNSIDILDLSK +LSSLIIPPSKPILQTVLPLGLFQFV +WSQYDKICQSIAKQKKK +NVGGDNIDIGANPSAEGGDDDVEEGAEMVNNVVHSFR +ILRDAQKYQFEADEEDNQMEIDLY +DLNFKDGSVWSKTPPEIKPYKINAKSMQAMPSGSDR +DGLDMSAIREVKYLQEMQHPNVIELIDIFMAYDNLNLVLE +LFQFKLLQSNSKLASTLEKISSSNKDLEDEKMK +KILKINDHITNQTKFAASNE +QAKFDVNTPQQVNDKVVDLVYDEKYWFAINIK +FTDMQLELCSRVKVFWNTGVPPTKTFNE +FETDETKLHQDVMAVKDDCTNPIFCGELR +AIIDGRQLWDTDLSVHTSPHGPIGSTSTSGNGMR +ESILLLCTTHAGREYLRDKSVYPLVR +EKFSSKSTRKPSTSLEEEGPPIGLPSIPVLR +LHKDIDNPLHIVGFLASWQDYLHMISNGK +KKLSLAVENSDSLQRTDVSEGCSEVNGSEATTSADVK +VLQDSGLEKKDVDDIVLVGGSTR +LTQEEIDRMVEEAEKFASEDASIK +FLILLGWIISSLCDFIQELTLRYLKKNYLEVGR +HRELASGLSFPVGFKNGTDGTLNVAVDACQAAAHSHHFMGVTK +ERPKAMGLQSSKDGNSEKKPTKENSKNKMFR +QESVEAYLVSLFEDTNLAAIHAKRVTIQKKDIK +LLQTPIDMSLKPNDAESEKEVIDTILALVK +VPESPRYLVEVGKIEEAKRSLAR +YTGLVKKTISVKLKRPPFNSIENLHIVSYYSVKDIK +VSATDKGTGKSESITITNDKGR +IALVGPNGVGKSTLLKIMTGEL +KVDQNDGEVDTVNKFNIINMLFSICDNSGLIDK +NIKETRLSLKDEKEKVK +QLKADIKDAQRDGLHDSNKQAQAENCRQKFLKLIQDYR +AYEKWSDTSFGMVLQRFAYEIRRFLE +YCFASLLLLSAGFSPSNSSSDSNASSSSETSSCSSSF +TGSELMDRMREQSTKFGTEIITETVSKVDLSSK +PIYELLMSCPRLSHLSLTAVPSFLRPDITMYCR +LKEIEERFEQNDKHYKLNLTQEAKDFLAKYGY +DHAESEYGAIYSVSGPVVIAENMIGCAMYELVK +GANHGGNLMTNQFMSGGIQEDDGDSTNNDTIK +LQHKETNHLEIALGSIEGAQK +VKKEDNKYAIAGNSTTNSDVSLLLQR +YGPNSPLKLDEENIHLNISLNSSTKRRLQIAYPSLQK +LHPLEADCFMKQLLHGVKFMHDHGIAHCDL +PDLIQRYSTGSSTNNNTTIRE +PKKQSTAYTNVPVIFSGEK +REESAHEKSKLLPRKTKSALSLKATLNATTK +KINLKKGETTVKKKRAASPATVPQYR +IVKRKEKKANDELTSLAEKIRAKALENQKK +NVKIIVDGLLQYILSPKNLAEPQIK +EPLLELAR +INKPKMCR +EGKQSLIK +EDLDK +EHLIKR +EHILKR +KLSGVK +ENNDK +NAPRQLAF +QNNPELK +KDLDPNIK +QLDLVKVK +QDNNK +SAIFIK +TVEALTGAK +VLQNNYL +NIVDLSK +EKESSPK +LEAKISK +LYDECLY +NQIGLK +NQLGIK +NAQILTIK +QLQKLLK +FKNKYLK +QSVISPK +MEKEIYK +ELREKFV +KIFPDLK +AESKASTGDNVKPIDILEEIFGEKNDIAQVPK +QLEAAKIEAEAANE +RAFKCYFKAFDLDAGDYTAAKYITETYASK +MDTRVGEAEKGPDFDAGDLVIEFKEKDTENMGYR +VVSNSRSPSPQGNTL +VYSMDNKQSLLVVATAER +QSQLPKNTTSSKSGTRSISKSSKKSANGR +RLPGSYYKIADSMIRFHTENADDQDR +NTPASRRDIVASFMSRAGSASRTASLQTLASLNE +EANLFPEQQTKEIK +LIIIIFSAWFF +TRDLFLQLNKLSSLMSR +QMWCQQASVVDEITGANLWRR +DYRDQGIK +GLSAVAQAESMKFK +LYTPSVDEKVFKNVDEIISQIAK +NSFKTSK +SPSRLSALQKSPELR +LYAQPKNNKDLSGAQLKRKEKIELFQRNK +EEKAPFDIPLDEFFTELEK +QAAKVTGGRWKDRRRMKMKLEGKTVSRKRKANTTGDE +NNFTTPLRKRSTRVINDDSMPITGEVLEER +NNTHNITTTKKDRQCFAEKYGRCQEVL +GGQELEHIAISTNGRIVPRFQDLSKDKLGTCSRIYEQEFGTTK +IRCDEVDQQTKKCSNCIKFQLPCTFKHRDEILKKKRK +KSHHVKHIINESDSDTEVEAKPKEKADESLPK +VGINFEALIMGHDDWISSLQWHE +SPLENAIRSLQVKIQELYGLENMCNK +ESSIFFKDMVNVEKLKRLR +SLISESPQNVRNDEDLTTRY +QRPLPANSQLVNRSVLKGSVTPANISSQKK +YLPQDENSGKYLPSSELPFELNFNYL +NHNSAPQLTVPEPSKPCRL +GISSVVGSQLLRIK +QKQNWLIKHFFNLDEIPSVYNDLLLLY +KKKKTRKDDLSSDMKGPIMGIY +SRRHAPNIWNTKMFTGKSDKSKEMPINFRSIHILSYK +VDVIDVSCIIGEAIRR +FLREVFVDGEANWPLPV +PLSLPQRFFSCIFHPLLLIFFTSVILTIWGSF +DQFKIKHYNESSELSQNNTEIDKLSEPVDITIK +EKRRKEEARLEAKRRK +RAGFQTVKLQGSMSPTQRDETIK +EKGGSFYLQSKVYRAAERLKWELAQRE +ENSSNSLAPLHESLTSLILDLISVKDR +NLLNMLTPQLEIVRAKELSL +GVSKLLLFTCYNVKLNGFEKLETALERSKRENR +MSSAPLLQRTPGKKIALPTRV +DMQTHESLEIMGNTLLEEFKDIKMV +HNLVQAIITTERLTL +NFDLEPTVNKRDYSNQENL +NPVIDTQIANEFNTQQGIK +MDHGAKEVIAIVTHGIFSGSAREKLINSR +PQLPSLDNSKITFAKSWLSKQTQPLSEVYGVLENRV +FEQKVPIPAYLIGIASGDLSSAPIGPRSTVYTEPFRLK +HLPELGTMPGIFGLSIATWILTK +YNKLSDKEKQK +KPGNSMKIINDTLIK +EEIAIKDMNQDMDDVEKGGDTAYDKQLK +EIKNLKGGHLLLMLGIPIAY +ERTNGLEAAKLIREWLRDSPGLRELVLIIKQFLHSRR +VDDFEEVDSEDEEGEDEEDEDEDEK +KRWGFDPNKSFVVPQE +IVDKVPVGKSFFGK +MPGNLSFKDRVVVITGAGGGLGKVYALAYASRGAK +WATAALGGTVASLIQVAATLCEWSFVPRK +QYLVKQDEVIDSQFFYKEYFKFVEK +KKPKSYDKLTLMIYISLVGFCLSFGWFITLEFPV +GSIFHRVIKDFMCQFGDFTNFNGTGGE +KDLDDLNFDTVTSNINKTVSDLGGHESTNDGTAVMNR +NFERLISKSSVIAPLVNKNITSSGPLIGFQR +PAFTRSASPKSAEAASSSTVSRPSVPPPSYEPAASQY +DCECEFQNLEHNEKAELKKKK +SVILPTKQKSAPINKDSKHSSTQYE +TQRFLVVENAVGNISRQEAVSMIPPIVLEV +RIRQQIKRRLSTGSIEKNSSNNVSDRK +LNVLFNTNFDTMDAQVKRQQTTKGIWLAHTK +LGRRAQKYLKELRNLQLKPLKIGGYE +GPSMSTTDLTLKHINILADSAYVYFIIKKTYPQE +LSLGISSLK +RIMQTSHGMKRGSVYHVPLNPVQATAVRDALAK +QLTITSGKNIEKDYFPLRNSSASLDGTGALL +EVIIMSTVCDHCGYKSNEVKTGGAIPDKGRRITL +FYKMLEVRNVNGWVALRFLDNREDDQLLK +NNKNEENCGKTEILNKLK +ASGDVHTLVSGTPDLSNFNLDNEPLENILAVFIISF +QTPNTFTSQPNITVENDFHKGGRHVIDYLNK +SFGSQLGGNK +AAGSLFCLGTALNLLAQLK +SNNTILTFLHKDSECALENVISNTR +ASALSNGVSGNVMSNSNIVGHGAVGSASGWKVEMGGSDELER +LNCECIRKINLKNFGKNEYAVRMRAFVNEEK +HYTSKIAKFQDVAKVQTLGFRGE +KNQSYLNK +PWNSTFTSTSTELTTVTGTNGVR +AYSQLKKLIYSLQKDKLYSNNK +YSVKSNVPNIESKIFNNWKDCQAYVKHKR +NSLHILYVCAVLSSMIIEYLIGIDKFRFKSMNLIHKLQF +FLQCQGIFHASTIVLFVCAPLNALMNYLL +IEKVTEKTNALYAIK +IHSIEVQSLPEFFTNRIPSKTPEVYMR +ERGALTVGIVNSVGSSISRVTHCGVHINAGPEIGVASTK +LTSEIMEKLDPNNIDIEAIEIL +IIVDLPPEEALKVRNYINDNGLSLIPLVAPSTTDER +TKGKKSGLVDTNCFLVQKEDQEEALSDNEPESSE +EQGLIIISEKE +AMTLYETFNSLEGIECQKPQGAMYLFPKIDLPFKAV +VNWKNISKLLYNSDELLMY +KLASISLCPVVTGQALVDLMVR +EMIMWLSVILSLIQGSLHWKKYVKLL +KRPRLAASNLEDLVKATNEDITKYEEKQVL +ILGDPAFAQEKFLLNIFYAF +KNGKVIESEEARMHSVSVKMVLPWEIQHR +ANTPSEIPDAHKAEQEDIIEKTESVDKK +VGPKVTKVKVGDHVVVDAASSCADL +KMNTTESTSLPSGYASSADRDRRTSDGNFEAMAKQQASTR +TLINQSIDSQRV +IFGMDIPVSVADIFFQVFVRFRFQLMTTLPLVE +NPTETRIETQTLYFTDLTNGKCGLIQLLYSSVMGGIYKGF +CMSRHFRSLSTECNKTGIKTLLV +GLSNIFDYRKQLHTFCGSLYFAAPELLK +CSRCGSVTRAGNIISSDKTIVPTSIQTK +YSFLGNIWERLNYNGKRIIFSKAQLSIIFLV +FGVCRREASLEAPVGFDVYGYGIR +TRCDGKRPQCSQCAAVGFECR +TTAMDIWSCGCILAEMVSGKPLFPGR +NISAPLDKIPLFIEGGHIITMKDKYR +MVHIDQHEHEREHSNCGSPIMLSSSSF +VEKIKKINYHQYISKAQNDQWSIQME +KLRKLQAARNGTSIDDYEGDESDGDR +HINAFWYNCSTGNLMLIGTFAALLYVTSATK +NVVSPPFFPEKELNNRLHQSQGKEALFRLVE +LPISTLKPTVVTGTSRNSTFSMVSSTK +GEIAVRIIKTLKKLGIRSVAVYSDPDKYSQHVTDADVSVPL +YTFYRHQLKCLTFKPPGNEIYRDGKLSV +AIAKKLSPSIIFVDEIDSIMGSRNNENENESSRR +FDLTNVTCKGLHGPHCGTYVMEVVGQNGTFL +TVQESLREVHSKFTDTLSGKLNFSIPQR +QESPDAAFETGFRKQNSPTTY +GISLNPIYAGSSAVATVSENGKILATPVLDE +QVLGNKQTK +VLSIGRQTGTVDLLDPTSNRTIK +IGTLNDSDQSAVHNGTENGSDFRKITPTEE +EHLGSDRWFIREATILALGAMAEGGMKY +VLADSKLDKSQIDEIVLVGGSTR +LSDDDVLDSALINTEVQKPISEL +PLKSGASFSDLVKLLSNRPPSR +YGSEKPHISQDDLNDVVDTVLRKFADY +QVKALGIMALLDEGETDWKVIAIDINDPL +PEGGGQPSDSGFLKIVEGNRNSSK +KRKVVDEEVIEKKKSKKHKKDKKDKKE +SYLNLVNHTLYMEQVGTGDIAFNGDSALGMMDK +LKTLPTLEFEAFTNVFDNEDGDSEASSQGNVYL +VFATIFPKDDLLLTFKKRDPITGEVFE +VFGYENFGNTCYCNSVLQCLYNLSSLRENILQFPKKSR +PQEPVKAEEAEQPKTDYKKIGNPLPGMHIEADNE +VPRRPNEPGKGMKWRISESY +TMHFCLKYQRKNEFKRLAEML +KRVDWFVNNRPEIFDRNIASMSKKGVGERLL +VEPIAEQKHDTVSHAQVNGNRIALTAGEKQEPGR +NYLTISKQDALSCPQLHSRVAGGYLKPVKEKLF +EATFSNLQKIHPLTENSTCNGYVIYDK +ILPISDELFTVLTKILQL +AEVAEAADVALNKFNFLR +NLSASGASADVAYQSTVVNIPYK +HANEVGLLSITQVKEFNK +AQYNEIQGWDHLSLLPTFGAK +IGQEVDGEAVGDEFKGYVFK +LNNVFVIGEQGKPYISLPK +TSEFLHETLEESNLITYNTIENAEKK +DSKVNQNLLEDHSFINYK +AALNDPAKAPILINNLLDSGIR +VREFLIENFPDIINIMDLDDAVKR +IPIVPVVVSNTSTLVSPK +VLLDSKDVQQIDYKLESFQAVYNK +IAMKEAGSSAELMYPR +SLTIGLIPGDGIGKEVIPAGK +TWGRPITKEEMINDSGAKVPESFLPIYNR +FEKCLINSFLNLEKLIFLTIICKSY +QNDITDGKDYHTLANNVESK +GVIGVIAGGGRVDKPLLK +ESDDGEVEYVADDGEGEYVDVDDLEK +GVSAQNVSNTKAVTGKRVEGTSYSGL +IAGVVYHPSNNELVR +FKYAPGTIVLYAER +GLKNVFDEAIVAALEPPVIKK +KTELIFVDDNSQDGSVEEVDALAHQGYNVR +GDLLPELCLQDCQDLCDGDLNK +AVLTDFESILIEFHK +KKKIELYMDSAKEPLNSQQFKGMLEEGHK +TDQIVQKSVGHNNSSSSKNEKTKQR +VKDLDFKLGSPSFPLDNYMDFVYQYGK +IGDIEKWTANLLPAR +TMGESIKDIWNEQIR +KLSLIQIDTVEYPCTLVDLLILVGVALPPLCY +IWINTQPVKSVNANDNFININNLY +IGRIEDVTPVPSDSTR +RNGGPVKPKLALQCSGVDYRDESVDTRSHTK +KYVAKLAYIYITSNTTKLNEILFGLEQTVE +VKAELGNLDAPKEAEVTAELNK +NFDCNLDRSDLSIDFIKELTK +YRILEDLLDSSNIHPSYTKSRRTMSNLAR +STSSASSALSAPSTEIRNQDLTHTLDGR +NTSLSRIQIKNWVSNRRRKEKTITIAPE +RRYGDEDELEQEQEERRKRAALDK +NIEVSSSEVPVARMCHTFTTISRNNQLLL +SRAIQRENSLPASLPSISEANANNDDVTISE +DALGSTLVSVAGAGFAVVCAFIATLMLAK +ICEYETKFNKNFLELNELYNMNRGDRR +TSEETCSTLEYASKAKNIKNKPQLGSFIMK +NKGKKNKGGITTGDISEEETVDNSINTEEYDK +IDQLVKKEFANIKREPVHPEIRGILAKR +NSLGLRLKLSKSTSDTASATLLARQQKR +MNSKEALQILNLTENTLTK +YFRQEGVPMENTVRKILDYTHKANNSR +WNEVLSDYNSMDGNPITSNKFLSAK +TSCVVEKRIGKIVSQRGKWNLK +RAIVAELQETLKPDLALVEEKIVTPCQELLK +KASSINRLPNIKIPTLIINATDDPVTGENV +GVSGGERKRVSIAEVSICGSKFQCWDNATR +PHDISAFVKSALPHLSFVVLGHVDAGKSTL +DEDDGESEKSSDVDMDDEEWR +LNIHSIIEPGHDLQTSYAFIR +KHLKNSSYEKFKASPLYQAVSDIGISAE +FTNIASSPPSSSNNIFSKALSYL +AGNMSHLGFYDLNIPKPTSPQAQYR +HPESLSLEIKRFLSVCLCVDVRYR +FLPRSEFPSVRQLV +PPWPTELTEEERIIHDRLASKHSHHIR +AYGVSKPKRRSPHPHGNKAADKRKTTEK +LNLSLMIINDEEFFQYAKRYFKK +LLQTNIVTDSRRKRIKFTPDINVEPV +DNPNSTNNDVKNDVAPNRQFSK +LGRAMIPEFDDIIFKDAVNSAPSNSLL +TTEEEVELRDILGFLSRANKNR +VIRYKLYGTVNHSGNLINGHYTSV +KLKWEKTEKCAIPIRCKNERSKGKRTK +CRLLPIFDPFLMGALLMLK +GLVIISGIVHDVSGYISE +DLLTLLGGASIDLDDNKRNALIKECRYYR +LVHKLQFYLLKQQNFPPTF +KSMEQNYLRPEIGSRSECKTSYGNELSL +VIECFKPGDIVRAQVLSLGDGTNYYL +ASPIRQPSVDVPPLTTRRSSIQDVQWIR +ENLRAEIDMKLNMLEDKVSYYERLYK +GLSKLTIGVPSLKRLRMFANNPFYKNSDVV +AHGECVKFVKSFGLPMLVVGGGGYTPR +RVVEVTTAANVLAATYGVVLLSGK +AILDVNSGNYGESLNRADPSGTYDSLYLSR +LCDKINDKILLLVSEDSVNIHFY +NDLLNNIFLFGRDFGLNFLR +PVNNDAFFQENFPKPPKAGLTLY +LKLHPSPSFKRELPILKLMIDDDSK +DKSLVQRFMAVAKSLQFAWFTGHSVVLISSIL +QSDVPNEKSLSKTHRAVINLLLMF +DPQTGAPVPLRALINNVSGYVIKTEMYTE +NLAFVEYETVADATKIKNQL +ATPNGDKMQYSTPEILLSSSDSGSNAGSKTMQE +HSKFRSSSGNTWSLILNECLKTIQINNEK +LIDNKFGLMDDLNFSIPLTASSEGVPISAK +RRLKADVEKQMPAKYEHIVYCKLSK +IIAAIPNPEDVVAISSR +TEHTAFQPLTPISKKRALKEKAASE +DLLEPFVYEYIASKKGSISAEHGIGFHKK +YLGPHNEIPLTLTRDSETGHFLLK +NLAKGQSLSVETKEHELTQAELNLK +DFPDISFNHKWSINDFNAITEDQVNSQK +YASISNNSDQTIAFKVKTTAPKFYCVR +LDNTSIANSNGNGNDDTSNQRTEALGRK +VNGSITDQLIQNIETR +LERSEMKARIAELEGENRDLKHQLNQIQSK +PTSTSLNDPTAISFEQDEAPGLPAVKAL +SSVALATAQRGSAAIVPSQGKK +SNESASNDAFEFELDNSSEKTHERNLR +NFLSSRHHHSSESPENYGSNQLSHSF +ILGEDGKPLSKKALKKLQKEQEKQR +PLFRHFFNKENVK +VEGKTPGLPIDLEIGYVPPSTRGQY +VSNLNDAVEEVVSLKGWPHK +FLVDESPKIGDFQK +TTLAGHVMTVRDVAVSDRHPYLFSVSE +VTMGVITGDILVNGIPRDK +INLPSANRFRRPASYVSKGYKTRR +NEKEDEEEDEGEDSYDPTKAGDIVKATK +YTVNKDYADKSANPSNDIPLSRALQY +RFLYFVLEILKISNILDLHAAYTEKVEK +THQGQSRIEGHVMSNINAIQNNSNLFLR +YYQSKPLIEHHDINEDNTLLGNYEALIK +IGRIEDVTPVPSDSTRK +TRTSEDSIGDYLNGHIKYPIGEYKLE +AGDDGAPIAYEMSAEWVALETKLSETVMAITE +EKIDEYLQNIIAQVRMDINR +PYHHQGPSPSPSPSPSPLNPYR +GKRGILELGAGISGILPVILGNFVDTYV +LTSPAFGRVLPDGKYVKIPFTKKK +FVVPSGNFGDILAGYFAKKMGLPIEK +YEVMYQDFNDSLDATNIDRILK +HAQIEMETNNNQRRK +NNRDNPRSRDRYDDRRRGRDVTGR +QLKADAKSVNHLKEVSYKLENK +LEDVDVLIIDSWKSFKMLNGSEDWYKL +TAENISKAVNGLLPFFAYFSSIFTLV +KRQSMESMTTSVSSMANSIDDSQR +SSILELGIKHPKSNNIHNQRQPSR +RELRALFGLDPADYLVSLTSKYILSELNSPGK +ECYVYAKTEANDENVFALISKSQL +RYIKILQLENVLKRDIEKLSGGELQR +NMIKFKGSANGVMDQKYNDLKEF +TPVTMEMPIQNHITITR +STLPKMEPSSHAPTEPDIQKDK +GSFISFVGIIMVTKSDSHQRYQR +VLLTAYGISCVITLICVL +AAPLYVLTTQALDKQKGIEQLESAIEK +MKPLFNALQVSSTAINDMSWSQDGFTL +NFVPQQQQRTFDRSASFLTEVIPGKLAV +GTAGSGETEKRYIRTIRLTNDQLKCLNLTY +IGRTGRAGNTGLATAFFNSENSNIVKGLHEILTE +EQSLLDDASTLLLFSKGKKRAEE +SSFDEESCAPIPALVASQKLEFV +SGAGPTILALATENFEEISQEIINRFAKNGIK +RLAQQRRRYSTINPNGLSNLRY +KILRSPTSSIYLKKKSALSFLALLK +GISVNNSDTETYEFLPDTRRLQVL +LLSDDEYEDDNNNDSTNNDKDKNGK +TNSDSNISSSKKPTSEKAKKSSSASAILPK +FTISETDNAALPHSGSGSGITLTCQELDE +SPYIAAVER +VQKTVGTSGPRSSLDSIDSYRVSADYGR +ERKPVVGDIIEKEPTINDIVEKEPEINSK +RLSLVANIDPQLGTRVGVHLGLF +FYFLRGHLPWQGLKAPNNKQKYEK +IILVIMMPLNSFLMR +KENKSVRNRLQSILLDNKFLQDR +YISFTDLPVNPPRDDKEWESSIEPK +LDLVGKNVLIVDEVDDTRTTLHYALSE +EFLNHQKALFPQRKIYAVGTSFGAAMLTNY +EFVISAR +PNATSSAFSTASYAHETFDFRNLKLR +FGNKIICGLHFDKEVRTRPEFTKRKK +TLHIGGRKSKLAVIQSNHVLK +SRFIWVSRPLELTIGNYTYK +LFTEPIKLEPVKEYTFKTSMRV +FLDLSNL +MHEVMKKNENKYAQIEHPEEVADLVGISAV +PKQLKEYYTSAKVSNIPFVSQNSTL +EPHLQSQFHPFIKITQAMYGGLMSTR +GIYPPINVLPSLSRLMKSAIGEGMTRK +CPICRVESTHLEVGEGQHALSINLK +PRQSVKFLDLRNNPITTPRHDR +LSHENNPR +YIEAYHKEVNQLLK +TIRYPDPNIKVNDTVK +SVKTERTTKDYKESLQRTESLLKDRDLK +VRAGVDPKSMVCALFKLGNCNKGAK +AFEQAVVSGLDVIVLQIEPR +TYGQFACIKGNCSEILSLAKLNNHK +TVRVTVNQKKNPDLSEDRPPAL +RFLRMVDLSASWSYSKIALGSGV +YIQENIPDLNIMGNPR +KMIEFLYGVSSVYFNEFGFEYYRCFR +EIRKEMEEENITLGLDNLSDLEK +KAHRNGIKKPKTYKYPSLKGVDPKFRRNHK +NRNDRTQICGIGEIGEIYVRAGGLAEGYR +TFPRIFQLLHETVFDIDSQSQTVIHHIV +GKGKQIESEGGNLKKKTENK +AHLAGKNLTAQFIYSKVDAEDNTFWGPF +FNHIDQSEISRTTSRSDTPLRDEDGLDF +LCQDSFILKELRIDPTVHNHE +IIAPVTAHAGFDKAAYYFGMKLR +CGESSKTFRVDDELLNNAFKASTTVFQSML +IINAHVDDCNFELQLL +DKKGDDHIHILQLLLNEQKDNFGNE +MGNTNHFGHLKSFVGGNVVALGAGTPY +KCRAPIMSDVREKPSNAQGCE +QQQEEDEAVDEIKQEIKFTK +SSSIFHSPLPQIHSQQPEAENLIY +LKYTNPLFMQSISPVK +LKDAIVVNPWDSVAVAKSINMALKLDK +NNLELVFELKLANYLVMIKKSSSK +KEKVNYQIKTDSEYVTKLLNDR +DWSTGLIHGGSQYNCGTWMDKMGESEK +GNPTVEVEITTENGLFRAIVPSGASTGIHEAVEL +TLVLYDQSTEPLEEYSVYLKDLEQR +TLHFQLSRGIPAAYRLVVWQLVSYAK +AINKHTDQVVAIKEVVYE +VELTIGSIYVMRYEVIRDLLR +YQVTVIDAPGHRDFIK +IRKDLVLTSFMSSIQNLLLNGNK +FAQGDPTMEVSGSRDLR +LTKDQLAQDISNNRNASSIMPKESLDK +NHILSASLLIRDMSNFGKINKIY +IKKRKIKDPRSTKARKSKITDKME +ELAVDKISFAAETLEL +EEDAWVFDAVNKNDTSLSLNLILHHELR +PGKIAKPNTANAKHTSSNSREIAQPSSSRY +DFVESHGIQFEEIAGNPV +QSTGNVGSGRKWGRDGGMLDEMNHEDAAKL +GLFNYDFGLLPFRAPINVVVGRPIYVEKK +AHDIATNPNAAIVFFWKDLQRQVRVEGITE +SLGRVHSGGSSYSKLIREYVRYLVLK +GTNIYNAER +GILNTPANYKTLGLGDSKSESVDLAAR +TPRNGLHNDKSITPKSLRRKEVTEGMNRF +KKKAEKAARKAEKAKSAGTQSSKFSK +NNDDQYLKPRADSKFFTSGQINYDLLCQVV +GGFGGPRGGYGGYSRGGYGGYSRGGYGGSRGGY +EHINDHTDMHSTRSKVTTNSQGSSL +KVFDDAMSNLGVQKDDILVVYDR +GYSTGYTGHTRSSPGDLVIHKREL +RLYPHWDHPVIAGVITRSKRL +HDDGSTGFSAAVNAILSSHLKAYDRK +WVALQTNELLPMDLVSITR +ETVANRKRRRHSSLDSAKLIFNRAIVTEK +IYNPHINLLVSASKGNGMRVNNKDYDYKSK +NSSVPISFLVNNVITFNTKLSSFK +FLTIPVSSIVSTLKIKTPPATK +AYNIPTIERSPNVYVSLSITGLRNL +ALYSESAEELGALFHKLGWK +EEEQEEDAELDDLFGDDNDDDDDDDV +EINKIVK +QHLFKYQGHIGAYLIVAGVDPTGSHL +GIQEIKDHPYFKNV +FMGKPLVPCL +ELLELVE +KQHFQK +EILKLVE +ELNKVIK +KDQLEKF +ENQNKFE +KNELEFK +NFLGDKK +PFTLAGGLK +PLPQQQRE +QNELYNK +MTTNSLKR +TLVEELKK +MQLQLLAK +ENESKHLK +ELKNEDE +AAIHQYAR +KLEDHPK +NGIVLDILE +QRLVDLLE +YKFPGQQK +EALKAELK +DTIIELLK +KDKKKDK +SNIQKNQK +TQLQTLQK +KTPLAQKK +AIAEDMVLK +GLGSLVPLNK +LQILLLLE +GWMAALIK +TIEVENKK +AFSGGVYR +LTVEEIEK +ELLAKLE +YCIKNGYK +KDELHPE +KIIEKVK +KKVLACY +QVKKKVK +APWANKK +IEPIKEE +KALPKDIAK +HLGLR +HIGLR +HLGIR +QPKEPK +QIKNQGNK +KNRSGLR +HNIKK +EIQILE +NAGIR +QLNTIE +KGLTRSVK +KIGGKGQGGK +REATKR +KIQINK +KLKLNK +KIKLNK +QLCDIE +VADATKR +KGDKKILK +KDTTELATAGVKLNE +QTVIIAHYPPTVQAGEATKIVE +WNETSAGGKCYAFSNSAGL +FIKGIYLIAVDEKSNIIVL +LTFTSASVKATLDEIL +LPTAAVFDLGGGSTQIVFEPTF +RVFTGQVK +KGVPYVVTHDGR +TLRDVGELTR +FEQLILVRCIK +KGTKNINQETKNLSISYK +SLKLLDAILKK +KQNGDAKENKVDAAVEKLQDK +TLDSLKRIKDKEIQKLIK +IVDYEEMFQLVK +EIAIMKK +TDVRNLLKILE +FSGTSPNLGSKPL +KNVSQEK +LLSKISRLDKLVK +LPHVPCQDSDDIQGAFPALK +RQVPCKAIAKLWIKIIEPRK +DDYSAGIPLAVQVVLYLL +QNYNDDGANDGDIEKEDAK +FGFLKESSNILPR +SKQILSNLKKSPPLNLNISL +PLSLFLFGWTAR +NAKETGNAFVFDIIIEWIK +YIKTGADLGAGAGGSVK +GHERHVEALNGNEMEEHIRE +SLSLSPCTRANSFEPQSWQK +QAGGRKKK +MKLVPADSDEEE +IEIKTLSKSLSKSNELILQLK +LVLKQEHHKQQQQQQQR +KFHKNFYSANLMKLCILGR +KLVVTDDGTAWSR +YDIDDFLNDPWLNSYDCL +DEREREIRRR +EEPKLEAAELLVDRFPLPR +KAAAGKTIRKLGRKKEAAAE +GVTVLGDDVEVK +QGLPYWAPSLLRKTNVFE +VDSWVMCIWGVVNTFTEHR +SRYAAAYSFSSSNDQDYYDK +ADDGEGDMVAELPKPLIRLR +VAIGEVPFTFGVR +EDVQFVVTGSYTISLTGNYVK +EFIQDGLNGKNK +TGGLWAKGSLNGKAAGIFVSTSSY +IIIDDIRIRAIGKSGVRKEK +PESHFSKFIIACFLNEIL +EIPDADLKDLIKR +FLFPKKLIPK +LDVEGLGDLYKNLMSSNFDL +NSKQNPRSISKSCPNDKDAR +KVNKKNLK +LKMIPRDEDPHSQIRAFK +NGTIEDIMNNLR +QLQGGDITRDLYK +KVKLVNGVSDHK +YDGEEIPPDLNLNSLWLKVR +KWQASYSQAKKNRILEEK +HSTFQPGWAPRECIENISHL +IFQAFASSSVISLGAGTVTDVV +LNVSAPVVADPTRPSLFK +NDLIPQALKDFNK +QPVKDGPLSTNVEAK +NDISVVNLNCSKHGPYSVFR +VEGSGSWEVSKLDLPNVFHKK +IAPELCHLGNSKRDFVTDGFK +LIMECGDHDLSQILNQR +KLMILKDTENMKNQKLQE +LAKDAMIAQRSK +KRLKQIHWDKVEDIK +LRKKARESQPTQGPK +KLKKQGFILYEEGTEF +RLKELPFNNSEEYSPLLYR +RAIWLIKCCYFIEWK +QTGNLGIAVFNFVKGMMTK +GTLFVRGDSK +LQVWRAKFEEMMDNEIQIL +LGDFMVICTARSTKHCHK +IIAIVVELSKDK +VQVDHIVRNILAE +ISESSSMKNSPVEKFKYLAR +MRLSEIKLHDLEWIAAK +ALTKFEASQVTEK +VAAGKLEYMEADCFFKQLIR +GKGFPKRKSDANSQHSKQF +FQGVKLDSKVKIVIKMLK +PGGDFRTLLINTRCLKSGHAR +SFSRASSLSNAKSYGSFSKR +QDDHSCSCSVCGRR +KNEQLLKLINSSEFTLHNCV +LSQTSIDMVNNVLITGGNAKV +QVEIKNLK +KSIRGTEVKVCSNK +GEYLKALNLLREAGDY +GIGALFTQQELQK +SKEALLSEQLDRLQKDL +ISLVGNERKNTSPDPALKPK +YTKSQDSNGSDSTSNFNSRPK +EKSGADTTGSQSLE +LKLARELAASYDTMPSREE +NIYKGIESTK +KNLATEVEVVAKAR +GSAQINRIQGNLHFAPGK +TVTILPPLIIEVHIQPK +RCHNIGSGILSLVNTKR +KICQDPVLQKDKDFLLFL +IDLQEILK +PTACLGFAGALLKKEELVGKK +SASAGGVPQSSWSVFK +LTVISLQLVSEK +DYTIDLSK +PSCGIENIPNFIHDV +PQLSEKYNALRQNR +VLGAGGLGCEILKNLTMLSFVK +IQQLVEIKENEQKDHTTK +PKLFSVSIICLSLLIFK +PMTGISTNTGIVRKRGKGVK +RLNGLPIVK +SIIQTGLLILQCR +FGRKGVAINFVTNE +LESYNNSK +KKQKRLEYER +NYDNQFKQIFDNLFDKE +YNKSDISK +EPGNQMVKCDPR +SNSHSFTNSLNQDPIVRSNDE +ASWFDISK +NLNYSKPTPIQSKAIPPAL +KAQLIPLVE +NELVFSASASSSSFANGGTAAV +FSQIIFASIQSERRNTECK +SKRNSLLRR +NFKKANLVNKESDLLEETR +HQVCSGILYTK +RNLNVGK +EKRRTPNGKEAERKHALPK +LKASSIILKLKLK +NTQSITALTISILTQK +KILLQILGYGERLLTHPSK +PETLFAFQPLKKSDEGHVLK +SMIEYLEATGRGKIADF +ARWKCSLKDGVVTINRNDY +VNEGDVEMKWDF +ELEMLRSR +VNKPFKKPKRIL +HRGYYALNKMTREKLYGPL +IGESFNNKVKSIV +LRFSNVNKGAKLSQKYVQV +TILPSDDLSQQL +KNGESLEGEEIK +EKFGVVAVPHFIRRFSIKR +IEAKSGSELETVK +NEEIGMGGDEEE +EAEEAKLR +KYNLWKKSLDAPILIEACER +EHDDQR +NNKPSDSGADANTTNEPSAE +KILNTLIRNLK +GILIEVNPTVRIPRTF +LNVGDLATTEEDPLAR +KRGVLTEK +SSVKINEPK +AEKELSLAKDIFENLNNQL +EPQCSREEEENIDR +ILDQQGER +PIEMSTIEEEQSVEEDAGR +SQSSQTTAKVSK +RNKDPKIFSKELWL +CQFCKEWCIQKESLSCDE +TDILSQLR +AKEQGLIIISEKEY +RRLSDIK +KDDQLEYLEEKR +ERFFTATGGIASAKLDESE +VDSDTPENNHLKWLIK +ELHGDDIGKK +LGSVLSFIPTVLLK +TCCLFNVVFIALKEELLVV +KAQEFIK +ISKTSLEPSSIKSDAL +TLCVVAGIGLVGGTIK +LFHPTSAAETLSSSDE +VTPTKTEVIIR +EDDSTPKIFKF +VLALASK +LLEEIGSNDLKLIEEK +ILLETALLDELNGAANDRL +EDLDNMDAPLIIK +YLKIVKISSVAPEENNNLFLV +KKSGSNSSSSSFEEKSK +EEGFFDGDEDREMGNKSKR +SYRNTAVSKKLKEKR +CDEMNTLLWSFIE +EEIAIIPTEPLHSDK +PEPRLNLTSDAQSQPTGK +KIIVGRVLNYE +KISKFLK +AVFPSIVGRPR +DSLFPKVVSSIEQVTARK +ILKERSESNFETDIPTHL +RSNKNLNR +NLDKYVIKELFSYE +PEDQLVHAIRTRKFDNNKR +KLSSWQLSISKLNFLIVGL +SGVEVRVTPTKTEVIIR +FPFNKSMIEYLEATGR +EGSTSQYTQPR +VNLEDPSKTIPK +NPKNSTRYLR +LGSKSGAADIKR +EEALSK +EEAISK +GHVSAGK +YAMSKTALIQCTKMLAIKY +LGYCSVYGTRKYSNTAQWR +LNRFSNILVK +QIVNIPSFMVR +LSLRSANDKIALAK +DSLAIGK +MMAKLTGSRFRWINEQL +RKVFNAEEDTLNPLE +IKVDEVPK +RIIDRE +FLKAGK +ISEIATRR +KGTPNQR +ESLAQEIR +LIENGASVR +EALQSQIR +EGVVLGVE +LSSMIE +KIVNILLE +DAAAHGLK +QLVGILRE +IFLMR +EQPKKVKK +EEASLK +QGGKR +KGGKR +EKQEPLLE +KLELEK +QIELEK +KGGGAR +SEAPLKKL +EVTKGEK +KIAILTSLK +NSALR +NSAIR +GAIEIEK +KVGDIVDIK +TIAETLAEELINAAK +AGELTQEELER +RPATASPLYMPVTK +SVDVEPSVLYSNLR +ATHANMFPSVSK +KLITLLGGFPISGLLITIGALF +KMNDVNILYNTDNIDKIDE +RTGYVSNEER +KQQAAPGGNTSEASK +NWAGIYSAKPER +AAFMAVGETALSR +DLDLKPSLPAIK +RLLESFGPNLEGYSHLITPK +AQRPITGASLDLIK +KAGILNDAWATSK +IREEQLAVR +KEHEAKLLQQKDKLGKAV +NNSAQKEAVQK +DKELSVEVDEDYDEEEDVL +SGELAIKDVIELLR +LGAFNDFLNSASR +QGGGSNKFLKSSNYDSSDE +FLVSDDKMRKIYDQVK +EQDNEDKDESKNQDENK +AGKPKACYVTLVRNKELK +ANTGEENISSGTVEEILEK +LRVDEVQGK +CFMHNGGISNFKGIKRK +NANSTGEYRTVAEEKNPRIR +KIWEKK +ISNKPNEVFTK +VLENKADPLVSLMMVEKV +SIVLEIKSRSLDNTETNMQK +DVVGR +YQVKK +QSIAEK +VKANAAK +KKSPDIAR +FVQGLLQNAAANAEAK +IINEPTAAAIAYGLDKK +HSNVVAGVGGASLNVLK +IQQEQMGGQTFTLKDYVEGNLPSPEEQMK +TVPPPDFTSMVTLPTGPAK +GAREVGDVTTKSSVADLASTVDSGYQNSSLKNESEDKGPMKRSDLK +IAQNEVFGPILVMMK +LKVQKLSRPSLPKIKTVRKSIACVLTVINEQQREAVRQLYKGK +KGEQELEGLTDTTVPK +LKPEYQEVIKEITEK +FTKLCDLETQLEMEKL +FGIYEPDEKLASLVK +ALGQYQSQDPTSKLGK +DYKISWSIKGRITKVVPYLHSLSIPMSKYEMLIHSDKNISNE +RSSVVSKNIETALSLLK +GTVFHVAGLFATANSTK +MSCSFHISSPLGSSSSLE +PVGIVVPNLGHLSKLAIEL +PIQDISYDPAVQTLYVL +KTAVVDGVFDEVSLDK +AGYIYSINFGFDLLK +KNSLVAIRLLKLILK +DSMNFINLLSNVLIK +HSSVEDARATMLLYK +KYGGSSNNINDLSIGNKRVEGLGFDELNARNKNYKKLRKIALR +IKCDKLWPTCSKCKASSSICSYEVEPGRINKSPTIENAPHRDIR +RFFTGFLLIVFLK +IDSFIQPVIYGYAK +AMQEASPEDTEETLNQIEGDNSLEAADFR +SYIDYLINGRFNK +QEDATDPTTSSTNELSAAE +LTEDLKLNDEEIKK +EVIEKKKSKKHKKDKK +CFFDIMLSTHFIE +DGLLNEAEGDNIDEDY +MPIELYNGDDWIGLYK +SEAQENIIKNKDELEDFEQGEKYLTLTVSKNDFKKMEVVGQF +TKTESNSDPRTNIQQVPKALDKNVTNSGNLDSTSSSTGSITEDEK +ILETFHYIDSQGRDQGINVRTRVKALIELLSDDNKIRAERK +SKKYNSLFQNVENDYEKAMSTDMQNSIVHRIQKLLKETLR +KGKAEDDSFTAEISRVVEDEEIDEIGTGSGTETERAQVSYDARMK +HHHDRKDNESMVTAGDSNSSFVDICKENVPNDSKTALDTKSVNR +VTEAGSLQTFFQFQK +SVNSNFKYDGGVFRVYTYEDIETKSEPSFEIKSPVVTINCTY +IGLYLQNILGIFKIGIVL +WFAGNLASGGAAGALSLLFVYSLDYAR +QTEKSKNLVQSGLLQEYINDNINSTNKRKK +LNRPFTYAEK +IACESFLSGDLIIINSLDSDQGMLDKAAFSSGLSRSTNLAV +EILNKKKAVPPSLALKNKSPALISHSKTQGSLPEASQY +LYYKVWSNLRESKTEVLQYFLNWDEKKCQEEWEAK +LQILQK +GSLMAQGETLSKLKDAFVKTDNVQDEIEKEERVSV +HANEVGLLSITQVK +SSPENNNDEETNR +LSSMLK +SPSPPPVYDAQGKRTNTREQRYRKKLEDERIKLVEIAL +VLARLRNIGFQIGLKLSELLIFSNNPNLKFKE +LRACDNVSDSGVVCIALNCPKLKTFNIGRHRR +PILDAMGECALQGLEIMTKLSK +KVWKTFSKGRSLPGVVRGHNDLIGNWEEIEEANE +ELTYDLLQEMPLLNQTIKETLR +MARDLQNHLLFEVATEVTNRVGGIYSVLKSK +EAHNPSSGTNSLMDINDDDDEEMDDLYADE +GRLFLISAVQFMPDATAMGFGEIIDQATGK +VPRQSSENDQDNNLERTNSLKSPDVTNNIPSLFK +TMRHFDFEMEWIIDLFSLSLLHGEMIFYEYDCNITK +NRLLQGAL +TKIKCK +NGVLIKEL +RKIKDPR +NNGWPLR +IPLKKIPK +FLKPPMR +EIRNGVER +GPLFVLLK +EELKKLK +QNILEPLK +SSAPNIK +ELKKNDK +KKKIRK +ISAFIK +NFFPSLNR +AHGGVAAKV +TSPNSLRK +DGNSILRK +SQAKNARK +KRSKVRK +EHINLLSK +EMSTFKVAENVPGLPKLSGGAIGYISYDCVR +SIFPFYKKYFMVSCMDALSLINYFNKFFNGEYR +IDTATGELQMLEFEDDSECTKLDTLMSQVR +MFNKTNKKFPLGTFLANVFATLLIGIFTMVQRGK +SLISSRSTPENKFDLNVLVSSSGSL +ICYHLLSYCIINLR +EPNINSTVILRADILKEINHAAEAGSEPKFDESVLKK +RKQMRPTGKSVLKRPRKVTDRKTEEKIRTNRRK +LNFEQQPVLER +NFQWLAGNVVNEGADEGNTGTYRIVPSDKIPLIV +LKEELARVTPLTPK +KVFDDAMSNLGVQKDDILVVYDRV +AIDLDTATQYEEAYTAYYNGLDY +DDPFNAFKFGGNPSVIILSWRVCFIRHTSDHL +LSYYQQIQR +EAAAEYAQLLAK +TTEDNKNEVVLLKANTSLPWEFEDWRSIRE +ILLYCQSVARYGKSPYLYPMY +LSNTRLFVRPFPLDVQESELNEIFGPFGPMK +EVEGLSEGRTSLVVTRAEWEKELGTDLVKFLIEKNYLKLVDPGL +IELPLKNPEIFQRVGIKPPK +SFPSSGKPITKKSDMPVVVASPSISIIEKSESSIR +CKPLSPSDAKRSSNSLLR +LSGFSHGLIQVCKSKDEPVTKEIVAKSLGIALDTLYKYTK +VEKIFENVSIKAWVQVE +ARFALKERHVNDFLKGKYTVDQVFAKMR +KLVKNGTIVKKAVTVHSKSRTRAHAQSKRE +RTPPLDSSLTFDR +KKQLRQRLK +KAITYSHAAKENGMLATFGIGTNFTNDFRK +KMRNRANDDYYTRGIVASSNFEDDEENF +EYINNCKKNTKKCLKLAYENKITDKEDL +SSSKSQDDDYYVSLLSPNEEEDIK +RFLMDTMSDLKNNRLKPSILATDHHPLKK +LGISDILLLLLISSSVFIVDELRK +SSRSWIAKSEFITTLIL +SSLSISSTLPIDNPANNFTMNNNNSNHSQL +EALHSPLADGDMNEMNVPVDPLENKVNSTNIIEGSPK +HLEKVDVKTMEEDEEVLYKVR +VCNALVLLQCVASHPETKHLFLQAHIPLFLFPFLNTTSRQRTF +MLRLLPEFKDAKLVRSR +LPGRFASASTSNPAER +EESYSMYPKTSSPPPPTPTNMQIPIYQAPL +NKVTLASILTTAVGLVSPSFMLK +RPDFLDRCQPVEGLPLDTLFTAKDVCTTKNHER +MQANPVNIQEIFPKSDK +EHSTHLSNVKISKTTENSR +TRSLLVSLRSR +VIPVPDTARTCALECANVLGKPYREGFVKNR +VTGGGHVSQVYAIRQAIAKGLVAYHQKYVDE +RELILQVRGEIGPFASPKTIIL +EWETIKYLCNALIKPYNEIAAK +SFVDIGHSDEALRLLKGLYIGDVDKTSERVSVEKVSTSENQSK +KELKQLNEIDNELDIRIEANEAKLKEEEK +LKKKRKIKR +EILEQLKKTLQMLTVEPSK +RIMKEIQAVKDDPAAHITLEFVSESDIHHLKGTF +RIIHRFTSDRILPSSESNSLHHVV +DYKLLKE +MDGPNFAHQGGRSQR +PEATIINRYLEAIDVHFDKSTKIFDIRSK +NSKKISDILNQFKGIYNDETLNENAEIDLL +DQDRESDEHTADNVKLYQKLKIQILAGGAFGLL +IPAWFLNR +IVADGHTSSKEERAVNSISLK +VSNCIRRLYMAQFENESETSLISTLLKGRK +IETNFNILREIFINSVLK +CKHSFVRRDLLQRHIRTVHR +ERVKEYMEIEQEPYNEHK +FKIGEPLYRCHECGCDDTCVLCIHCFNPK +VRISPLLSDSNASSQQRLNEDTIV +DVSKTEKDEIR +GRPLLINKFYLDENQDHCILNSK +CSNCIKFQLPCTFKHRDE +QDSSDGENELNGGLGLFNEQGGLQQLIKNSTKNEQK +SLEDGSDSAFKPSNLTLSGIYGL +KKNVKEE +VNEFFEDNELMKTSCGSPCYAAPELVVSTKAYEAR +SNPSTSPFVTAPGTPIGIKGLTPSKSLQSNTDVATLAV +LLQDSLGGMTKTCIIATISPAKISMEETASTLE +AGHLTGIDFSHDSHGWGKCAIQELFDAPLNEIMNNNQKK +MSNKVLKVDKRFMNTSQNPQRDAEISQPK +DRKNALEEYIYTLR +GRPSLVLNSKNGLDLNCGSFNPATNEF +IFNIAGNLVK +DVALQFVGNLFEYFLQRTNANLPEGE +NAPQQSSQTSAGPGEQDSEDFILTQFDEDIKKESAEVHYRNENK +GISSVSRKNALR +VARANAARAESSSSMNSTEAARRLR +ARGEGYNGLLFRRARQL +HLKEKAIFEKVLNSVYEEGRAHNFK +KSLTIGLIPGDGIGKEVIPAGKQVLENLNSK +LVDLIGEGAYGTVCSAIHKPSGIKVAIKK +DSGKTMLDASMGEILVTLEK +QHYSLQDLQNNRATAGMLLKNSMLGGNNLIK +MAEVLMEFPELYTEMSGTK +KPSMNSSSNSSRRVQRQDGKIPR +ENNDQISPKIKVIYLSTFILLNYILAFVGYDNSFVLGMSV +IAKCLCNKDFKQKTISLDDLNDLAQK +SQLTNLFNEELGAVFQISAK +SALEHNEVK +LFLYPSCDITLSSILTILFSDALFLRQDYKR +FADGFLIHSGQPVNDFIDTATR +PSLNSNVLLPRKVMSRDSLKHLYSSIILIKNSR +IATGTHSDLSFGELPSEMIVNGK +FVSLLDTPSKKSDSKSGGSSFMLGNWK +SVKGGADVESKSSNFSCNALKALQKKGGIK +NTVDYFIDNVGSNVLEAGVLLLKQRAMLIACGAISAYNDPSK +GFLFCSFSSNKKLIIPKKDETPEDNLEDK +SKMEKELKEREFNYKISESKLEDEKTTLNEK +TENDNMMSKDTDIVPIDELVK +GGFNAHAANLVTAVFLALGQDPAQNVESSNCITLMKEVDGDLR +LSKRFGGTLKLKKRLESVPELFLHDFKK +DAGQKNGDRNTVLAHKWKAELSKKARK +ALSVATLIFFYSKRISICYHMLHMYR +SIKEITSSEMSSEMPSSSLPKRLVEDVEPSEMPEKGASVESVR +NDNLLSLLSSSQNDIISK +IEALRSSEILEVSADGENVKRR +FLWLTSTINSRFYPPIPISE +NITTFGCFVQIFGTRMKNCDGLVHISEMSDQR +GLRETALNTIWNVVKSVLLASKVEPESYPK +ELTYDLLQEMPLLNQTIK +ASPPQLSSTDLHDALLVILSLLQK +AVTQLIGSNIELHSLYTSREPR +EIQDEGGFINFTLEEGDTVYMTYYKGIMLDFRQVLLR +LIITPIQKSLGYLFGNYFDELDRKYR +SQTKSPSGNEINSSTIPDNHPVLNKPALESEAK +KTLVTLHRTMGVERLTK +SNLNNTTNKFPKSTGGGASDNISANSNSIRSF +LSIGTQMISNPSIMFLDEPTTGLDAYSAFLVIKTL +DQSHVDRPRGTLKVSTCRLHIDSSEKLNFELLGGITGTTRWRL +AFTNTQRICSNLKQELQKQQQDNAK +IKRNDETVEVFRHRWDRATVR +AIDYTYTFSEMDAVHLAIGLASLKLFK +GRTGCLIGAHLIYTYGFTANECIGFLR +LLGPRGGASSHNDNKREDKSAV +QLRKEMESKDASLPTLSQWKLHIVSENNFPTAAGLASSAAGFAAL +PPGTTLCSQVEAGLKNGVTLVQIREKDIETKNFVAEALEVQKICK +VVITEIQNFSRPLFYLLSLF +NQEGDDQMFVRKTSREIQGQNRR +IHVFKWQDTESLLHATNQDSQSILQSV +DEIEMLIENVKEDSMACGKILAERMIADGAKK +FREEAYYSQFR +ALQLLDYLIKHGSE +MRFLIFDFIMYCHTRLNLSTSTLFLTFTILDKYSSRFIIK +ESRDTTNEQLISALFHQLMLLQEK +MYKNNKVTGFPSLITMFSAPNY +EVTKEYVARVKGEFPIGIVEVDKPVRSVNPKVAL +EDASFRKSRHSEVKLDFDIVDDIGNQVFE +SLEMVRNVMGVVDSTLGKAEEWVKQKQEVK +IVVAKITGPAKNILLAERTALNIL +TIIGEIATERKHQALAFSTMPLLF +PYRRWTPEELLKRSQEAEKPRKVKK +LELVEVTDSNINDDILEGKFIKTAISGSK +FSRSSNSRPSSIRSGSVSRRKSDV +YAIVLYDFKAEKADELTTYVGENLFICAHHNCEWFIAKPIGR +TLESLILSKNPNYYKAWHLLALCRSVQEDK +GIEGDLPPIPPVDPNSEAETELPTR +LFDDENDNTSEISVVEDQLDHPR +GGATQIRNIQSIKLTQDRDQDK +RTRLSLEDFHTVKVIGKGAFGEVRLVQKK +AAAALAGGKK +HRVINVQFLKSLYTVQTRTQR +DKYTLTVNDDSTKEDLLNFER +KNEKNNK +SSSSSSGSTALLAVVNSTLKAIFSNTL +PKSEGAEEESKKEANEPTVDDVADR +SVMQGRDALLGDIRKGMKLKKAETNDRSAPIVGGGV +ATLEEAEGESGVEDDAATGSSNKL +AHRNGIKKPKTYKYPSLKGVDPKFRRNHK +DLLLQEVTLQRALLDLENMAKLVSCTPMCIWR +KLKGSQCGFTNLTDPLRKHCQVKDAEAIK +HAVNRNTFGYVDFEKVQGLEGIIITNIVSNR +PEIIEGVECNRCALTAAHSHLFGQLKEFEKK +PALAVILLERLAERIARQTHR +ELKQDLE +KENPEEK +RNALSCCKTNSEILRRKLSR +KKNNFKGNAR +LLCASNNNSNNFKQTYVCNRCINREKR +KKVAKQNINNTKLVSRAQSEEVTYLRQIFNGEY +LFYDAARIPAEHLNVKPLEEQHPLESRKAWY +KVAGPSSVGGAGVSTPHSTKINKPR +LYYKILGHQVVDISFDVPLPK +SMKEKYGFAGFPVTTDGKRNAKLVGVITSRDIQFVE +TNANLPEGEKKQITVVGATSGDTGSAAIYGLR +PIKVVRLPSDGSVEETEAIAISKDWK +DENKEYEFDGVQDGHGNSQLVTAAILQDLSK +QLDSPFRTPLARYLNRFHNPVTEYFKKNMTLR +GGSGKRSSSSTPFSTGGNDSNNSSDYK +REAANAGKKTEKVDNAKK +TLIARKIGTMLNAKEPKIVNGPEILSKYVGSSEENIRNLFKDAE +SVPDYLTEDTTEFDEALEEVSVFVE +RAQKLHSLKSSDITAILPTEQSQKLVLAKK +GGSSLSPDKSSLESPTMLKLSTDSKPFSYQE +GLLRNISKLKFWPLEDVLTEKY +TKNTSCEQHLHQWTFWEDSGYKHYRATER +VQDDEVGDGTTSVTVLSAELLR +GSHKTGKYTGYGTTHKIRAQLNFNDEKKWK +KGSGNIFIKNLHPDIDNKALYDTFSVF +YLENIKK +VVEYDVAKEFADANKMPFLETSALDSTNVEDAFLTMAR +YQLLDELPMLYATIIPSWSIFAETQEILIKDEK +LNDKQTGLGLTQGWSNTNNLQTKLEFANLTPGLK +LDLSPSYGANNHSTDVSPSVGNSSTPAVIEETDSSSHF +VIDVDGNPVIEVQYLEETKTFSPQEISAMVLTK +MEETAKKPASATVSAKSSHDGGTDDLAHLFSTPEIKK +LTLLVQTVSNGSGGRFVNNTQDIQTSNGTSILGSLSLR +MNEGNVTQVDTPVTICGDIHGQLHDLLTLFEKSGGVEKTR +FQYIAISQSDADSESCKMPQTVEWSKLISENKKV +DQLIISSSANKLLQLFLTPMDSIDLAPNTLTNIL +SPNQLHEKEYESNIEAGLASGVGKGDNSIKQHQYKK +FDYFVFGGILGDHPPRDRTKELKTAYPNLLISRR +RQIDKEEWLLPRMKAWSLEDVEKTLDFAER +NEFHVFVCAAFLIKWSDQLMEMDFQETITFLQNPPTK +EKTGNGSGLGIVFPIGQKKIPEPADSDIFLPCFRYAAASDF +LLEKWSKFETYKRITKKDINVAASKMIDLR +VMSCSFSNQVLAQIALFKSNDKSFREKHIEFQK +AWPDDAGVLSLNDPQTPAELISATK +LLNLLTSSTLPNGGWWNEPGFLQAAIEISKTKPR +LIEAFNEIAEDSEQFDKFYSAFAK +LLGLEIKISSKLLMKSAAGYPLTRRENLQLKR +LSALRAELFLLNRDLPAEVDIPTLLPPNKKGKLHKL +RAAQRKLKQLKADAKSVNHLK +SEVEGLDKLNDGTLFKVEVLGPFAFRIGSVKEYGEYKK +IVAKNDMTTMK +ELAVPGTYFPGKPTIRIAKFEPLFSVISSKQRPR +RNIQGKNYKIFLISGVSEVFNFKPQVRNEIDK +TKPYLDKVESK +LINNKNVQVQLDNIEQILNEEAFTDNQLRLK +ETHTKLTETRSERIKSLESSVKELSLNKSAIPSPR +GLSKQIFSKNTKTPCGTVGYTAPEVVKDEHYSMK +PPIDPKDGGRIPDPLCVIQIALEGEISKESVRNSLSR +HLLKLANKQLSDKISCLQDLVEKEQVHPLHK +EIGWKGEQINIPLLPGEQTGPLAKEVAQWINGIQYGE +NTFGANIDMDGIKELPEFPIKK +SIAFLSMSVLPTYTTPHPLQELKHFWSIAVEPR +ESQVEDMQDDEPLANEQNTSRGNISSGLKSGEGVALPEKVIKAY +KNKASSSSLSLNVLKKRNSQSSLKHKSSHASLQKFK +KENEMLAQDKLVAETEDRKNTLEEYIYTLRGK +LLNTNVDGNIK +SSKDGQIIVLKVNHYQQESEVKFLNCECIRKINLK +IYETEKFNGVAELLEILGSIINGFALPLKEEHK +ISMINNGQDVSQFKKLREPRKGKVAATTAVVVK +EEVKCIDYTVDLEAGLPRHESSGKSNTLKQCYNAVL +WVRVTGYWFLDDKSTFKPPAELQEFISEARSK +NYSSSLAIDLIRDVAKPMSIESIRQTVATLNVLIKDK +ALPDAVTIIEPK +YWHDPGAFAKPVFKNLCNTFVSAAFSFGGSELVLL +VAPLAGAALSMVGPNPLKKAPIPPLAYKVLATLEIEL +GLWDVSFCQYDKLLATSSGDKTVKIWSLDTFSV +VYYLSLEFLMGRALDNALINMKIEDPEDPAASK +QVKKKDTQRIYAMKVLSKKVIVKKNEIAHTIGER +RNKTSSYANDPEVKPLTADNLCLGVGSDESIDAIIR +LTLPLYTTTTCHTHPHLYTDFTYAHGCYSIYHLK +KDTLSGTSNGNYIQLQDLVQLGK +NVPEIVNLLNKKFGHNAIGLTGEDTFEERSEK +NIIKKLLRHPSFDPIRHHLPEDITTIDPYSL +AIRLEKGTKNINQETKNLSISYK +ETEFNELLAEAEKELEKTTVLK +MKNKLEKLNSLLTYIKSEITQQEKGLNELSIR +RASKICYAITKLLYRLECHPIGMALLKKYLHNQL +EDIDQVFELFKRYQSRFELIQIFTKEEFEHNF +NDDFELQADPTNEARPNSRGKIKPKTDFKPKSR +INQIVPLLEKGDIIIDGGNSHFPDSNRRYEELKKK +KSVLKMPALTDASIKQQQEQPSTLAFILSQFNR +RFMDLESWRIETYNELERWFQVDVPKNFE +GQFPEVYVPTVFENYVADVEVDGR +YTGKTGGTAKTGASRRTAKNKRREERKRARGKKGTIYE +ESFLTFYFSNHLYLCPAIIRLSSVCTLARTDY +RKSTATNVEILIPVPDDADTPTFKYSHGSLKYVPE +IGEVLGIKDQAK +FIPLFDAVPLSAIRHARGEPGYSYPTSDLGLQE +QDHMKSDKEAKTDTTQTAPVTNNVHPVWLLRKNQSR +PAVANSELFKNSICCCTFSHDGKYMVIGCKDGSLHLWK +EKGNEIEITVYDKVNDSLIPVAIMWLLLSDIAEEIRKK +QGNNVAAQQYYMYQNQFPGYSYPGMFDSQGY +LRIIVSYRNKVEGSGSWEVSKLDLPNVFHKK +SGDELYSCSTDDFITKYKIPVNLQLETKYLR +ARLAIQFLEWQNPIFEIISLLNSSPSILLNFLR +LFKANPLVDNCNSKKEPGYQLLLWFGYVLEELR +GDEGQADEDEQQDDDMNGSSLPRDSGSSAAPGNGTSAMATR +ERKLERKEKMSLKRKAIEEELKAEELDENAEEER +KVEKNVGKAMKNIEVKIDQQLKKKLKDSHSVLKKIR +TSPTGVSNDVMGSVPRHPFFLKVIKSLKHYKK +LRSVERNASGITQEKWINADFSLLKEPAAKLL +KALKILKPFKSSLKKENANNVILNEVFADAYLDNGQVEKAY +VVFPTYEDVPKLLLTFKQIMNTYRKGSLGQRQRQR +IHLDSNNLTLKELAVVCNILIK +RDILERQNNQAITIFPEVNIMSLELSIIQRK +LISVSLVNQLSNIENSIGKYLVKAIGALASNNSGVDEHNQILNK +SLVNKGNTDNIRELALKLAWKPHSLFADCRFACLITK +SAAPNVLANLKDTLDSIDEGGIIPTK +NFFPCPCGYQICQFCYNNIRQNPELNGRCPACRRKYDDE +FACLITKRHLRSLKYLETLALGWPTLHWKF +NIDQLEWEVLHVSLHFWVVEVSTDQTLSVENGIR +RLSSHSSHKLSRSDLKALGGSETISDGPSQLTFKDR +VGLIGKLAPTYAPPKEWMRICFELLELLKSTNK +HGDRWNGPKKIEIRQSLTLADLEGEEQEDADEDK +REDNKDYLAVSAPLEDTVGAIYIVPWDILTVAR +IPANEVVPGDILQLEDGTVIPTDGR +GLSKKHSRSSSLGTNPSSWIGGQANWTDYPPPIDAQTKTR +SKVAKRIRMETKVFPEIKINDAQSQLERSRCR +SNSVLLPPLTQYIPQAGGIPPSFQNPAIQSTMPAGNIGQQQF +QIRKENQKKLHEKLEKNGLLRFSAADANGPDSEPR +RWKRLFVLLHNKYRQFSPHIKRYFDHSCQK +KKEEVPPVVQK +NGDVEVYSRDGNTLKLFQVYPDLLQNAKNDPL +VFYYKMKGDYHRYLAEFSSGDAREKATNSSLEAY +IGDVTSSEIISEEEQQVTTFAFPK +IRDLERLLKKKKDILPSTVIIEKERNLQALRL +LIMTTIFLYTVPLIYDRKQAR +ALQVTPPEHKSDIPPPPDGGALAIVTK +DHNKIVGYDDLNQLFWYPEGIAK +EEFKFMLLILVGDTYDTDTDTVDVNSKLLLEKILL +RFFPGFELDADGDTIIGATTHLQEEYDSDYDSEDNLTQNR +NVPVHVSPAFR +QWHAMIELICSSATVPKHMLDK +KIAYEIELGDGIPKMFHVDVARKALKNCGFEVLVSE +QRRMISELKNRSNIGEPLTKSSNESTYKDIK +AKNIGVSNFAVEDLQRILKVAE +NICIVAHVDHGKTSLSDSLLASNGIISQRLAGKIRFL +KHDPGASKSSVFERKISNVFTKATFGVNSTFVL +QEKETELENLLKLSAKDIWNTDLKAFEVGYQE +STILAVDNLNGFKIGGRALKIDHTFYRPKRSL +NELPFMKRPWFKKAYENAIEFHEKDELLDARDR +WNPSNIWNEVITKLPSCEKLNALIGQSKIVQNL +LFQAAAKHGHIESAYRASHCLEEGLGTTRDSRKSVNFLK +HLQELILYTFMKICLHVNLIQQNINKLSYISRK +MSSTSDNNANSAREKKPLKFVSEGVGNVEAQRIR +EIVRPLQKIRGEE +MANTGCLSPGAFLSKVPEFFQTANEKHITVRLTAKRL +YLSTADVKPDEDKTIYPVFLALK +DNKVEEGSKPKKPKTYIQWVPISSKYNSPLR +ELKSDEISKLFK +YIRGISEVTENTGK +PSSGGGGLFSFFKSKSRSPSSFR +ILAFLALINVASGATEACLPAGQR +KHGAVHLSTYLKVYKVGDIVDIKANGSIQKGMPHK +RLNQNLKASNNNNDSNKNGLNMSDYSNNSPYGRSYDVR +KLEDDDEEKKEKKEKKSKKEKKEKKEKKDK +VLPASLAANIPVK +PADQNAKSIVKEGDANTEDYESV +QDFSINSSFKK +ARSGIIVLPCGAGKTLVGITAACTIKKSVIVLCTSSV +LMGPQIGFTLQQLMELAGFSVAQAVCRQFPLRGK +MGTNHIVVIQTPYKSFLLSTDKKTTSKLFTVLK +HSNAAQNVLADMR +LLEKDVTLRISIQDLVKVLSRDQPIDSRNHSQISSSSV +ICFQNESFSRHFVSSCKRLLDATAKKSKNSSNSDQYQV +DSLFKSFLSEIKDDGQFYLFEE +TGATVGKLPCLAISSSVTAYGRTMILK +KSSYQFMTDIVISDEKGTDVSRFSPVIRDPNFDFK +MPSHRNSNLKF +GDLKRIEEVFDCWFESGSMPYASQHYPFENTE +NRKEVNMIWSKFTKPPHSHLSFENFFQFL +RSILDLPMPKNFTSFSTITTNAIMLNVLGDKHTKDK +KLARDLGTGALVAIK +GVKFFNYGQLIAYIDSLNSNVYNASITENSFFMTFFR +VGQIDIGLALGVESMTNNYKNVNPLGMISSEELQK +PWIFSKETICTIDGKEYDSEFDAISQQLKKHSSEDVAK +EIKKQRKRMQKDELNKQRNEQLERIRVSKEK +EAMLKPNIIFQQLLFWTDPRNLVNQTGSTKKDTVQL +FPFEGETSKFL +VFTDAQLAETQFAR +NYQDNKEWNILIQEAMDSVATR +DTPTERGHIVYRNLFYKYIAAKNAEWSNQELFTKPK +SEIVNHLLGSEK +YLPIKTLCRCCPGCCNMDVKNLDTVSLPFVPAICR +KLLNKIGEGAFSRVFKAVGINTDDQAPVAIKAIIK +PITALFLNNDATACFAATTSRILLFNTTGRNRGR +DVDRVGDPMRMDRYGTYYLLKPKQELTVQL diff --git a/BatchConvertPeptides.txt.out b/BatchConvertPeptides.txt.out new file mode 100644 index 0000000..7c84549 --- /dev/null +++ b/BatchConvertPeptides.txt.out @@ -0,0 +1,26 @@ +; Isotopic Weight Mode Enabled +; Standard deviations will not be displayed +; Source formula will be displayed with proper capitalization +; Display of source formula is now Off +; Will not add a space every 10 amino acids + +; One letter Amino Acid weight mode: input formulas are assumed to be peptides in one-letter notation +75.032027 +89.0476762 +105.0425912 +115.0633254 +117.0789746 +119.0582404 +121.0197482 +131.0946238 +132.0534898 +133.0375062 +146.069139 +146.1055224 +147.0531554 +149.0510466 +155.0694734 +165.0789746 +174.1116704 +181.0738896 +204.0898732 diff --git a/BatchSimple.txt b/BatchSimple.txt new file mode 100644 index 0000000..2852f32 --- /dev/null +++ b/BatchSimple.txt @@ -0,0 +1,8 @@ +; Enable Isotopic Distribution Mode +ISOTOPICDISTRIBUTION=ON +; Simply enter a formula to obtain the isotopic distribution +CH2(CH2)7CH2Br + +; Change the charge state with the following command +ISOTOPICDISTRIBUTIONCHARGE=2 +CH2(CH2)7CH2Br diff --git a/BatchSimple.txt.out b/BatchSimple.txt.out new file mode 100644 index 0000000..cbc2ba2 --- /dev/null +++ b/BatchSimple.txt.out @@ -0,0 +1,23 @@ + +; Isotopic Distribution calculations now On +Isotopic Abundances for CH2(CH2)7CH2Br + Mass/Charge Fraction Intensity + 205.05919 0.4588825 100.00 + 206.05919 0.0459075 10.00 + 207.05919 0.4484460 97.73 + 208.05919 0.0447120 9.74 + 209.05919 0.0020020 0.44 + 210.05919 0.0000528 0.01 + 211.05919 0.0000017 0.00 + +; Isotopic Distribution charge set to 2 +Isotopic Abundances for CH2(CH2)7CH2Br + Mass/Charge Fraction Intensity + 103.03323 0.4588825 100.00 + 103.53323 0.0459075 10.00 + 104.03323 0.4484460 97.73 + 104.53323 0.0447120 9.74 + 105.03323 0.0020020 0.44 + 105.53323 0.0000528 0.01 + 106.03323 0.0000017 0.00 + diff --git a/Column1.cap b/Column1.cap new file mode 100644 index 0000000..940e8ac --- /dev/null +++ b/Column1.cap @@ -0,0 +1,70 @@ +; Molecular Weight Calculator Capillary Flow Information File +CapillaryFlowMode=0 +CapillaryFlowComputationType=3 +CapillaryFlowLinkFlowRate=1 +CapillaryFlowLinkLinearVelocity=1 +CapillaryFlowShowPeakBroadeningSave=0 +CapillaryFlowWeightSource=0 +CapillaryFlowCustomMass=100 +CapillaryFlowOpenText0=50 +CapillaryFlowPackedText0=3000 +CapillaryFlowOpenText1=50 +CapillaryFlowPackedText1=50 +CapillaryFlowOpenText2=30 +CapillaryFlowPackedText2=75 +CapillaryFlowOpenText3=0.0089 +CapillaryFlowPackedText3=0.0089 +CapillaryFlowOpenText4=0 +CapillaryFlowPackedText4=5 +CapillaryFlowOpenText5=100 +CapillaryFlowPackedText5=300 +CapillaryFlowOpenText6=22.948184 +CapillaryFlowPackedText6=1 +CapillaryFlowOpenText7=0.4 +CapillaryFlowPackedText7=0.4 +CapillaryFlowOpenText8=1 +CapillaryFlowPackedText8=1 +CapillaryFlowOpenText9=924.070953 +CapillaryFlowPackedText9=100 +CapillaryFlowOpenText10=30 +CapillaryFlowPackedText10=5 +CapillaryFlowOpenText11=2.1788 +CapillaryFlowPackedText11=1 +CapillaryFlowOpenText12=0.000005 +CapillaryFlowPackedText12=0.000001 +CapillaryFlowOpenText13=5 +CapillaryFlowPackedText13=5 +CapillaryFlowOpenText14=50 +CapillaryFlowPackedText14=50 +CapillaryFlowOpenText15=30 +CapillaryFlowPackedText15=30 +CapillaryFlowOpenText16=0 +CapillaryFlowPackedText16=0 +CapillaryFlowOpenCombo0=0 +CapillaryFlowPackedCombo0=0 +CapillaryFlowOpenCombo1=0 +CapillaryFlowPackedCombo1=0 +CapillaryFlowOpenCombo2=0 +CapillaryFlowPackedCombo2=0 +CapillaryFlowOpenCombo3=2 +CapillaryFlowPackedCombo3=2 +CapillaryFlowOpenCombo4=4 +CapillaryFlowPackedCombo4=4 +CapillaryFlowOpenCombo5=2 +CapillaryFlowPackedCombo5=2 +CapillaryFlowOpenCombo6=2 +CapillaryFlowPackedCombo6=2 +CapillaryFlowOpenCombo7=2 +CapillaryFlowPackedCombo7=2 +CapillaryFlowOpenCombo8=2 +CapillaryFlowPackedCombo8=2 +CapillaryFlowOpenCombo9=2 +CapillaryFlowPackedCombo9=2 +CapillaryFlowOpenCombo10=4 +CapillaryFlowPackedCombo10=4 +CapillaryFlowOpenCombo11=5 +CapillaryFlowPackedCombo11=5 +CapillaryFlowOpenCombo12=4 +CapillaryFlowPackedCombo12=4 +CapillaryFlowOpenCombo13=0 +CapillaryFlowPackedCombo13=0 diff --git a/ComputeProteinMass.txt b/ComputeProteinMass.txt new file mode 100644 index 0000000..fadf293 --- /dev/null +++ b/ComputeProteinMass.txt @@ -0,0 +1,16 @@ +; Set weight mode +WEIGHTMODE=AVERAGE + +; Set Standard Deviation mode +STDDEVMODE=OFF + +; Return capitalized (formatted) formulas +CAPITALIZED=ON + +; Don't display the source formula +MWSHOWSOURCEFORMULA=OFF + +ONELETTERPEPTIDEWEIGHTMODE=ON + +MNHDPFSWGRPADSTYGAYNTQIANAGASPMVNTQQPIVTGTSVISMKYDNGVIIAADNLGSYGSLLRFNGVERLIPVGDNTVVGISGDISDMQHIERLLKDLVTENAYDNPLADAEEALEPSYIFEYLATVMYQRRSKMNPLWNAIIVAGVQSNGDQFLRYVNLLGVTYSSPTLATGFGAHMANPLLRKVVDRESDIPKTTVQVAEEAIVNAMRVLYYRDARSSRNFSLAIIDKNTGLTFKKNLQVENMKWDFA +MTDRYSFSLTTFSPSGKLGQIDYALTAVKQGVTSLGIKATNGVVIATEKKSSSPLAMSETLSKVSLLTPDIGAVYSGMGPDYRVLVDKSRKVAHTSYKRIYGEYPPTKLLVSEVAKIMQEATQSGGVRPFGVSLLIAGHDEFNGFSLYQVDPSGSYFPWKATAIGKGSVAAKTFLEKRWNDELELEDAIHIALLTLKESVEGEFNGDTIELAIIGDENPDLLGYTGIPTDKGPRFRKLTSQEINDRLEAL diff --git a/Differnc.frm b/Differnc.frm new file mode 100644 index 0000000..015d1e3 --- /dev/null +++ b/Differnc.frm @@ -0,0 +1,193 @@ +VERSION 5.00 +Begin VB.Form frmDiff + Caption = "Percent Solver Differences" + ClientHeight = 4470 + ClientLeft = 720 + ClientTop = 2355 + ClientWidth = 6645 + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 3030 + Icon = "Differnc.frx":0000 + LinkTopic = "Form1" + LockControls = -1 'True + PaletteMode = 1 'UseZOrder + ScaleHeight = 4470 + ScaleWidth = 6645 + Tag = "8600" + Begin VB.CommandButton cmdCopy + Caption = "&Copy" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 360 + Left = 1200 + TabIndex = 1 + Tag = "8610" + ToolTipText = "Copies the results to the clipboard" + Top = 3960 + Width = 1035 + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "Cl&ose" + Default = -1 'True + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 360 + Left = 2520 + TabIndex = 0 + Tag = "4000" + Top = 3960 + Width = 1035 + End + Begin VB.Label lblDiff3 + Height = 3615 + Left = 4440 + TabIndex = 4 + Top = 120 + Width = 1695 + End + Begin VB.Label lblDiff2 + Height = 3615 + Left = 2280 + TabIndex = 3 + Top = 120 + Width = 1935 + End + Begin VB.Label lblDiff1 + Height = 3615 + Left = 120 + TabIndex = 2 + Top = 120 + Width = 1935 + End +End +Attribute VB_Name = "frmDiff" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Sub cmdCopy_Click() + ReDim Diff(3) As String + Dim strTextToCopy As String + Dim intCharLoc As Integer, intIndex As Integer + ReDim start(3) As Integer + + ' Copy results to Clipboard + Clipboard.Clear + + Diff(1) = lblDiff1.Caption + Diff(2) = lblDiff2.Caption + Diff(3) = lblDiff3.Caption + start(1) = 1 + start(2) = 1 + start(3) = 1 + strTextToCopy = frmMain.rtfFormulaSingle.Text & vbCrLf & frmMain.lblValueForX.Caption + + ' Format results into columns + Do + For intIndex = 1 To 3 + For intCharLoc = start(intIndex) To Len(Diff(intIndex)) + If Asc(Mid(Diff(intIndex), intCharLoc, 1)) = 13 Or Asc(Mid(Diff(intIndex), intCharLoc, 1)) = 10 Then + strTextToCopy = strTextToCopy & Trim(Mid(Diff(intIndex), start(intIndex), intCharLoc - start(intIndex) - 0)) + start(intIndex) = intCharLoc + 1 + Exit For + End If + If intCharLoc = Len(Diff(intIndex)) Then + strTextToCopy = strTextToCopy & Trim(Mid(Diff(intIndex), start(intIndex), intCharLoc - start(intIndex) + 1)) + start(intIndex) = Len(Diff(intIndex)) + Exit For + End If + Next intCharLoc + If intIndex = 1 Or intIndex = 2 Then strTextToCopy = strTextToCopy & vbTab + Next intIndex + strTextToCopy = strTextToCopy & vbCrLf + Loop Until start(1) >= Len(Diff(1)) + + Clipboard.SetText strTextToCopy, vbCFText + +End Sub + +Private Sub cmdOK_Click() + frmDiff.Hide +End Sub + +Private Sub cmdOK_KeyDown(KeyCode As Integer, Shift As Integer) + If KeyCode = vbKeyEscape Then cmdOK_Click +End Sub + +Private Sub Form_Activate() + ' Put window in center of screen + SizeAndCenterWindow Me, cWindowLowerThird, 8000, 5000 + +End Sub + +Private Sub Form_Load() + + Form_Resize + +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + QueryUnloadFormHandler Me, Cancel, UnloadMode +End Sub + +Private Sub Form_Resize() + + If frmDiff.WindowState <> vbMinimized Then + If frmDiff.Width < 4500 Then frmDiff.Width = 4500 + If frmDiff.Height < 2500 Then frmDiff.Height = 2500 + + With lblDiff1 + .top = 240 + .Left = 240 + .Height = frmDiff.ScaleHeight * 0.9 + .Width = (frmDiff.ScaleWidth - 50) / 4 + End With + + With lblDiff2 + .top = 240 + .Left = frmDiff.ScaleWidth / 3 + .Height = frmDiff.ScaleHeight * 0.9 + .Width = (frmDiff.ScaleWidth - 50) / 4 + End With + + With lblDiff3 + .top = 240 + .Left = 2 * frmDiff.ScaleWidth / 3 + .Height = frmDiff.ScaleHeight * 0.9 + .Width = (frmDiff.ScaleWidth - 50) / 4 + End With + + cmdCopy.top = frmDiff.ScaleHeight - cmdOK.Height - 100 + cmdCopy.Left = (frmDiff.Width - cmdOK.Width) / 3 + cmdOK.top = frmDiff.ScaleHeight - cmdOK.Height - 100 + cmdOK.Left = 2 * (frmDiff.Width - cmdOK.Width) / 3 + + End If +End Sub + diff --git a/Differnc.frx b/Differnc.frx new file mode 100644 index 0000000000000000000000000000000000000000..03ffc39b1198f79e65f16ea4fbb52736b6fa2c2b GIT binary patch literal 2250 zcmeHJF>b>!3_Mw}(lJwKk9|fT)G-gpkjL~D9sMo!j+AXUkc12w3ebv+FDN*>2i6)no>Ic3-LYJZ) z-*_uzcU69wrapzgjulDmt%Pggd%ChZzoD(treEhnA^lFBYtT#5vrg~lpqsy%&lSI@ KN;COi!|WGquOTx4 literal 0 HcmV?d00001 diff --git a/EDITABBR.FRM b/EDITABBR.FRM new file mode 100644 index 0000000..98bfcc9 --- /dev/null +++ b/EDITABBR.FRM @@ -0,0 +1,521 @@ +VERSION 5.00 +Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "msflxgrd.ocx" +Begin VB.Form frmEditAbbrev + Caption = "Editing Abbreviations" + ClientHeight = 5730 + ClientLeft = 2655 + ClientTop = 1650 + ClientWidth = 5565 + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 1020 + Icon = "EDITABBR.frx":0000 + LinkTopic = "Form1" + PaletteMode = 1 'UseZOrder + ScaleHeight = 5730 + ScaleWidth = 5565 + Tag = "9000" + Begin MSFlexGridLib.MSFlexGrid grdAmino + Height = 2055 + Left = 120 + TabIndex = 0 + Tag = "9140" + ToolTipText = "Click to change an abbreviation" + Top = 120 + Width = 5175 + _ExtentX = 9128 + _ExtentY = 3625 + _Version = 393216 + Rows = 17 + Cols = 5 + FixedCols = 0 + ScrollBars = 2 + End + Begin MSFlexGridLib.MSFlexGrid grdNormal + Height = 2175 + Left = 120 + TabIndex = 1 + Tag = "9140" + ToolTipText = "Click to change an abbreviation" + Top = 2400 + Width = 5175 + _ExtentX = 9128 + _ExtentY = 3836 + _Version = 393216 + Rows = 17 + Cols = 4 + FixedCols = 0 + ScrollBars = 2 + End + Begin VB.CommandButton cmdReset + Appearance = 0 'Flat + Caption = "&Reset to Defaults" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 3000 + TabIndex = 2 + Tag = "9010" + ToolTipText = "Resets abbreviations to the program defaults" + Top = 4680 + Width = 1935 + End + Begin VB.CommandButton cmdCancel + Appearance = 0 'Flat + Cancel = -1 'True + Caption = "&Cancel" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 1800 + TabIndex = 3 + Tag = "4020" + Top = 4680 + Width = 1035 + End + Begin VB.CommandButton cmdOK + Caption = "&OK" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 600 + TabIndex = 4 + Tag = "4010" + Top = 4680 + Width = 1035 + End +End +Attribute VB_Name = "frmEditAbbrev" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Const AMINO_GRID_COL_COUNT = 7 +Private Const ABBREV_GRID_COL_COUNT = 6 + +Private mValueChanged As Boolean + +Private Sub HandleGridClick(ThisGrid As MSFlexGrid, blnAminoAcidGrid As Boolean) + + Dim strMessage As String + + Dim intCurrentRow As Integer + Dim strAbbrevID As String, lngAbbrevID As Long + Dim strSymbol As String, strFormula As String, strCharge As String, strOneLetterSymbol As String, strComment As String + Dim strNewSymbol As String, strNewFormula As String, strNewCharge As String, strNewOneLetterSymbol As String, strNewComment As String + Dim sngCharge As Single + Dim lngErrorID As Long + Dim lngMaxAbbrevCount As Long + Dim dblTestMass As Double + Dim dblTestMassOfFormula As Double + + ' Determine the current row + intCurrentRow = ThisGrid.Row + + If intCurrentRow < 1 Then Exit Sub + + ' Determine which abbreviation the user clicked on + strAbbrevID = ThisGrid.TextMatrix(intCurrentRow, 0) + + If strAbbrevID = "" Then + lngAbbrevID = 0 + lngMaxAbbrevCount = objMwtWin.GetAbbreviationCountMax() + If objMwtWin.GetAbbreviationCount >= lngMaxAbbrevCount Then + MsgBox LookupLanguageCaption(9060, "Sorry, only " & Trim(lngMaxAbbrevCount) & " total abbreviations are allowed."), _ + vbOKOnly & vbExclamation, LookupLanguageCaption(9050, "Maximum reached") + Exit Sub + End If + Else + lngAbbrevID = Val(strAbbrevID) + With ThisGrid + strSymbol = .TextMatrix(intCurrentRow, 1) + strFormula = .TextMatrix(intCurrentRow, 2) + strCharge = .TextMatrix(intCurrentRow, 3) + If blnAminoAcidGrid Then + strOneLetterSymbol = .TextMatrix(intCurrentRow, 4) + strComment = .TextMatrix(intCurrentRow, 5) + Else + strComment = .TextMatrix(intCurrentRow, 4) + End If + End With + End If + + ' The Message of the dialog box: + strMessage = LookupLanguageCaption(9090, "The abbreviation or molecular formula will be changed to the value you type. Select Remove to delete the abbreviation or Cancel to ignore any changes.") + + ' Display the dialog box and get user's response. + With frmEditAbbrevDetails + .lblHiddenButtonClickStatus = BUTTON_NOT_CLICKED_YET + .lblInstructions.Caption = strMessage + .txtSymbol = strSymbol + .rtfFormula.Text = strFormula + .txtCharge = strCharge + .txtComment = strComment + + .txtOneLetterSymbol.Visible = blnAminoAcidGrid + .lblOneLetterSymbol.Visible = blnAminoAcidGrid + + If blnAminoAcidGrid Then + .txtOneLetterSymbol = strOneLetterSymbol + Else + .txtOneLetterSymbol = "" + End If + + .Show vbModal + + If .lblHiddenButtonClickStatus = BUTTON_NOT_CLICKED_YET Then .lblHiddenButtonClickStatus = BUTTON_CANCEL + End With + + If Not frmEditAbbrevDetails.lblHiddenButtonClickStatus = BUTTON_CANCEL Then + If frmEditAbbrevDetails.lblHiddenButtonClickStatus = BUTTON_RESET Then + ' BUTTON_RESET indicates to remove the abbreviation + If IsNumeric(strAbbrevID) Then + lngAbbrevID = Val(strAbbrevID) + + objMwtWin.RemoveAbbreviationByID lngAbbrevID + End If + Else + With frmEditAbbrevDetails + strNewSymbol = .txtSymbol + strNewFormula = .rtfFormula.Text + RemoveHeightAdjustChar strNewFormula + strNewCharge = .txtCharge + strNewOneLetterSymbol = .txtOneLetterSymbol + strNewComment = .txtComment + End With + + If IsNumeric(strNewCharge) Then + sngCharge = Val(strNewCharge) + Else + sngCharge = 0 + End If + + lngErrorID = objMwtWin.SetAbbreviationByID(lngAbbrevID, strNewSymbol, strNewFormula, sngCharge, blnAminoAcidGrid, strNewOneLetterSymbol, strNewComment) + + If lngErrorID = 0 Then + ' Check for circular reference + dblTestMass = objMwtWin.ComputeMass(strNewSymbol) + dblTestMassOfFormula = objMwtWin.ComputeMass(strNewFormula) + If Round(dblTestMass, 3) <> Round(dblTestMassOfFormula, 3) Or dblTestMassOfFormula = 0 Then + ' Probably an invalid abbreviation + + MsgBox LookupLanguageCaption(9120, "Warning, test usage of the new/updated abbreviation did not give the same mass as the formula for the abbreviation. This probably indicates a problem with the abbreviation's formula."), _ + vbExclamation + vbOKOnly, LookupLanguageCaption(20350, "Error") + End If + End If + + If lngErrorID <> 0 Then MsgBox objMwtWin.GetMessageStatement(lngErrorID), vbInformation + vbOKOnly, LookupMessage(350) + End If + + Me.MousePointer = vbHourglass + + ' Validate all of the abbreviations + objMwtWin.ValidateAllAbbreviations + + Me.MousePointer = vbDefault + + UpdateGrid ThisGrid, blnAminoAcidGrid + mValueChanged = True + End If + +End Sub + +Private Sub InitializeGrids() + With grdAmino + .ColWidth(0) = 0 + .Cols = AMINO_GRID_COL_COUNT + .TextMatrix(0, 0) = "AbbrevID (Hidden)" + .TextMatrix(0, 1) = LookupLanguageCaption(9180, "Amino Acid Name") + .TextMatrix(0, 2) = LookupLanguageCaption(9160, "Formula") + .TextMatrix(0, 3) = LookupLanguageCaption(9150, "Charge") + .TextMatrix(0, 4) = LookupLanguageCaption(9190, "1 Letter") + .TextMatrix(0, 5) = LookupLanguageCaption(9195, "Comment") + .TextMatrix(0, 6) = LookupLanguageCaption(20350, "Error") + .Row = 1 + .Col = 1 + End With + + With grdNormal + .ColWidth(0) = 0 + .Cols = ABBREV_GRID_COL_COUNT + .TextMatrix(0, 0) = "AbbrevID (Hidden)" + .TextMatrix(0, 1) = LookupLanguageCaption(9170, "Abbrev Name") + .TextMatrix(0, 2) = LookupLanguageCaption(9160, "Formula") + .TextMatrix(0, 3) = LookupLanguageCaption(9150, "Charge") + .TextMatrix(0, 4) = LookupLanguageCaption(9195, "Comment") + .TextMatrix(0, 5) = LookupLanguageCaption(20350, "Error") + .Row = 1 + .Col = 1 + End With + + UpdateGrids + +End Sub + +Public Sub PositionFormControls() + Dim tempHeight As Long + + With grdAmino + .Left = 120 + .Top = 120 + .Width = frmEditAbbrev.Width - 300 + .Height = frmEditAbbrev.Height * 0.4 + .Cols = AMINO_GRID_COL_COUNT + .ColWidth(0) = 0 + .ColWidth(1) = (.Width - 350) * 1 / 8 + .ColWidth(2) = (.Width - 350) * 1.8 / 8 + .ColWidth(3) = (.Width - 350) * 1 / 8 + .ColWidth(4) = (.Width - 350) * 1 / 8 + .ColWidth(5) = (.Width - 350) * 2.5 / 8 + .ColWidth(6) = (.Width - 350) * 0.7 / 8 + .ColAlignment(2) = vbLeftJustify + .ColAlignment(3) = vbLeftJustify + .ColAlignment(4) = vbLeftJustify + .ColAlignment(5) = vbLeftJustify + .ColAlignment(6) = vbLeftJustify + End With + + With grdNormal + .Left = grdAmino.Left + .Top = grdAmino.Top + grdAmino.Height + 150 + .Width = grdAmino.Width + tempHeight = frmEditAbbrev.Height - grdAmino.Height - 1400 + If tempHeight < 0 Then tempHeight = 0 + .Height = tempHeight + .Cols = ABBREV_GRID_COL_COUNT + .ColWidth(0) = 0 + .ColWidth(1) = (.Width - 350) * 1 / 7 + .ColWidth(2) = (.Width - 350) * 1.8 / 7 + .ColWidth(3) = (.Width - 350) * 1 / 7 + .ColWidth(4) = (.Width - 350) * 2.5 / 7 + .ColWidth(5) = (.Width - 350) * 0.7 / 7 + .ColAlignment(2) = vbLeftJustify + .ColAlignment(3) = vbLeftJustify + .ColAlignment(4) = vbLeftJustify + .ColAlignment(5) = vbLeftJustify + End With + + cmdOK.Top = grdNormal.Top + grdNormal.Height + 75 + cmdOK.Left = cmdOK.Left + cmdCancel.Top = cmdOK.Top + cmdReset.Top = cmdOK.Top + +End Sub + +Public Sub ResetValChangedToFalse() + mValueChanged = False +End Sub + +Private Sub UpdateGrid(ThisGrid As MSFlexGrid, blnAminoAcidGrid As Boolean) + + Dim lngIndex As Long, intCurrentRow As Integer, intCurrentCol As Integer + Dim lngAbbrevCount As Long, lngThisAbbrevTypeCount As Integer + Dim strSymbol As String, strFormula As String, strOneLetterSymbol As String + Dim strComment As String, strErrorLabel As String + Dim sngCharge As Single + Dim blnIsAminoAcid As Boolean, blnInvalidSymbolOrFormula As Boolean + Dim lngError As Long + + intCurrentRow = ThisGrid.Row + intCurrentCol = ThisGrid.Col + + ' Grab the abbreviations from objMwtWin and fill the grid + lngAbbrevCount = objMwtWin.GetAbbreviationCount + + lngThisAbbrevTypeCount = 0 + For lngIndex = 1 To lngAbbrevCount + ' Grab data from objMwtWin + + lngError = objMwtWin.GetAbbreviation(lngIndex, strSymbol, strFormula, sngCharge, blnIsAminoAcid, strOneLetterSymbol, strComment, blnInvalidSymbolOrFormula) + Debug.Assert lngError = 0 + + If blnInvalidSymbolOrFormula Then + strErrorLabel = LookupLanguageCaption(4060, "Yes") + Else + strErrorLabel = LookupLanguageCaption(4065, "No") + End If + + ' The following assures that amino acids get shown in grdAmino and standard abbreviations get shown in grdNormal + If blnAminoAcidGrid = blnIsAminoAcid Then + lngThisAbbrevTypeCount = lngThisAbbrevTypeCount + 1 + + With ThisGrid + ' Enlarge grid if necessary + If lngThisAbbrevTypeCount >= .Rows - 1 Then + .Rows = lngThisAbbrevTypeCount + 2 + End If + + .TextMatrix(lngThisAbbrevTypeCount, 0) = lngIndex + .TextMatrix(lngThisAbbrevTypeCount, 1) = strSymbol + .TextMatrix(lngThisAbbrevTypeCount, 2) = strFormula + .TextMatrix(lngThisAbbrevTypeCount, 3) = Trim(Str(sngCharge)) + If .Cols >= AMINO_GRID_COL_COUNT And blnAminoAcidGrid Then + .TextMatrix(lngThisAbbrevTypeCount, 4) = strOneLetterSymbol + .TextMatrix(lngThisAbbrevTypeCount, 5) = strComment + .TextMatrix(lngThisAbbrevTypeCount, 6) = strErrorLabel + Else + .TextMatrix(lngThisAbbrevTypeCount, 4) = strComment + .TextMatrix(lngThisAbbrevTypeCount, 5) = strErrorLabel + End If + End With + End If + Next lngIndex + + ' Erase remaining cells grid + For lngIndex = lngThisAbbrevTypeCount + 1 To ThisGrid.Rows - 1 + With ThisGrid + .TextMatrix(lngIndex, 0) = "" + .TextMatrix(lngIndex, 1) = "" + .TextMatrix(lngIndex, 2) = "" + .TextMatrix(lngIndex, 3) = "" + If .Cols >= AMINO_GRID_COL_COUNT And blnAminoAcidGrid Then + .TextMatrix(lngIndex, 4) = "" + .TextMatrix(lngIndex, 5) = "" + .TextMatrix(lngIndex, 6) = "" + Else + .TextMatrix(lngIndex, 4) = "" + .TextMatrix(lngIndex, 5) = "" + End If + End With + Next lngIndex + + ' Adjust row height of rows in grid + For lngIndex = 1 To ThisGrid.Rows - 1 + ThisGrid.RowHeight(lngIndex) = TextHeight("123456789gT") + 60 + Next lngIndex + + ' Re-position cursor + ThisGrid.Row = intCurrentRow + If intCurrentRow - 3 >= 1 Then + ThisGrid.TopRow = intCurrentRow - 3 + Else + ThisGrid.TopRow = 1 + End If + ThisGrid.Col = intCurrentCol + +End Sub + +Private Sub UpdateGrids() + UpdateGrid grdAmino, True + UpdateGrid grdNormal, False +End Sub + +Private Sub cmdCancel_Click() + Dim eResponse As VbMsgBoxResult + + If mValueChanged Then + eResponse = YesNoBox(LookupLanguageCaption(9100, "Are you sure you want to lose all changes?"), _ + LookupLanguageCaption(9105, "Closing Edit Abbreviations Box")) + If eResponse = vbYes Then + LoadAbbreviations False + Else + Exit Sub + End If + End If + + mValueChanged = False + Me.Hide +End Sub + +Private Sub cmdOK_Click() + + Me.MousePointer = vbHourglass + + If mValueChanged Then + SaveAbbreviations True, True + End If + + mValueChanged = False + + Me.MousePointer = vbDefault + Me.Hide +End Sub + +Private Sub cmdReset_Click() + Dim eResponse As VbMsgBoxResult + + eResponse = YesNoBox(LookupLanguageCaption(9110, "Are you sure you want to reset the abbreviations to the default abbreviations?"), _ + LookupLanguageCaption(9115, "Reset to Defaults")) + + ' Evaluate the user's Response. + If eResponse = vbYes Then + mValueChanged = True + LoadAbbreviations True + + UpdateGrids + End If + +End Sub + +Private Sub Form_Activate() + ' Put window in center of screen + SizeAndCenterWindow Me, cWindowExactCenter, 8500, 6200 + UpdateGrids +End Sub + +Private Sub Form_Load() + + PositionFormControls + InitializeGrids + + mValueChanged = False + +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + If UnloadMode = vbFormControlMenu Then + Cancel = True + cmdCancel_Click + End If +End Sub + +Private Sub Form_Resize() + PositionFormControls +End Sub + +Private Sub grdAmino_Click() + HandleGridClick grdAmino, True +End Sub + +Private Sub grdAmino_KeyPress(KeyAscii As Integer) + If KeyAscii = 13 Then grdAmino_Click +End Sub + +Private Sub grdNormal_Click() + HandleGridClick grdNormal, False +End Sub + +Private Sub grdNormal_KeyPress(KeyAscii As Integer) + If KeyAscii = 13 Then grdNormal_Click +End Sub diff --git a/EDITELEM.frx b/EDITELEM.frx new file mode 100644 index 0000000000000000000000000000000000000000..2fadb2b86753151082a62ec1300386e4030e8279 GIT binary patch literal 2386 zcmeHJ!ES>v40WK;9e3K4B!49r;L9kQw(Avue$cipIY84iz}?!% z>H0OhDzGZ>KNJumSuzl*Sg-`dhG3HF)>%F39r$TR`^Yo0fHOZ$2_Jb%Ht=UpFhAd) zXMTP-598DG!+ARXpPmn_<&3fZz*>^!c^-mc&G`9ye8_hZ}mPy>+m(UvdAw97M{*1Pq_WCXS zQLuiSg)8BgWXTqK-v@n$SM$E&U#jAn^sV8IzdPQfvsfsFQb{cb>!3_Mw}(lJwKk9|fT)G-gpkjL~D9sMo!j+AXUkc12w3ebv+FDN*>2i6)no>Ic3-LYJZ) z-*_uzcU69wrapzgjulDmt%Pggd%ChZzoD(treEhnA^lFBYtT#5vrg~lpqsy%&lSI@ KN;COi!|WGquOTx4 literal 0 HcmV?d00001 diff --git a/EditElem.frm b/EditElem.frm new file mode 100644 index 0000000..fc9e9a0 --- /dev/null +++ b/EditElem.frm @@ -0,0 +1,685 @@ +VERSION 5.00 +Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "msflxgrd.ocx" +Begin VB.Form frmEditElem + Caption = "Editing Elements" + ClientHeight = 5625 + ClientLeft = 2655 + ClientTop = 1650 + ClientWidth = 5955 + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 1010 + Icon = "EditElem.frx":0000 + LinkTopic = "Form1" + MaxButton = 0 'False + PaletteMode = 1 'UseZOrder + ScaleHeight = 5625 + ScaleWidth = 5955 + Tag = "9200" + Begin VB.Frame fraControls + BorderStyle = 0 'None + Height = 1455 + Left = 600 + TabIndex = 3 + Top = 4080 + Width = 4575 + Begin VB.CommandButton CmdOK + Caption = "&OK" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 120 + TabIndex = 9 + Tag = "4010" + Top = 960 + Width = 1035 + End + Begin VB.CommandButton cmdCancel + Cancel = -1 'True + Caption = "&Cancel" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 1680 + TabIndex = 8 + Tag = "4020" + Top = 960 + Width = 1035 + End + Begin VB.CommandButton cmdReset + Caption = "&Reset to Defaults" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 3120 + TabIndex = 7 + Tag = "9210" + ToolTipText = "Resets elemental weights to their average weights" + Top = 960 + Width = 1395 + End + Begin VB.CommandButton cmdAverageMass + Caption = "Use &Average Atomic Weights" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 720 + Left = 0 + TabIndex = 6 + Tag = "9230" + ToolTipText = "Sets all elemental weights to their average weights found in nature" + Top = 120 + Width = 1395 + End + Begin VB.CommandButton cmdIsotopicMass + Caption = "Use weight of most common &Isotope" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 720 + Left = 1560 + TabIndex = 5 + Tag = "9240" + ToolTipText = "Sets all elemental weights to the weight of the element's most common isotope (for high resolution mass spectrometry)" + Top = 120 + Width = 1395 + End + Begin VB.CommandButton cmdIntegerMass + Caption = "Use &Nominal integer weight" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 720 + Left = 3120 + TabIndex = 4 + Tag = "9245" + ToolTipText = $"EditElem.frx":08CA + Top = 120 + Width = 1395 + End + End + Begin VB.ComboBox cboSortBy + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 315 + Left = 2400 + Style = 2 'Dropdown List + TabIndex = 1 + Tag = "9380" + Top = 120 + Width = 2175 + End + Begin MSFlexGridLib.MSFlexGrid grdElem + Height = 3615 + Left = 120 + TabIndex = 0 + Tag = "9340" + ToolTipText = "Click to change an element's weight or uncertainty" + Top = 480 + Width = 5655 + _ExtentX = 9975 + _ExtentY = 6376 + _Version = 393216 + Rows = 17 + Cols = 3 + FixedCols = 0 + ScrollBars = 2 + End + Begin VB.Label lblSortBy + Caption = "Sort Elements by:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 240 + TabIndex = 2 + Tag = "9390" + Top = 150 + Width = 2055 + End +End +Attribute VB_Name = "frmEditElem" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +' Form wide array +Private PointerArray(MAX_ELEMENT_INDEX) As Integer +Private mValueChanged As Boolean + +Private Sub HandleGridClick() + Dim strMessage As String + Dim strSymbol As String + Dim dblMass As Double, dblUncertainty As Double, sngCharge As Single + Dim lngError As Long + + If grdElem.Col <> 0 Then + ' Can only edit element weights and uncertainties + ' The Message of the dialog box. + strMessage = LookupLanguageCaption(9250, "The elemental weight or uncertainty will be changed to the value you type. Select Reset to reset to the default value or Cancel to ignore any changes.") + + ' Display the dialog box and get user's response. + With frmChangeValue + .cmdReset.Caption = LookupLanguageCaption(9220, "&Reset") + .lblHiddenButtonClickStatus = BUTTON_NOT_CLICKED_YET + .lblInstructions.Caption = strMessage + .txtValue = Trim(grdElem.Text) + .rtfValue.Visible = False + .txtValue.Visible = True + + .Show vbModal + + If .lblHiddenButtonClickStatus = BUTTON_NOT_CLICKED_YET Then .lblHiddenButtonClickStatus = BUTTON_CANCEL + End With + + If Not frmChangeValue.lblHiddenButtonClickStatus = BUTTON_CANCEL Then + If frmChangeValue.lblHiddenButtonClickStatus = BUTTON_RESET Then + ' Reset element stat to default value + objMwtWin.ResetElement PointerArray(grdElem.Row), grdElem.Col - 1 + Else + ' Set individual element value + ' First, grab the current values + lngError = objMwtWin.GetElement(PointerArray(grdElem.Row), strSymbol, dblMass, dblUncertainty, sngCharge, 0) + Debug.Assert lngError = 0 + Debug.Assert Left(grdElem.TextMatrix(grdElem.Row, 0), Len(strSymbol)) = strSymbol + + ' Update the desired value + Select Case grdElem.Col + Case 1: dblMass = CDblSafe(frmChangeValue.txtValue) + Case 2: dblUncertainty = CDblSafe(frmChangeValue.txtValue) + Case 3: sngCharge = CSngSafe(frmChangeValue.txtValue) + End Select + + ' Now update the element + lngError = objMwtWin.SetElement(strSymbol, dblMass, dblUncertainty, sngCharge) + Debug.Assert lngError = 0 + End If + UpdateGrid + mValueChanged = True + End If + End If + +End Sub + +Public Sub PopulateGrid() + Dim lngIndex As Integer, lngBasicHeight As Integer + + With grdElem + .Left = 120 + .Top = 480 + .Width = frmEditElem.ScaleWidth - 240 + .Height = 3700 + .Rows = objMwtWin.GetElementCount + 1 + + lngBasicHeight = TextHeight("123456789gT") + For lngIndex = 0 To objMwtWin.GetElementCount + .RowHeight(lngIndex) = lngBasicHeight + 60 + Next lngIndex + + .Cols = 4 + .ColWidth(0) = (.Width - 350) * 1 / 4 + .ColWidth(1) = (.Width - 350) * 1 / 4 + .ColWidth(2) = (.Width - 350) * 1 / 4 + .ColWidth(3) = (.Width - 350) * 1 / 4 + + .TextMatrix(0, 0) = LookupLanguageCaption(9350, "Element") + .TextMatrix(0, 1) = LookupLanguageCaption(9360, "Weight") + .TextMatrix(0, 2) = LookupLanguageCaption(9370, "Uncertainty") + .TextMatrix(0, 3) = LookupLanguageCaption(9150, "Charge") + + .ColAlignment(3) = vbLeftJustify + + For lngIndex = 1 To objMwtWin.GetElementCount + PointerArray(lngIndex) = lngIndex + + .TextMatrix(lngIndex, 0) = objMwtWin.GetElementSymbol(PointerArray(lngIndex)) & " (" & PointerArray(lngIndex) & "):" + Next lngIndex + .Col = 0 + .Row = 1 + End With + +End Sub + +Public Sub PositionFormControls() + Dim lngDesiredValue As Long + + If Me.WindowState <> vbMaximized Then + If Me.Width > 6250 Then Me.Width = 6250 + End If + + lblSortBy.Top = 100 + cboSortBy.Top = 60 + + cmdAverageMass.Top = 120 + + cmdOK.Top = 960 + cmdOK.Left = cmdAverageMass.Left + (cmdAverageMass.Width - cmdOK.Width) / 2 + + cmdIsotopicMass.Top = cmdAverageMass.Top + + cmdCancel.Top = cmdOK.Top + cmdCancel.Left = cmdIsotopicMass.Left + (cmdIsotopicMass.Width - cmdCancel.Width) / 2 + + cmdIntegerMass.Top = cmdAverageMass.Top + + cmdReset.Top = cmdOK.Top + + With fraControls + lngDesiredValue = Me.ScaleWidth / 2 - fraControls.Width / 2 + If lngDesiredValue < 0 Then lngDesiredValue = 0 + .Left = lngDesiredValue + lngDesiredValue = Me.ScaleHeight - fraControls.Height - 120 + If lngDesiredValue < 2000 Then lngDesiredValue = 2000 + .Top = lngDesiredValue + End With + + With grdElem + .Top = 480 + .Left = 120 + lngDesiredValue = Me.ScaleWidth - .Left - 240 + If lngDesiredValue < 1000 Then lngDesiredValue = 1000 + .Width = lngDesiredValue + .Height = fraControls.Top - .Top - 120 + End With +End Sub + +Private Sub ResetToAverageMassDefaults() + Dim eResponse As VbMsgBoxResult + + eResponse = YesNoBox(LookupLanguageCaption(9290, "Are you sure you want to reset all the values to the default Elemental values (average weights)?") & " " & _ + LookupLanguageCaption(9300, "If executed, this cannot be canceled."), _ + LookupLanguageCaption(9295, "Reset to Defaults")) + + ' Evaluate the user's response. + If eResponse = vbYes Then + ' Reset checkboxes to cause warning box to reappear in formula finder + frmProgramPreferences.chkAlwaysSwitchToIsotopic.value = vbUnchecked + frmProgramPreferences.chkNeverShowFormulaFinderWarning.value = vbUnchecked + mValueChanged = True + SwitchWeightModeDiskAccess emAverageMass, True + + UpdateControls + End If + +End Sub + +Private Sub ReSortElementsInGrid() + Dim lngIndex As Integer, swapVal As Integer, lngRowSave As Integer + Dim intSortByListIndex As Integer + Dim strStorage(MAX_ELEMENT_INDEX) As String + Dim lngErrorID As Long + Dim strSymbol As String + + ' Using the strStorage array since referencing specific rows in the grid is very processor time consuming + + ' Resort elements if necessary + + lngRowSave = PointerArray(grdElem.Row) + grdElem.Col = 1 + grdElem.Row = 1 + + If grdElem.Text <> "" Then + + intSortByListIndex = cboSortBy.ListIndex + Select Case intSortByListIndex + Case 0 ' element symbol + grdElem.Col = 0 + Case 1 ' atomic number + ' basically unsort, done below + Case 2 ' uncertainty + grdElem.Col = 2 + Case Else ' charge (case 3) + grdElem.Col = 3 + End Select + + If intSortByListIndex = 1 Then + ' Sort by atomic number + For lngIndex = 1 To objMwtWin.GetElementCount + PointerArray(lngIndex) = lngIndex + Next lngIndex + Else + + ' Change mouse pointer to hourglass + MousePointer = vbHourglass + + ' Copy the data to be sorted into strStorage + For lngIndex = 1 To objMwtWin.GetElementCount + grdElem.Row = lngIndex + strStorage(PointerArray(lngIndex)) = grdElem.Text + Next lngIndex + + ' Sort the elements via a shell sort + Dim MaxRow As Integer, offset As Integer, limit As Integer, switch As Integer + Dim Row As Integer + + ' Set comparison offset to half the number of records (MAX_ELEMENT_INDEX=103 in this case) + MaxRow = objMwtWin.GetElementCount + 1 + offset = MaxRow \ 2 + + Do While offset > 0 ' Loop until offset gets to zero. + limit = MaxRow - offset + Do + switch = 0 ' Assume no switches at this offset. + + ' Compare elements and switch ones out of order: + For Row = 1 To limit - 1 + If intSortByListIndex = 2 Or intSortByListIndex = 3 Then + ' Comparing values + If CDblSafe(strStorage(PointerArray(Row))) > _ + CDblSafe(strStorage(PointerArray(Row + offset))) Then + ' Swap the pointerarray values + swapVal = PointerArray(Row) + PointerArray(Row) = PointerArray(Row + offset) + PointerArray(Row + offset) = swapVal + switch = Row + End If + Else + If strStorage(PointerArray(Row)) > _ + strStorage(PointerArray(Row + offset)) Then + ' Swap the pointerarray values + swapVal = PointerArray(Row) + PointerArray(Row) = PointerArray(Row + offset) + PointerArray(Row + offset) = swapVal + switch = Row + End If + End If + Next Row + + ' Sort on next pass only to where last switch was made: + limit = switch - offset + Loop While switch + + ' No switches at last offset, try one half as big: + offset = offset \ 2 + Loop + ' Change mouse pointer back to default + MousePointer = vbDefault + End If + + grdElem.Col = 0 + For lngIndex = 1 To objMwtWin.GetElementCount + grdElem.Row = lngIndex + + lngErrorID = objMwtWin.GetElement(PointerArray(lngIndex), strSymbol, 0, 0, 0, 0) + grdElem.Text = strSymbol & " (" & PointerArray(lngIndex) & "):" + Next lngIndex + + For lngIndex = 1 To objMwtWin.GetElementCount + If lngRowSave = PointerArray(lngIndex) Then + grdElem.Row = lngIndex + grdElem.TopRow = lngIndex + End If + Next lngIndex + UpdateGrid + End If + +End Sub + +Public Sub ResetValChangedToFalse() + mValueChanged = False +End Sub + +Private Sub SwitchWeightModeDiskAccess(eNewElementMode As emElementModeConstants, blnRecreateFile As Boolean) + ' eNewElementMode = 1 is average weights + ' eNewElementMode = 2 is isotopic weights + ' eNewElementMode = 3 is integer weights + + If eNewElementMode < emAverageMass Or eNewElementMode > emIntegerMass Then + eNewElementMode = emAverageMass + End If + + If blnRecreateFile Then + LoadElements CInt(eNewElementMode), False + Else + SwitchWeightMode eNewElementMode + End If + + ' Make sure QuickSwitch Element Mode value is correct + frmMain.ShowHideQuickSwitch frmProgramPreferences.chkShowQuickSwitch.value + +End Sub + +Private Sub UpdateControls() + Select Case objMwtWin.GetElementMode() + Case 1 + cmdAverageMass.Enabled = False + cmdIsotopicMass.Enabled = True + cmdIntegerMass.Enabled = True + Case 2 + cmdAverageMass.Enabled = True + cmdIsotopicMass.Enabled = False + cmdIntegerMass.Enabled = True + Case 3 + cmdAverageMass.Enabled = True + cmdIsotopicMass.Enabled = True + cmdIntegerMass.Enabled = False + Case Else + SwitchWeightMode emAverageMass + cmdAverageMass.Enabled = False + cmdIsotopicMass.Enabled = True + cmdIntegerMass.Enabled = True + End Select + + ' Make sure QuickSwitch Element Mode value is correct + frmMain.ShowHideQuickSwitch frmProgramPreferences.chkShowQuickSwitch.value + UpdateGrid + +End Sub + +Private Sub UpdateGrid() + Dim intIndex As Integer, lngCurrentRow As Integer, lngCurrentColumn As Integer + Dim lngError As Long + Dim strSymbol As String + Dim dblMass As Double, dblUncertainty As Double, sngCharge As Single + + lngCurrentRow = grdElem.Row + lngCurrentColumn = grdElem.Col + + ' Copy the data into the grid + For intIndex = 1 To objMwtWin.GetElementCount + lngError = objMwtWin.GetElement(PointerArray(intIndex), strSymbol, dblMass, dblUncertainty, sngCharge, 0) + Debug.Assert lngError = 0 + + With grdElem + .Col = 1 + .Row = intIndex + .Text = CStr(dblMass) + .Col = 2 + .Text = CStr(dblUncertainty) + .Col = 3 + .Text = CStr(sngCharge) + End With + Next intIndex + + ' Re-position cursor + grdElem.Row = lngCurrentRow + grdElem.Col = lngCurrentColumn + +End Sub + +Private Sub cboSortBy_Click() + ReSortElementsInGrid +End Sub + +Private Sub cmdAverageMass_Click() + Dim eResponse As VbMsgBoxResult + + eResponse = YesNoBox(LookupLanguageCaption(9260, "Are you sure you want to reset all the values to their average elemental weights?") & " " & _ + LookupLanguageCaption(9300, "If executed, this cannot be canceled."), _ + LookupLanguageCaption(9265, "Change to Average Weights")) + + ' Evaluate the user's response. + If eResponse = vbYes Then + mValueChanged = True + SwitchWeightModeDiskAccess emAverageMass, True + + UpdateControls + End If + +End Sub + +Private Sub cmdCancel_Click() + Dim eResponse As VbMsgBoxResult + + If mValueChanged Then + eResponse = YesNoBox(LookupLanguageCaption(9310, "Are you sure you want to lose all changes?"), LookupLanguageCaption(9315, "Closing Edit Elements Box")) + If eResponse = vbYes Then + LoadElements 0, False + Else + Exit Sub + End If + End If + + Me.Hide + mValueChanged = False + +End Sub + +Private Sub cmdIsotopicMass_Click() + Dim eResponse As VbMsgBoxResult + + eResponse = YesNoBox(LookupLanguageCaption(9270, "Are you sure you want to reset all the values to their isotopic elemental weights?") & " " & _ + LookupLanguageCaption(9300, "If executed, this cannot be canceled."), _ + LookupLanguageCaption(9275, "Change to Isotopic Weights")) + + ' Evaluate the user's response. + If eResponse = vbYes Then + mValueChanged = True + SwitchWeightModeDiskAccess emIsotopicMass, True + + UpdateControls + End If + + +End Sub + +Private Sub cmdIntegerMass_Click() + Dim eResponse As VbMsgBoxResult + + eResponse = YesNoBox(LookupLanguageCaption(9280, "Are you sure you want to reset all the values to their integer weights?") & " " & _ + LookupLanguageCaption(9300, "If executed, this cannot be canceled."), _ + LookupLanguageCaption(9285, "Change to Integer Weights")) + + ' Evaluate the user's response. + If eResponse = vbYes Then + mValueChanged = True + SwitchWeightModeDiskAccess emIntegerMass, True + + UpdateControls + End If + +End Sub + +Private Sub cmdOK_Click() + mValueChanged = True + + SaveElements + + mValueChanged = False + Me.Hide +End Sub + +Private Sub cmdReset_Click() + ResetToAverageMassDefaults +End Sub + +Private Sub Form_Activate() + ' Put window in center of screen + SizeAndCenterWindow Me, cWindowExactCenter, 6250, 6200 + + UpdateControls + +End Sub + +Private Sub Form_Load() + PositionFormControls + + PopulateComboBox cboSortBy, True, "Element Symbol|Atomic Number|Uncertainty|Charge", 1 + + PopulateGrid + UpdateGrid + + mValueChanged = False + +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + If UnloadMode = vbFormControlMenu Then + Cancel = True + cmdCancel_Click + End If +End Sub + +Private Sub Form_Resize() + PositionFormControls +End Sub + +Private Sub grdElem_Click() + HandleGridClick +End Sub + +Private Sub grdelem_KeyPress(KeyAscii As Integer) + If KeyAscii = 13 Then grdElem_Click +End Sub diff --git a/EquationsBroadening.frm b/EquationsBroadening.frm new file mode 100644 index 0000000..4896764 --- /dev/null +++ b/EquationsBroadening.frm @@ -0,0 +1,49 @@ +VERSION 5.00 +Begin VB.Form frmEquationsBroadening + Caption = "Extra-column broadening equations" + ClientHeight = 5790 + ClientLeft = 60 + ClientTop = 345 + ClientWidth = 8760 + Icon = "EquationsBroadening.frx":0000 + LinkTopic = "Form1" + MaxButton = 0 'False + MinButton = 0 'False + ScaleHeight = 5790 + ScaleWidth = 8760 + StartUpPosition = 3 'Windows Default + Tag = "9500" + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "&Ok" + Default = -1 'True + Height = 375 + Left = 3360 + TabIndex = 0 + Tag = "4010" + Top = 5280 + Width = 1095 + End + Begin VB.Image Image1 + Height = 5925 + Left = 0 + Picture = "EquationsBroadening.frx":08CA + Top = 0 + Width = 8775 + End +End +Attribute VB_Name = "frmEquationsBroadening" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Sub cmdOK_Click() + Me.Hide +End Sub + +Private Sub Form_Activate() + Me.Caption = LookupLanguageCaption(9500, "Extra-column broadening equations") + cmdOK.Caption = LookupLanguageCaption(4010, "&Ok") +End Sub diff --git a/EquationsBroadening.frx b/EquationsBroadening.frx new file mode 100644 index 0000000000000000000000000000000000000000..ac7b57ea389d7c06b7b938aa7d903de3967854f5 GIT binary patch literal 10116 zcmeHJXHXQ|wk8P(0*aDBQOQXZ$sm%4tYij;=#Zo2tdcWG9)e_s89OY&mKL*Ctjq&s6&nw5kXm4-FxUTl|_J7X*JNmZ* ze=G3+Ljg=otiLi0Ol-`*Ff0sAoGbWBs{iiS>Rr|T&BwlRHUFF6xU%2)H6I)M3ja69 zzOsMu|8xg`-v8Hr{=EP1{aoY!x&QC|{Dc30x` z|3C46#s9Io#;^ImsCc+|zvI82t_ED(Kls;m|Ka~!T?hW)|HiIq*M4n(WdAq*FX$Tm zN7BFXfARha{d)S3{6D%~*ZG70&$id3>+-)+uEsz3zr+7w{LTLpZLh<>^!tks#kGDo ze{o@5ACkYazo`8`gWml%`GzpV29??0L1t65e~MnKR=4l4}vC>_AP zA0=aD=v+sT7FeWV|jI`N}H+5ru{J*pxcird+#c8TQ9`sS~VxX7?-!J zL+v|9Y}a}O@@)@J6Pic%tFHao{6rm`Ss7HZ*R`b^gh%7;7{lAl zzY@v8<^Cp6P<~=D{Lx!PPM8XT#i{{4B%dM4C&$kh-Rf=R|q_x+^RRGTjptC`08a;tIrd_sCL@jd~wxg*}8=6)Vi6zdso z)DX6Ux;8l&1RdgnfaNBAoyxa+y+{BnvKQ(GrKQLhux2=E3Rz}G53yN%?%by?{4CaI z3WdWyY_27Q>kF@!+NDo!7@Gq-p~ZD`7DZ((mXPhjc^Bc0%n53CO5f}`Kv4~tAT&ST zfX{O$J5Gj%z462&%nq6B;>lfAJ_hH`TMuD>(pr#(GDA{iTiVnR?aJA8+=c5rMND#S zm$qM^g}FNiOuP5G@N{REQ?lCK*;<;vpt$=!klx%bP?}5K^O}a}IQCKba#%NsV|%gp zeF?mH+7e})k{yoDf-`JT7r}5>QSs`4CKa*Zqg&7&F<-fy9 z7d=GJt%KY$W<9F3&3eRg|!X75nW2DB=3?5D&3Cd$xiBCUGM5~5A~W#(Z%h$$E$3rWRqI0 z&qQ*@6BDAEupTza`khSTX6S|m9U(OmW?JT>qin3lX3Qy$>>&_3(CeKfnV17`$*(?* zALn4CIzVu|;Ej!De@2)c{;?b8a6}QF9i^>ARO_ zWlE`Y_&OEH*M~tLfZxz)Z1z81;dn!3GsP^(Hf)i}<*mpwDek=4mYD1Sb;U7P>5|Pr z*ZwG4@?YEvv|uH>kLSN4r%c|k1Z|#;w|{#{Z^(o9ur66Oj`Ly*WCj>)UDZ$kv8~^y zqhWtB*JtHd2Q*|w$B>4Lj}_WfAtUugU`3v5@@%@852yZVDWOMCmi~BzBTp-5FB`JT z02B4`{m+yPnO%j2)%41G!ocn&3@<}eI!VJm(GM%4!q*!hnJB7+?(@@R!+S=N0ZD#a z_>#g}*xo-RMebSG(`!w%<;i_!tyBRlZHm-)BceZ%aq71vn6zwkmu1qua(=n}^1*#F ziwM8l5GQ=#$!$QeivQZU`b?9DQOwh_5K>tCsXQ#JLX(^hj8-IbH~k)>Q$WeJNz+kl zYWL`_sU4R|_#@%M-0x$3-@=kI@RZCsVs2U49+xHL*Yt?^c(5<-JNLiL)Kn>w;=&L-|14R{Be)H0;Q2>`#Mvt2*~Q z#Vu{E4LpXO!=Wv2>ug`EQ78ULXO(`Oq+W;>TcuOv9Dsg3YZpR7w9pf$1N%-l58Uk$ z#ldFitgulHGE<*k0yH1a1vjRVE{OTrAT3 zJndAe-%o4+?W>j?_xf@}!8b44)y0O2M{Rmz&~PPGpI0Nba;T3ZyXTZiTGwvh?#UDU z^9@(tO4EMP^HKvJeBp_sH3QMhNwJ?JfceXfMBl9r4@SOss1vHWL~=kTUC5{;57Qgp zC6m@~5BOV+!ydm^V0uGpE={s7i`?qQQoyLD zeP^Cx$FcbwrsnM7TiFih@yftf4b%IwYG~YS``AE#gK>w(wtzw>b59oQ2SET@S^q-K z01`>9GATFSWkt0K*_%lWYve{tRkXJ1cAGiYb;nkHd=_CRA#m*%Wu4B6cnSgK?4shq z#)0NcxuF51?)tL+hHK!_EN7r=&>4T=HwuRr0PpCx_KEloqD#Rj&1d7;f~2vg^???1 zrvbOB-nyOyTf12~0aO|VLc$SBAGE_SrGlA9BeDhFWblO}Wcj(Zw1$I&a?0(&c(!|P z4$sU2Su3KJg74Ns!`9XVLvS?s8H4Un*x=vLeueE+?-b49>bMi66SE$0KiBC8!Vx=& z5g4F8&CEw;5o1OfLHbd8n$Ic734Nb`A`-$ME0iZ~^2kJpFDB8%)y2$hygB4R^*tki zIh4|x`_x%L(2bMQFN{o&5)m68Rt3k0;d@;o>lCj=DXvn8 zNWKo_vxPX+LTIqk@)4zvilj6k~0&^wtm!>@L)%ShNG##B0%1sVN9+L`-CIu-@X28+rAxvWi@ zoPLwo_K=v}ij1rYt<)RwcOj_@2|B7bBORCVn)#b%0BVRuN0-1OW+jCHGo|vpRvkBu z{P!Z}uw7t~;;I{omF{TMX^+qRcimw_1k?oinLWVI_h3HfFiTUG zl1C}%G+zE(Oa-f%^8zAIle20Qfm|q`?z;;}NnKagDOGITh|P};>-o$wU%Af=G@*jJ zQT$eSnFy6v0`2ZkzPYS6h2GV;w-xD>591|F^Me%Qy1rztsdx}pc1ZE*iKiUhmMtzm zjJHN@;kvxeGIA)LY8LN-*^1psqERTd5vR)$0e((pUG^7w#Xjp3;n zki~mx@fwwLG=?DBLkj>k$Xi>;3}Meq;p!aS>O9YCXi7DVuo_ZRZBJN)x315V@0MOs zxW8H5ILx%+p>!>MsqX{oKfg!bEG_jU-rkU%anVYudnMliX4j7YH<7;8+V1L9og>!x| z6|H|W&%I_&ky=##%PhgNLY+#3$p(v?IsDrVZ*_BASD$4dTiZ}|yf<=y;Voe)E#Y_R z^8NF4O~ImsaRy^x9yw(9;fHW|3bC<#{Y~VSAia=Ki`s<`g#6=9h#NU;I$CL^v|qvg z&SZ@CxmkmAE^ndAIO=0NVRUxoGmyC{kS5Iq(V^H~){g8fo9;~F$WuNqGZavKyeaS^ z})sYMh-7Hn{f>%IC68W zBP+azls~+-w|79#279timcO?WRw*@;BNty)PTS>*=v#q?Tlc7wr#y>?b}8R#dA((6 zR@!*6_udCPKZHGhPw@>GG-9SF*T_o%;EK$UG$~O`9^vpBqaBFcPP}0=5J1&NFgrke zIdGe9kW_T=9%zuvD*j zZupt#@N>{GVbVaQ*|5A(tF~@!IU!$r>em?Ze4z;4?CgAlu8z8tLZgCK>FOcR`))()YS}xmJv&TAiw#Ah z@P#Y@dSLhfHF^iDGvtMO3%0uxM4UqpNqr6Sk3X zkncQAqjT!`oOQcMoF~Q6cye9-2Tpa-iszH?7@b5wvG^x2Xi7+=AvB(na)yrj*2rpk z$0K;ZC*RnY2+>mSsW_tu0QF3Ql^Xu3xs5cB^%El;VqK~i(~hhjbaM+i2Z;2( zaVq!Eao&jS&3h-uu6Ndr#mB_$!$&JZ7V|>DF4AqP!lPk*La;vG9aN1Vm3#1IVbtZ^ zvQ^LdGXa~t=`z}=Zr-$z+GR}V3Mt|haWmmQ<4JRPq@ZIx=G=HVyU}T?L)7-NTU|HH z^32`G*-L>A=&9-^=!$Wz`~3M5udB!iL;PM*Yp{*LK5V+Y!+HR zD;QnZph48NLRhR$Joep8?nrNSo;FYGG&wdsr`lzm`SexVPOe|yk_t=XdHYyTYI+-0 z#!*@;`%JdED_BA4g>~|QB()zC-lp2vmk;8@b%f&JCRx%t#gX0??{ezNmcYO zy_*VO?{j(_s1VwmRjyR|G>ei{(4fEJKd5dau8n0`m$o~UoSzWeK2&{B_(-{vS%2|3 ze~tUok+9E?gVdZPLRXCM?|)PwMeCne6B-iRKF!R5vGQ31V4D{%?5z12&e zs}scCU)|R1>Q>(tyMuUE2e{VlDY@@`hBw%*O>Mp;aUWwV*Hd;S8CQ1`(ILM!yv@PD;VQ(Ly$*wxtdezU9|8t&NmXGx(tSNnS zg62rCc2mF-#aHwFMp~oRnmW_CvlH5&n#-kWLD_n7XP-uIC!w8T&q(jx74-VeR^@C)}IH~hSq|A{8Kjfq3dpgpi4 z?thbv>&?W#H_6~TjLJFMgNxGPRJ^v!6N5{#(GR5~8FYr0<>FX1ir-8Qttcct1%J)a z8D3RN6?EQN4!MKzE?Uf!m=QR#{yIla42!67By0G+VkSXqXo=-8R4mi7u3H1Hl55l! z$*5boJQ{3XO0KR@0vj$;pQZL99NPxfx*x6Dpl;h}1-@I6q0>v^o(=Op;WC|>*y}FV ze~f+U`O0Co#ScY5EW&?aGJwvMjR75}27}A^3X=|PW{@4}U#W$Q z%&H7@nbp%EY%`OM6#M${=`+W5+59P&&eTec9_xU5v^7H5VPzycirHXp`Ea$Bk(uJt z3(x(ru~|>N-Kh)ji!(W83iL?X?m5=2U9pw*7E94%f)P7$T$)3xies#quP<+~EABo& z<6a`>nc#5xA$gnbFjOL>KC4g&hZQFpzJReEA>DWD`BV69tMa{e{0FHj*|g5f#pN`9 z_dbeK@UsndW*8UR0+>>q_H*w`hwjUhM72B{rGUD+xm0!&g#wHJo0{&^RBy20V^; zQk7?~I8;^S8Ff-q7Ct&udnHNctgfoSd!(+ers1risp~u{Gt9IN;3d6GG4F1*msZN8 zbxx}gn~1b#l>o-h?23{&(Awra@LcAQH?RY<0;$2x+>>!xxyM2#iA7|Zb`jFWQg1Q? ztbq(w6$)K;uZNCn%c3uB0f+Ab99}l73dcxy`v>gJ8J>XdOdz*;-3)yLuul<>QL~$d zs{E>lbM>`Ng#tyW3jxpF09 zg?lVT(u>MYsHG(SkY>MhDYkUKx~hHJmM}#W$X}gH{raH4VlHW^fmzI3C#ue;6wm-} z_gah^C59NMw-6D#bli14KZ*3@^0Fb?x-Z<;WMD>T4UNZ}dJC^XQJAgS;QH8o9p0%u zfS&DuE^`9RpN^4b8g^DkDH*lTs>BFwiJg|0l+Zveu4!Idx09af(dP(JY|?1Qp1Vdj zhGiezK<@^`WiMc_NekVhwiPg@d2kDURCp=fZrv_yNbDLUwp>vZD6RhKB7D7NiIyZ( zS}}8Tj=z;qCMHyDWPUu)Ok}c%BmA+WGPV-aXPj=>n`f%oVPk+V;Q>TO_PuFf;40!% z<~BHL+K9HrQB-*Bj_<&h_CstcVafDC3%hdtd0g!>?3>TDpK;uNAOI3vCz zIml?t)+eD6&@vXRH*9D?IJ!1+gRk?I^ow#iCk2-1Xl)S*;+-tI#rS5;sm|Qnak*uL zsetSPiRrT#Axk4_=_+&4xzZomv${;OvB9NWQ|bz-siZ1Oh!=sT4xvQxh5%RRk@FF? z0+qMMVs$LiyO)R7sz(sAZ?Qx0N)nj5=$fXVlaQW6a5hE_1!#92aAQ+F!l0)(=jl_+ zr*c`t#c57Z-8H_vX6j?*=2}t{GL&|wjOLfvTx&3=r%tb_W?9OLwV5bNXCP3sJe$$R zLdg?2lBZb#2isVIP{4_H&C0S|8yg!>-I-O*s+tuWJ8zWk08;CXRS)OdIv06@woSEardMoT>rkK{fm*dojCSsQp8AJ*T6J4sJI`5^{%N~b T{Xwps_jk|vK3p6O4B`I*D-VLt literal 0 HcmV?d00001 diff --git a/EquationsOpenTube.frm b/EquationsOpenTube.frm new file mode 100644 index 0000000..d11bfc8 --- /dev/null +++ b/EquationsOpenTube.frm @@ -0,0 +1,80 @@ +VERSION 5.00 +Begin VB.Form frmEquationsOpenTube + BorderStyle = 1 'Fixed Single + Caption = "Equations for flow in an open tube" + ClientHeight = 4395 + ClientLeft = 45 + ClientTop = 330 + ClientWidth = 7725 + Icon = "EquationsOpenTube.frx":0000 + LinkTopic = "Form1" + MaxButton = 0 'False + MinButton = 0 'False + ScaleHeight = 4395 + ScaleWidth = 7725 + StartUpPosition = 3 'Windows Default + Tag = "9550" + Begin VB.PictureBox Picture3 + Height = 1455 + Left = 3480 + Picture = "EquationsOpenTube.frx":08CA + ScaleHeight = 1395 + ScaleWidth = 3675 + TabIndex = 3 + Top = 120 + Width = 3735 + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "&Ok" + Default = -1 'True + Height = 375 + Left = 6480 + TabIndex = 2 + Tag = "4010" + Top = 2160 + Width = 1095 + End + Begin VB.PictureBox Picture2 + Height = 1455 + Left = 120 + Picture = "EquationsOpenTube.frx":0FA0 + ScaleHeight = 1395 + ScaleWidth = 5115 + TabIndex = 1 + Top = 1680 + Width = 5175 + End + Begin VB.PictureBox Picture1 + Height = 1455 + Left = 120 + Picture = "EquationsOpenTube.frx":16FC + ScaleHeight = 1395 + ScaleWidth = 3195 + TabIndex = 0 + Top = 120 + Width = 3255 + End + Begin VB.Image Image1 + Height = 990 + Left = 120 + Picture = "EquationsOpenTube.frx":1CA4 + Top = 3240 + Width = 5535 + End +End +Attribute VB_Name = "frmEquationsOpenTube" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Sub cmdOK_Click() + Me.Hide +End Sub + +Private Sub Form_Activate() + Me.Caption = LookupLanguageCaption(9550, "Equations for flow in an open tube") + cmdOK.Caption = LookupLanguageCaption(4010, "&Ok") +End Sub diff --git a/EquationsOpenTube.frx b/EquationsOpenTube.frx new file mode 100644 index 0000000000000000000000000000000000000000..30dc1745d7a8471a3868cf5228efb03c15f31d84 GIT binary patch literal 9753 zcmeHL2T+q)*A9X-bw7cn7b#K&R9vLlU8y#Z8VH2mL8XHf>0OEtI)oN#Ae2A=L8+mL z(jiFby@VoF2wwv3?!P;$^UeI^0T5qf_wzPwK|9`zcfSAi~2r>TvVlD|nPELN@`J+8a zeE;A5e~kauBl?N>BPazq#qs#j9ibs7|B5Hh`$O9T<8KMEnVU-8Gof72f0zmZ$w@KOH0Qz(e}Bm2&E zg1AY(C*PU-KXZ8dvHu>VTcRrMKLOSSTXhXnR9>pYiM0!&Q(-n(PXhcTKE6%&Y zYzifrt}GEwMlgJ1-;H1)Y>~emr3k_8^Zi;ChW7xNWBkUsZKPdW^;MA!L5!uMR&XXwh`MD(7DKWhUsMja%~_ARbQO^{ zvV^-=YIk}-gUZv;fQhEKj4-~w92I}cb#bN$E-EP_`^4Q!<|r*G1zKaj5z1+~GzYn< zSo&;%G#v`j$~cRSFy=uU6l<4l9QF& z76oKW5OidndAUHpY3$fHqhV8GXOa(3TSQ(+t6qK1da)*=(-QY)XC@z4yT7%Fs{>F7 zuf8Q?v|4>f>85I1A4SrB>7|<@?~)Q7g#Ow6H{veO6i&6HCuLcyRjp(0sCB5Iak9qX z=)3XPjH2F(Z!)*uM%`C?&8{@ZVZp<<$ePF!u5OU^T-Ks2c#h9qS&z#*MC|?@@&!}d zN#%n{MA}0o_C7~Aa6Vq}RpN?K-1P?tePErCWig62&m6uxfQ%-^F{?c$*ke{RCDHrAYX7(*{^N!Jl7S;uBkqO& zC97q>Pn5J<(4k73?M%JpLmfi}26sW_qlG|KYXT~%v{13aIeTbtnuef>u_nE~#w)ct zk0pgzPA!B8nRP`Lvih;pP`G%nDb>T9#RZE`PJ%-*CpiOMp?S@o(ychO?AaiMs@ z+>pB-Nr6UxltA8G{)ZOcL9l>(>+LX!FxI$V|KJZV7u?c=7-@gy0+#$HRz)p@hH=mp3d~) zcFln?`sYm-@njEaXFLSvW+03$9P<#7c#WwX{&fqzJoRZ;6|<81D*gPf?$)^yW@#o9 zRkTn(Ja9ecRF)G5GMFc{!9c+{+)h_X+w$@r5`&sE*33_mAYW3~qHKX#B1{ZsFIAUO z7hv`DRyJ{^U0qJNGUIO)&UnhmgEh@S ziQ0-c_UabTYr{40Vp9ir5yW)TsKQf}S%Ueqq-2N(YT{m2iq=R}uFc*eihOB&BFcvH z%W?@YQuAjXcuC1OILM0JbGv z=?tb8`DU?%HD1DBNivxykGVC8V2`Qq15Q`1-ASae#uYJhvLNE=Sf1CJbD{Y=mwFp*zDQ%WFRcOVqRa0zvyNF$ zcBp(YfbTPZ?(IIIoan*kvZ>ye2a@pn+Uuh64KYa=JLk2z578VCYhUb6grYn_DM|ZI&668S zCUvMQ_KbIs`}9?TQ8{d%TAC+`BGWk#EsG?VA3d!R)Zb@_o+}Vn zE`jy)GuAY4C4VkI8bE>-Pj~yJ){G-e&~XN8z*>do2^DXXX9{N9t7HnrfRH?QuG6B= zN8qlRqK%P%Xjz2S6WsfrvV$o}s%`ZhI zkmBi$iH-_k&*3%A-tz?|_}oXf(K&~;GUpdaL0vBBWK9G|7urt5CFBxKCV82~8w7wTd%66JBS#vCmqLRzya;M~Epg@!+%~R>CI~W@wJd)kRa(qzR-tNpmhWg$9IK2Q2D*L=Y zC&$l_D0RNLNw?d<0(wuyWSJ8p*!_pNoxE-j8H8nAer*)XySL33Dps$>>n_VZa4tp{ zxoZ&U@RO8oiWHW~^pzVXS3llAOTiRsKRwNvsfK6fPkhbS#+e}?rfDA8oI8-2&c6;b z)0U-`7RWsZN3)0Eb3K4_A#w0oBQMGDp}hF{dpmPc?t8#of9-X7!{mI9D*iljEM_*_ zG>@h0b#YZcqpcUig&cd1Jake;6Li4X`Qu4e;mRrwQ#dFk*3znc*k36#t!jh`Uiv1U z98|qf1*AtvD&)~+t9NhX-U)*Iquxr<2&dIk%Dsqvq;cmOtr3G#!CLcUQCJ@yR3ZF;DKI>h!38UtBgOtUQpJA zsxf&MFn4S7%&LQS8+PGz%e#)DMU9TCN6`}y_+e0y54R5EOv$}kmDVEPN8Ea6KEyP1 zFJH34Qy7KTR5{%oM=xqGqk7J6n@FIuP6c&_q+2g#H?-3{vi^yMn?cU-*KS^zceiCa zX2}osHu9A9$|U1QU_H!Bq0n435!g#TTjn=z3$`r-vO#0TB^`f#Wh2JJ*(BC-y?#o} z=a)=w##Xef^m=4OXy$o-g;qu2dQ`}-V`MH{G@;D?(Vm~CPM^|}YmX>?rPdRY=+9ji zeR|!SPr(Sc;|vL%SN4HYD_$_vQk>WLyjPpc<)6b{X0LxDA zpLCV_UP^*NX{mFj==~qu5*xh|5_7}X|3jA0`T2VYr%W1Y+YJ0f(%}u*hvi-QtWmbu zN9@w=ZH2ZTVp--+qKy|{PxOFyuW-!o2S`WmMaOG6jPLjYZ&LcxWY8OdRG8zg74y+# zV5U+Nx>;1pffhb(3j*ZVSspu0yeiz-U)bDJt?`5L{m!7N6 zFy+tnhzNB_=?SNr1t}Ii`RPf497&;YK(Iny-g;Q74*%0I?oZ+j4pCR>v(~e}3{Q$_ n_>{1Twl|mSEHG?WkDV!UZc)OnCv4ZuJt%S=NR03ze02RAO*{Vv literal 0 HcmV?d00001 diff --git a/EquationsPackedCapillary.frm b/EquationsPackedCapillary.frm new file mode 100644 index 0000000..dae7f98 --- /dev/null +++ b/EquationsPackedCapillary.frm @@ -0,0 +1,80 @@ +VERSION 5.00 +Begin VB.Form frmEquationsPackedCapillary + BorderStyle = 1 'Fixed Single + Caption = "Equations for flow in a packed capillary" + ClientHeight = 4590 + ClientLeft = 45 + ClientTop = 330 + ClientWidth = 8355 + Icon = "EquationsPackedCapillary.frx":0000 + LinkTopic = "Form1" + MaxButton = 0 'False + MinButton = 0 'False + ScaleHeight = 4590 + ScaleWidth = 8355 + StartUpPosition = 3 'Windows Default + Tag = "9600" + Begin VB.PictureBox Picture3 + Height = 1455 + Left = 4440 + Picture = "EquationsPackedCapillary.frx":08CA + ScaleHeight = 1395 + ScaleWidth = 3675 + TabIndex = 3 + Top = 120 + Width = 3735 + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "&Ok" + Default = -1 'True + Height = 375 + Left = 6480 + TabIndex = 2 + Tag = "4010" + Top = 2160 + Width = 1095 + End + Begin VB.PictureBox Picture2 + Height = 1455 + Left = 120 + Picture = "EquationsPackedCapillary.frx":0FB0 + ScaleHeight = 1395 + ScaleWidth = 5475 + TabIndex = 1 + Top = 1680 + Width = 5535 + End + Begin VB.PictureBox Picture1 + Height = 1455 + Left = 120 + Picture = "EquationsPackedCapillary.frx":1827 + ScaleHeight = 1395 + ScaleWidth = 4155 + TabIndex = 0 + Top = 120 + Width = 4215 + End + Begin VB.Image Image1 + Height = 1245 + Left = 120 + Picture = "EquationsPackedCapillary.frx":1E98 + Top = 3240 + Width = 5460 + End +End +Attribute VB_Name = "frmEquationsPackedCapillary" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Sub cmdOK_Click() + Me.Hide +End Sub + +Private Sub Form_Activate() + Me.Caption = LookupLanguageCaption(9600, "Equations for flow in a packed capillary") + cmdOK.Caption = LookupLanguageCaption(4010, "&Ok") +End Sub diff --git a/EquationsPackedCapillary.frx b/EquationsPackedCapillary.frx new file mode 100644 index 0000000000000000000000000000000000000000..5ee47cb25871b5dd99f58788fc3b71726a6bce86 GIT binary patch literal 10555 zcmeHNcTkgA*AJj{S4E@>QbV^QO=Vq0dRY*NMCnqb1nD41?^2`%2)%?5AQUN~SLp%* zQVdOy0HOCLgfBsN-`Snrop0v-{`h9r^W@xnpL@>l-uwJ!?sM*WCashJfRzIPP)Dc% z020E*!EsD%0&)mF41}7Wpd19fM^F;Li5sEy*W%{~01$qFTKte|H4?+qcIYlrNsQR-K*&~eo4NrEOQ2#+s6Xctnh$kZ> z*#Dqp1o;pCZ&&d5^PjBe@8|!v9-{rP=l`~z-|+vh=LZnE{2L+i4VBK`zQK~C|l|KyHPkduGM6UY5ce{T^xzT>~yh%llO<-7Nv@Fyms z^*5(K;7@SBn@;Zj690WR;yB;&zfVg95r;o;g zf4E4Ao8+J5AIARQnY_Mj&HtVA|B)AQPQqE^M5f8Von$bCT24V$LelUE@C>kfGShE9 zKk6S0{OcGHCT;=ZUI0+y0c4by88b4dvRu4 z1jmDrOA2qZI->a>G#LeiiRAGcojJkOr!&E)NGNOiuEt;(L(w?HI?g)`mSFlj@*i$ zH)J6mO?uqk(H?K|#VgfcNvYXho@;iir%n-`S|8*yiEt?hMz%PrAvJHH;&MNSkhwnW1jlKp{EIb4u) z9`hL*BAusT4{p}&4d{-jW77ktTjDdrfP*<20hAlJnBH(wNj`H(+^=Ac(vei4Gw~m% z#LA^P%FRG8X7i^#rMOZNZ?PH1JOa_sb4{=$*%(Ss*jWbgc+x`Jbs?CRglw3_t@iX+ zB!cf?t{xk5n8bNQC#;OlY%o`(F%b44?VTg@Zr~zoB1^co5!_DJqBLY4_)1-$(}(6$ z!fh(%oYdMd&~`+dkCcd`)@Y>#{8us{Kip^lW|5@ET)v(6mON1?9X1QrPjA=wX!c(D zLC{81j740BST1B(QGd*j4DVb44U2^oiZ+?gAniRDEL}a0+4it3cWWiezpR|u94Y5g z+#Ma(3b&fcn5#vN1YhqdHIwhoN6Z9dO6SH~&aG^hB%-B0t-6%-*sb2Gl|@bRgC|TU zu-zVag5P*9xh=l9$-KNQ=C87~6InnxSKhx{ms$3K#uV=>=6e^9ZeV1A<6}E#l}Y? z`{9hKf>stW77z2zz}Y`y)&)T6XX`cIDL^@Nib=Z|?sSPEz!BEPRhKYMLYN4v?z%EJ zaZ7z)^JDPG1FdT#VQy!y#w0>t7^f*RbBn%r5Wz+T58Q~kGh#RunL4amQxm_a-(iP~ zs>5lmS=2+VZ>)6f=bAMY-n9%Dad2D?LfWV?e7$X9IpP9m05QAUuS_+$^7UFdN`9Uj zez@2Yg2~hC((J{HL12>i9I?~g2vEehyVHEcg)aTo^6H(5`9j2ml5~N^>h2V1SaTbf z&E$eD+a32_xI4t^UM)Fq;L>(|FU^l`2h9P&*P_!rz95|ppYgn9jCn;HwL9f^aRQ9wC&u&*z%daatg_56o;o9NC9vV5wG!w{T8b9hGOD(|lnma{1EBb~Q6I@5L zslwQ?THSO!){7IN9-)OdXN2kqA`?Q^2D2Ib<)jF)(zNw-Ml77ooG+4zXb zXEz;ensTYK44W#=rNf!_=6=Owuo{ch%YME9Mx{kz5c#7m7-XS%n6^MzCs%+#zP+OO zOz0O^3*negvXA)-W2dEf3k+>@M#_X$gZZ2#sih#=JrmRhrN-o4e6{JFU5nw1__mb7 z#V{>Ycs)CAy1oy$uu@`+-0iW5SXPFk@ZMvgEVkL%)nk%<+CB-c%4@!QOPJ_{!dwH*#0@XJSAenyx)mDka#Y3vkE?EOm5$Uh5M% zJuU~WITn=$UpdgKZn_hTCwmX>Q>olAPYc_XpZ&u3v_Vy}JiUhx`J;`jobP0=WpbvL>(Ny00C7xyq& zw7A*;P1)W^H{0O}R5nzmhc_`md%UlNPALoXH?wq-`-{CdTy|)Gknp)E5PwhRDW&hc zQ8?VxX(mg9=jQaJF=n_w)ceV@<039p* z81q_Rdq7)wvXuvlJFk1#tkaH<&(+=7(6Tw;B{2(b#Gj{#YIVTyL}y*4^-zni5i%A1 z1eNDRosDmFV-RkcX;6o3@<~(=A^Z34QtI`>=3;o;@bby}9_k8yTEb^IyP4Ih_ajod zmgY_ww%zhpU6cIam;MV?pn^QmA^lufjtrk-UkG?BgQ+`5R=l$>{N+|A#~Gx&oML|z zY%7aj1*r(??1xru!LNlOmCatF2}$;C>+i|6$?wTEGs%zS`cEO~$L+t5fsk4r4ZJInHh3k{k>*jVYj zJ_VbSywSCMgt~`5JJn>O1ezTSa$a0mc7YmBRJf4|DJzXkP5K0~0vX=BtW2XlgrrSt zc2{QFAbhOvl`A*zbwysF8&ZBzYSx=}mH{dO+rqU5X?2;13~w(sptRar-Kuw+y5M~W z>~)e`W~I-AFHo>2p*QBE3?+v+N;c+P@r=XNv!CT&Z(?N%>@tpdBBo!=y2Yv0+A#iwkhVdPb_{<1ykD+nf zpt4!6*Rnw5Oq8-1ZYKIy>4d(32P+a;VG>;L(%(EKO)$|P)Cz{XU-ghNiPH|?&vL2n z-Z2a^1|v;kZ$ovojf{PmjRUR9aVc>RGXxM;K0eR+?CQs-7VswqTkWk}m%Y@dg?+8%&!awh$vVtCJXvw*fDhMY0EcnoBIVqr#|_OmZ z$G-T0eh2V@@`Z&t8Bo8-K* zKbIDGP@ZSWSF-kzg`$UP$7+Rf@IaQyZ?KNnn-sH$-{^Tr}9HeRR$Y0G- z>Y_yvP$g0(Q^S8mQ%JUu#?wbcg2AG%@UbLR1;#Kx6skL_O;FI_lQ?06u;!aj01>^OKys2jncZ(-Gl5mO)LQM9vb&zIom?EZl zdN57j*?-yf#zcRC(4t;wr66S3uy>;M$>>e&$IxgSSvD8R^{&)7gmfLVt2L%6IMcLF zwAu*Qc^2=fHZpGKxbVK$c~X_-j>BfcSx8)k!_n5)!Pj%cHg_t%PGgrTCcQ|rL3&=4 zFlRljp#*4(`_T3FRJ+ZKLHc&&bbC)d&*9sKjCUjvPs|%0YBT$*X_<4`=o3%jME-F=q6CYFq{rH_%!B{puG0$pXug} zp}w{q82g}$0uxYD*~inN>>940Uo&zAYCe5_)l6+9l=t%Cqr zPP-stjmY;+W84Hgrc%Pl7tAx1)km_UwSD}NVTr(;=}0d-D&}NgJun{t&;(i-M+A0`grnqSO z2B`fU_4Zw>lTk=bEj+Hmon3Gs6$DjUsag`#WK@FH`9mC*hb#-LmplY);JYVZbDwNM zzJJZ-%U^4v6<=CwJ|`!<{*E40Q>bWI_YSQ0pb=YKRm;Ug()=4U5wX*ai`8A^h}8yiKf13E%D<3o3VIoMTO{N1IgBCGkPma;JG zJSo^xj~E9N7v=5Ag&`HYp_}&Iej!n;H@ILv}?=LN{+%^Z=Oi zyg;mM_j0o-)u8hnm(!`ac_CMG@ zr(rCA`AF$QyJ8?{02^sUrPN(&9^dZJSLTNe<`d!PVbN;>0X9GW zWaC%bZ%TF6{s!3On&UHvOcI-i-DD6|-7}}=4vRW^@B(W7t#}yUT7U3u`-PjTyH(>Q zdOG(}?hy&=p%b@HyVTk2C^*;C^8tD*n<)0r`DzS&(Zc<8~VE9TMS5!OO9~u&thk zr%&0H(Wm^ytbb;I6NY)8D~_d78D=ZT00)jP5RFFKi}%UA)q_cdBs$_*p5 z!k+1F$i_KpAQI1@%;l6Y{jiVfzG3*M1waNi=(68RCf`HJw}*g}lNlwA@%AJ~}*% zI}JkhEeejg)HOKhwRqLNmMtVD{gfx$p~1%8MSZ@~!kwq5fJGXrR<)y-WmZ8~f}!-y zpfa;9u}dFm9*G+GG-)hilqOifMe2<{HW50P(Ay!AL?&sud2LWsQ0msPwA5x^o6xk*uizv zwp+{DB1i>|2!_rz|0Sdl>l3x(NUJcBZA&wiMeyjsP(@E!fphnw-q(ZShM&rd0#%lb MSQ7;a|3td|Kjgif(f|Me literal 0 HcmV?d00001 diff --git a/ExampleSequence.seq b/ExampleSequence.seq new file mode 100644 index 0000000..bd48ec3 --- /dev/null +++ b/ExampleSequence.seq @@ -0,0 +1,881 @@ +; Molecular Weight Calculator Sequence Information File +FragModelModificationSymbolsCount=10 +FragModelModificationSymbol1=@,79.9663326,True,Phosphorylation +FragModelModificationSymbol2=+,14.01565,False,Methylation +FragModelModificationSymbol3=*,15.99492,False,Oxidation +FragModelModificationSymbol4=!,57.02146,False,Carbamidomethylation (C2H3NO) +FragModelModificationSymbol5=&,58.0058,False,Carboxymethylation (CH2CO2) +FragModelModificationSymbol6=#,71.03,False,Acrylamide +FragModelModificationSymbol7=$,227.13,False,Cleavable ICAT (12C0) +FragModelModificationSymbol8=%,236.16,False,Cleavable ICAT (13C9) +FragModelModificationSymbol9=~,442.224,False,ICAT (D0) +FragModelModificationSymbol10=`,450.275,False,ICAT (D8) +FragModelNotationMode=0 +FragModelSequence=RHPEYAVSVLLR +FragModelNTerminus=0 +FragModelCTerminus=0 +FragModelIonType0=1 +FragModelIonType1=1 +FragModelIonType2=1 +FragModelIonsToModify0=0 +FragModelIonsToModify1=1 +FragModelIonsToModify2=1 +FragModelWaterLoss=1 +FragModelAmmoniaLoss=1 +FragModelPhosphateLoss=0 +FragModelDoubleCharge=0 +FragModelDoubleChargeThreshold=5 +FragModelPrecursorIonRemove=1 +FragModelPrecursorIonMass=480.63 +FragModelPrecursorIonMassWindow=.5 +FragModelIonMatchWindow=0.5 +FragModelIonIntensity0=50 +FragModelIonIntensity1=50 +FragModelIonIntensity2=50 +FragModelShoulderIntensity=0 +FragModelNeutralLossIntensity=10 +FragModelGroupIons=0 +FragModelGroupIonsMassWindow=0.5 +FragModelNormalizedIntensity=100 +FragModelNormalizationIonsUseCount=100 +FragModelNormalizationMassRegions=10 +FragModelLabelMainIons=1 +FragModelLabelOtherIons=1 +FragModelEmphasizeProlineYIons=0 +FragModelPlotPredictedSpectrumInverted=1 +FragModelAutoLabelMass=0 +FragModelFragSpectrumColor=16711680 +FragModelMatchingIonDataColor=49152 +FragModelIonMatchList=763 +112.0853,3 +136.0762,59 +137.0843,5 +139.0817,6 +139.1133,17 +139.377,2 +139.7315,2 +140.0848,5 +141.5006,1 +143.1274,15 +143.5475,1 +144.1294,2 +148.0963,2 +156.1161,4 +157.0959,5 +159.0842,2 +159.1246,34 +160.1297,2 +160.1751,1 +163.8093,6 +169.1121,3 +171.0814,1 +171.1163,7 +175.1257,37 +182.1106,3 +185.1759,5 +186.1721,1 +186.2184,1 +187.111,37 +188.121,6 +196.1191,3 +199.1189,12 +199.1768,2 +202.3497,2 +202.3897,6 +202.4608,2 +202.9548,1 +203.0119,3 +205.1135,2 +207.0992,4 +207.1408,8 +213.1642,4 +218.1487,2 +221.9199,2 +227.1035,31 +227.1788,4 +228.0981,4 +228.1437,4 +233.155,3 +235.0365,1 +235.1248,19 +236.1297,7 +240.1542,3 +245.6539,4 +246.3976,2 +246.6541,68 +246.8809,1 +247.1341,4 +247.1902,11 +249.1758,7 +250.6709,5 +250.7164,7 +251.1959,5 +251.2478,3 +251.6217,2 +251.6747,2 +252.1679,6 +255.6198,1 +258.2047,3 +259.1178,1 +259.1799,3 +260.295,4 +260.5264,2 +260.6527,149 +261.069,1 +261.1432,39 +261.4579,3 +261.6691,5 +262.1266,6 +262.2358,4 +263.0959,2 +263.1416,2 +266.1627,13 +266.2044,6 +266.9036,2 +267.548,2 +267.9639,1 +268.1754,8 +268.6133,1 +269.1628,4 +269.6667,1 +269.7262,2 +271.1963,17 +271.2502,4 +272.1867,2 +275.1514,1 +275.6785,2 +275.7574,1 +277.1639,12 +278.137,6 +286.1738,4 +287.0152,3 +288.2111,63 +288.5215,2 +288.9533,1 +289.1393,3 +289.2121,17 +293.1697,3 +293.6161,2 +293.6732,2 +294.1874,231 +294.455,5 +294.5085,3 +294.6884,14 +294.9955,1 +295.1794,42 +295.2924,2 +295.3462,1 +295.3869,2 +295.447,1 +295.5037,2 +295.9444,1 +296.1693,10 +296.3044,3 +300.1975,21 +300.2907,2 +301.2919,2 +304.7282,2 +306.1841,3 +306.2568,1 +312.2487,6 +319.6728,4 +320.2012,4 +322.2489,2 +327.1851,3 +327.3661,1 +328.1826,68 +328.2633,14 +328.3271,3 +328.6884,49 +328.7545,6 +329.1873,8 +333.1671,8 +333.6007,3 +334.2184,12 +334.2833,1 +334.7221,4 +334.7917,2 +337.7202,3 +339.5072,2 +340.7826,2 +341.0398,2 +341.7773,4 +342.1797,393 +342.3465,3 +342.4303,5 +342.4893,4 +342.5583,7 +342.6834,159 +342.817,13 +343.0197,4 +343.1782,28 +343.4868,4 +343.5865,2 +343.6495,5 +343.7368,36 +343.8218,10 +343.8938,4 +344.0427,2 +344.1109,1 +344.1737,4 +344.258,31 +344.5179,4 +344.5953,4 +344.7082,7 +344.8063,3 +344.9668,5 +345.2133,3 +346.1691,6 +346.7994,2 +346.8672,3 +347.1616,6 +347.3818,4 +349.0909,2 +351.1988,4 +351.2789,1 +351.6955,3 +355.2979,1 +356.1698,3 +356.6293,1 +357.2323,4 +362.1739,13 +362.2378,3 +363.2299,6 +363.3801,1 +363.7023,82 +364.1729,18 +364.2336,11 +364.3133,5 +364.5458,3 +364.6974,3 +365.1807,4 +365.5901,2 +366.2758,4 +366.8056,3 +368.689,13 +369.6983,3 +370.2689,5 +370.3798,2 +371.2562,5 +372.1652,3 +373.11,3 +373.2534,2 +375.1942,4 +376.0613,2 +376.4238,5 +377.0261,6 +377.1432,1 +377.2305,12 +377.4629,5 +377.5285,3 +377.7029,598 +377.9336,5 +377.9883,3 +378.2069,338 +378.5213,10 +378.5701,6 +378.691,51 +378.7713,34 +378.9062,3 +378.9558,1 +379.0303,10 +379.1436,4 +379.2068,21 +379.3916,8 +379.6018,9 +379.7127,3 +379.8116,4 +379.8799,9 +380.3029,2 +380.4071,1 +380.958,4 +382.7159,4 +384.207,5 +384.2823,21 +386.2754,4 +388.5695,2 +390.1915,52 +390.283,4 +391.1819,10 +391.2362,8 +392.1442,3 +392.2137,1 +393.5819,2 +393.9643,2 +394.8687,2 +400.2879,3 +400.4994,4 +400.5706,2 +401.1934,4 +401.3109,371 +401.6982,6 +402.3135,81 +402.4536,5 +402.5192,3 +402.6164,3 +402.7132,1 +402.9335,5 +403.259,12 +403.309,6 +403.3876,3 +403.4753,1 +403.7147,3 +404.2269,4 +404.3108,3 +404.7374,5 +404.8113,1 +405.2131,5 +405.3333,3 +405.6795,2 +407.8732,2 +411.0067,2 +413.0218,1 +413.0892,1 +413.2335,57 +413.3035,25 +413.7328,32 +413.8081,8 +414.2228,5 +414.2828,9 +414.3424,4 +414.4356,2 +414.6094,4 +414.7199,6 +414.87,2 +416.11,3 +418.711,4 +424.4149,2 +425.287,2 +426.2268,2 +426.7227,4 +426.9637,3 +427.2246,74 +427.2997,40 +427.4115,1 +427.7239,68 +427.8436,6 +427.9177,3 +428.0482,2 +428.1411,1 +428.2242,15 +428.3137,17 +428.787,6 +429.6598,3 +430.2758,3 +432.2763,1 +433.2212,6 +435.1302,3 +435.3378,4 +443.235,2 +443.6571,1 +444.9332,3 +445.2844,5 +446.3422,2 +447.2256,2 +448.7895,3 +449.2528,3 +449.5677,1 +450.1993,3 +451.8308,3 +452.2794,3 +452.8574,3 +456.3444,3 +456.815,2 +456.893,1 +457.3382,2 +458.089,2 +460.6348,4 +460.7936,7 +460.8852,4 +461.2248,43 +461.3586,8 +461.7555,134 +462.0425,2 +462.2522,92 +462.4144,5 +462.746,21 +462.8273,5 +463.2587,9 +464.1609,3 +464.2634,1 +469.518,3 +470.3055,3 +470.7576,81 +471.1271,5 +471.2655,46 +471.4061,6 +471.7367,9 +471.8181,6 +472.0988,5 +472.2733,7 +472.5045,1 +472.5667,1 +473.0598,2 +473.6369,1 +474.4301,2 +474.6018,11 +474.6872,10 +474.9321,10 +475.0013,21 +476.3438,3 +477.5691,2 +478.7099,2 +479.9517,4 +480.0665,2 +480.3365,10 +480.4079,2 +480.64,160 +480.8394,3 +480.9711,150 +481.1419,8 +481.295,87 +481.5169,2 +481.6326,26 +481.7563,5 +481.8299,2 +481.979,5 +482.067,2 +482.3113,8 +482.4529,2 +482.7108,8 +482.9548,4 +483.0466,2 +483.1181,4 +483.2962,2 +483.4197,6 +484.2981,4 +485.0859,3 +491.204,1 +491.2662,1 +491.3383,1 +491.7874,2 +491.8846,1 +492.295,20 +492.4422,3 +493.302,5 +493.504,3 +494.313,3 +495.3706,2 +497.7738,4 +498.8301,3 +498.9969,2 +499.2101,3 +499.649,2 +500.226,3 +500.3869,342 +500.56,5 +500.7669,5 +501.0752,2 +501.3755,91 +501.4952,9 +502.2757,5 +502.3503,14 +502.4227,10 +502.5471,4 +502.6361,4 +502.8102,2 +503.4046,5 +505.4753,2 +506.4412,4 +507.7981,3 +511.2679,14 +511.3341,17 +511.4388,2 +511.7908,27 +512.3044,5 +512.5751,3 +519.3084,4 +519.7026,4 +519.8273,2 +520.2967,328 +520.6697,1 +520.7661,3 +520.8824,7 +520.9682,2 +521.2927,94 +521.7892,3 +522.0936,2 +522.2187,5 +522.3113,12 +522.4092,7 +522.7855,1 +523.2501,3 +523.3372,1 +524.1531,2 +524.7791,3 +525.3735,1 +527.2947,8 +528.2895,3 +529.1505,2 +530.6804,2 +530.7861,2 +532.306,9 +533.3033,3 +535.361,3 +552.3618,2 +553.407,2 +554.7569,2 +558.5176,2 +559.6127,1 +560.287,5 +560.4134,3 +561.2498,1 +561.3267,4 +562.8124,2 +563.2944,3 +563.4239,1 +564.8261,6 +564.9099,4 +564.976,2 +565.2759,3 +565.3707,9 +565.5305,2 +566.4214,2 +568.4691,1 +569.3346,4 +569.4058,13 +569.5019,4 +569.5747,1 +569.6475,1 +570.3633,4 +570.4498,16 +571.2965,1 +571.4195,6 +571.4758,3 +571.5784,1 +572.381,3 +572.4486,2 +572.92,4 +573.3981,3 +573.7458,4 +573.8586,67 +573.9612,21 +574.066,3 +574.3539,61 +574.4537,17 +574.5536,2 +574.8405,19 +574.9592,2 +575.3185,11 +575.4207,4 +575.5056,2 +575.5826,1 +575.6589,1 +577.3074,9 +577.4223,3 +578.1526,3 +584.5505,3 +585.3615,11 +585.4314,10 +585.5741,3 +585.6603,7 +585.9116,3 +586.0613,5 +586.388,11 +586.5022,1 +586.5732,2 +586.846,12 +587.4271,1387 +587.7023,8 +587.7939,6 +587.8698,6 +588.0663,5 +588.2092,8 +588.4289,520 +588.6898,10 +588.7769,6 +588.993,12 +589.4146,97 +589.4962,51 +589.6946,13 +589.801,3 +590.3812,16 +590.5562,5 +592.2068,4 +592.8172,1 +593.0849,2 +593.4933,3 +595.6253,2 +596.3392,4 +597.3459,1 +597.4203,3 +597.515,2 +597.9026,1 +598.2836,3 +598.3417,8 +599.1752,2 +603.2936,2 +606.1924,2 +616.592,2 +617.423,1 +624.5602,2 +637.3413,3 +638.3671,3 +639.2586,1 +639.331,1 +639.8571,3 +642.108,1 +647.2784,4 +648.3354,5 +648.4521,2 +650.7113,2 +655.2712,2 +655.3664,30 +656.3695,8 +657.3942,3 +665.3284,4 +668.3688,2 +668.4735,6 +668.6234,1 +669.4628,3 +669.8121,1 +670.5142,3 +670.5972,2 +680.7796,3 +681.3997,1 +681.4736,3 +682.3482,2 +682.4495,5 +683.3481,219 +683.4712,44 +683.6359,6 +684.0644,3 +684.3716,106 +684.5844,6 +684.8958,1 +684.9804,3 +685.3737,14 +685.4988,4 +685.7285,5 +686.0152,7 +686.1675,5 +686.5014,557 +686.9116,8 +687.2289,2 +687.3205,3 +687.4829,171 +687.5939,93 +687.8615,9 +688.3171,3 +688.4927,40 +688.5773,13 +688.6929,9 +689.2798,1 +689.3668,1 +689.4847,4 +689.593,8 +689.8995,4 +690.908,2 +696.3164,2 +696.4634,5 +696.5764,1 +697.5877,2 +699.8672,3 +707.7047,2 +708.2455,1 +709.3156,4 +709.4521,2 +715.4932,1 +723.5035,3 +725.7914,1 +726.4122,90 +727.287,1 +727.3789,21 +727.4848,20 +727.9292,2 +734.0432,2 +736.162,1 +736.3848,13 +736.5123,4 +737.3798,5 +738.4948,3 +739.3513,3 +740.5328,9 +740.6787,2 +747.4741,2 +751.2795,4 +751.5072,2 +752.3605,7 +752.7471,3 +752.9329,6 +753.1516,5 +754.0845,9 +754.4078,773 +754.6768,22 +754.8329,5 +754.9259,3 +755.0079,9 +755.3988,315 +755.5961,32 +755.8419,8 +756.1276,5 +756.2121,3 +756.4058,84 +756.5536,8 +756.6567,1 +756.7365,4 +757.0129,8 +757.1477,5 +757.5342,249 +757.8083,8 +758.149,5 +758.3525,2 +758.5118,61 +758.5903,49 +758.8855,4 +759.4818,18 +759.5482,11 +759.7332,5 +760.4133,3 +760.5503,10 +760.9072,3 +761.6349,5 +762.7632,2 +763.4514,2 +764.3829,1 +764.4747,2 +768.6735,1 +770.4442,3 +785.5863,2 +793.6028,2 +808.385,1 +808.4804,2 +825.4254,18 +825.5293,15 +826.4259,8 +826.5468,8 +827.6287,3 +838.4358,2 +845.1581,1 +853.4627,103 +853.5911,23 +853.6886,16 +854.4817,49 +854.5994,22 +854.7208,4 +855.4445,15 +855.6116,1 +855.7076,1 +856.5129,2 +859.6588,1 +860.5162,2 +902.6061,5 +902.6943,2 +903.626,4 +903.7915,1 +905.4571,2 +913.6252,1 +915.7272,3 +917.6539,2 +920.3547,3 +920.5964,139 +920.7654,36 +920.9797,2 +921.5889,89 +921.7524,38 +922.0116,1 +922.1476,3 +922.4272,17 +922.5228,33 +922.6741,27 +922.817,4 +923.1877,1 +923.5013,29 +923.6208,5 +924.4304,4 +924.6093,6 +932.7939,2 +940.4985,30 +940.5948,8 +940.7292,6 +940.8721,3 +941.397,4 +941.5469,12 +941.7205,6 +1012.576,4 +1039.495,12 +1039.615,6 +1039.692,3 +1039.85,1 +1040.467,6 +1040.583,9 +1049.522,9 +1049.63,14 +1049.709,10 +1050.543,4 +1050.646,7 +1050.765,5 +1051.748,4 +1147.636,3 +1148.107,1 +1152.559,3 +1253.329,1 +FragModelIonMatchListEnd +FragModelIonMatchListCaption= +FragModelIonAlignment=0 +[PlotOptions_Series1] +SeriesPlotMode=1 +SeriesLineStyle=0 +SeriesLineWidth=1 +SeriesLineColor=16711680 +SeriesLineToBaseColor=16711680 +SeriesBarFillColor=16711680 +SeriesPointStyle=0 +SeriesPointColor=16711680 +AnnotationFontName=Arial +AnnotationFontSize=10 +AnnotationFontColor=0 +[PlotOptions_Series2] +SeriesPlotMode=1 +SeriesLineStyle=0 +SeriesLineWidth=1 +SeriesLineColor=49152 +SeriesLineToBaseColor=49152 +SeriesBarFillColor=49152 +SeriesPointStyle=0 +SeriesPointColor=49152 +AnnotationFontName=Arial +AnnotationFontSize=10 +AnnotationFontColor=0 +[GlobalPlotOptions] +Title= +Subtitle= +XAxis= +YAxis= +LabelFontName=Arial +LabelFontSize=Arial +LabelFontColor=0 +PlotBackgroundColor=16777215 +NormalizeOnLoadOrPaste=True +NormalizationConstant=100 +GridLinesXColorMajor=0 +GridLinesXColorMinor=8421504 +GridLinesYColorMajor=0 +GridLinesYColorMinor=8421504 +GridLinesXVisibleMajor=False +GridLinesXVisibleMinor=False +GridLinesYVisibleMajor=False +GridLinesYVisibleMinor=False +AnnotationDensityAutoHideCaptions=True +AnnotationDensityToleranceAutoAdjust=True +AnnotationDensityToleranceX=86.9806204935744 +AnnotationDensityToleranceY=7.15936705015565 +PeakDetectIntensityThresholdCounts=10 +PeakDetectIntensityThresholdPercentageOfMaximum=0 +PeakDetectWidthPointsMinimum=5 +AutoScaleVisibleY=False +FixMinimumYAtZero=False +AutoAdjustScalingToIncludeCaptions=True +PrecisionX=2 +PrecisionY=1 +CursorVisible=False +CursorSnapToData=False +CursorColor=0 +CursorPositionX=100 +CursorPositionY=0 +AutoLabelPeaksDisplayXPosition=True +AutoLabelPeaksDisplayYPosition=False +AutoLabelPeaksIncludeArrow=False +AutoLabelPeaksHideInDenseRegions=True +AutoLabelPeaksCaptionAngle=0 +AutoLabelPeaksLabelCountMaximum=100 diff --git a/FINDER.FRM b/FINDER.FRM new file mode 100644 index 0000000..18622a2 --- /dev/null +++ b/FINDER.FRM @@ -0,0 +1,4459 @@ +VERSION 5.00 +Object = "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "richtx32.ocx" +Begin VB.Form frmFinder + Caption = "Formula Finder" + ClientHeight = 6345 + ClientLeft = 240 + ClientTop = 1575 + ClientWidth = 9825 + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 3050 + Icon = "FINDER.frx":0000 + KeyPreview = -1 'True + LinkTopic = "Form1" + PaletteMode = 1 'UseZOrder + ScaleHeight = 6345 + ScaleWidth = 9825 + Tag = "10000" + Begin VB.CheckBox chkShowDeltaMass + Caption = "Show Delta Mass" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 4080 + TabIndex = 77 + Tag = "10380" + ToolTipText = "Note: Delta mass notation will change as the standard deviation mode is changed (F12 in the main window)" + Top = 5160 + Value = 1 'Checked + Width = 1575 + End + Begin VB.CommandButton cmdCalculate + Caption = "&Calculate" + Enabled = 0 'False + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 3840 + TabIndex = 56 + Tag = "10310" + ToolTipText = "Find the compounds that match the specified parameters" + Top = 5640 + Width = 1035 + End + Begin VB.CommandButton cmdAbort + Caption = "Abort" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 3840 + TabIndex = 76 + Tag = "10455" + Top = 5640 + Width = 1035 + End + Begin VB.CommandButton cmdDisplayIsotopicAbundance + Caption = "&Display Iso Abundance" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 7800 + TabIndex = 75 + Tag = "10345" + Top = 5040 + Width = 1155 + End + Begin VB.TextBox txtWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 5 + Left = 8280 + TabIndex = 26 + Tag = "10270" + Text = "# or Element or Abbrev." + Top = 3000 + Width = 975 + End + Begin VB.TextBox txtWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 4 + Left = 8280 + TabIndex = 21 + Tag = "10270" + Text = "# or Element or Abbrev." + Top = 2640 + Width = 975 + End + Begin VB.CommandButton cmdFinderOptions + Caption = "Formul&a Finder Options" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 600 + Left = 8040 + TabIndex = 60 + Tag = "10300" + ToolTipText = "Shortcut: Ctrl+O" + Top = 50 + Width = 1395 + End + Begin VB.CommandButton cmdCopyAsRTF + Caption = "Copy as RT&F" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 6480 + TabIndex = 54 + Tag = "10330" + Top = 5040 + Width = 1155 + End + Begin RichTextLib.RichTextBox rtfResults + Height = 2415 + Left = 120 + TabIndex = 64 + TabStop = 0 'False + Top = 1560 + Width = 3975 + _ExtentX = 7011 + _ExtentY = 4260 + _Version = 393217 + Enabled = -1 'True + ReadOnly = -1 'True + ScrollBars = 3 + OLEDropMode = 0 + TextRTF = $"FINDER.frx":08CA + BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + End + Begin VB.TextBox txtPercentMaxWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Left = 3120 + TabIndex = 47 + Tag = "10210" + Text = "Enter Weight" + Top = 4200 + Width = 1335 + End + Begin VB.CheckBox chkPpmMode + Caption = "Ppm Mode" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 4080 + TabIndex = 51 + Tag = "10370" + Top = 4920 + Width = 1575 + End + Begin VB.CommandButton cmdCopy + Caption = "Cop&y" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 6480 + TabIndex = 58 + Tag = "10340" + Top = 5640 + Width = 1035 + End + Begin VB.TextBox txtHits + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Left = 8400 + TabIndex = 4 + Tag = "10230" + Text = "100" + ToolTipText = "Maximum number of target compounds to find" + Top = 1200 + Width = 615 + End + Begin VB.TextBox txtWeightTolerance + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Left = 2760 + TabIndex = 49 + Tag = "10220" + Text = "0.5" + ToolTipText = "Amount that target compound's weight can be from the target weight" + Top = 4800 + Width = 1095 + End + Begin VB.TextBox txtPercentTolerance + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Left = 2760 + TabIndex = 50 + Tag = "10230" + Text = "1" + ToolTipText = "Amount that elemental percent compositions can be from the target percentage" + Top = 5040 + Width = 735 + End + Begin VB.TextBox txtMWT + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Left = 3120 + TabIndex = 48 + Tag = "10210" + Text = "Enter Weight" + Top = 4440 + Width = 1335 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 9 + Left = 4440 + TabIndex = 42 + Text = "0" + Top = 4440 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 8 + Left = 4440 + TabIndex = 37 + Text = "0" + Top = 4080 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 7 + Left = 4440 + TabIndex = 32 + Text = "0" + Top = 3720 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 6 + Left = 4440 + TabIndex = 27 + Text = "0" + Top = 3360 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 5 + Left = 4440 + TabIndex = 22 + Text = "0" + Top = 3000 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 4 + Left = 4440 + TabIndex = 17 + Text = "0" + Top = 2640 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 3 + Left = 4440 + TabIndex = 13 + Text = "0" + Top = 2280 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 2 + Left = 4440 + TabIndex = 9 + Text = "0" + Top = 1920 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 1 + Left = 4440 + TabIndex = 5 + Text = "0" + Top = 1560 + Width = 495 + End + Begin VB.TextBox txtMin + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 0 + Left = 4440 + TabIndex = 0 + Text = "0" + Top = 1200 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 9 + Left = 5040 + TabIndex = 43 + Text = "10" + Top = 4440 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 8 + Left = 5040 + TabIndex = 38 + Text = "10" + Top = 4080 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 7 + Left = 5040 + TabIndex = 33 + Text = "10" + Top = 3720 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 6 + Left = 5040 + TabIndex = 28 + Text = "10" + Top = 3360 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 5 + Left = 5040 + TabIndex = 23 + Text = "10" + Top = 3000 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 4 + Left = 5040 + TabIndex = 18 + Text = "10" + Top = 2640 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 3 + Left = 5040 + TabIndex = 14 + Text = "10" + Top = 2280 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 2 + Left = 5040 + TabIndex = 10 + Text = "10" + Top = 1920 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 1 + Left = 5040 + TabIndex = 6 + Text = "10" + Top = 1560 + Width = 495 + End + Begin VB.TextBox txtMax + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 0 + Left = 5040 + TabIndex = 1 + Text = "10" + Top = 1200 + Width = 495 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 0 + Left = 5640 + TabIndex = 2 + Top = 1200 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 1 + Left = 5640 + TabIndex = 7 + Top = 1560 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 2 + Left = 5640 + TabIndex = 11 + Top = 1920 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 3 + Left = 5640 + TabIndex = 15 + Top = 2280 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 4 + Left = 5640 + TabIndex = 19 + Top = 2640 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 5 + Left = 5640 + TabIndex = 24 + Top = 3000 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 6 + Left = 5640 + TabIndex = 29 + Top = 3360 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 7 + Left = 5640 + TabIndex = 34 + Top = 3720 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 8 + Left = 5640 + TabIndex = 39 + Top = 4080 + Width = 1700 + End + Begin VB.CheckBox chkElements + Caption = "Element 1" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 9 + Left = 5640 + TabIndex = 44 + Top = 4440 + Width = 1700 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 0 + Left = 7440 + TabIndex = 3 + Tag = "10260" + Text = "Percent" + Top = 1200 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 1 + Left = 7440 + TabIndex = 8 + Tag = "10260" + Text = "Percent" + Top = 1560 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 2 + Left = 7440 + TabIndex = 12 + Tag = "10260" + Text = "Percent" + Top = 1920 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 3 + Left = 7440 + TabIndex = 16 + Tag = "10260" + Text = "Percent" + Top = 2280 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 4 + Left = 7440 + TabIndex = 20 + Tag = "10260" + Text = "Percent" + Top = 2640 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 5 + Left = 7440 + TabIndex = 25 + Tag = "10260" + Text = "Percent" + Top = 3000 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 6 + Left = 7440 + TabIndex = 30 + Tag = "10260" + Text = "Percent" + Top = 3360 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 7 + Left = 7440 + TabIndex = 35 + Tag = "10260" + Text = "Percent" + Top = 3720 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 8 + Left = 7440 + TabIndex = 40 + Tag = "10260" + Text = "Percent" + Top = 4080 + Width = 780 + End + Begin VB.TextBox txtPercent + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 9 + Left = 7440 + TabIndex = 45 + Tag = "10260" + Text = "Percent" + Top = 4440 + Width = 780 + End + Begin VB.TextBox txtWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 6 + Left = 8280 + TabIndex = 31 + Tag = "10270" + Text = "# or Element or Abbrev." + Top = 3360 + Width = 975 + End + Begin VB.TextBox txtWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 7 + Left = 8280 + TabIndex = 36 + Tag = "10270" + Text = "# or Element or Abbrev." + Top = 3720 + Width = 975 + End + Begin VB.TextBox txtWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 8 + Left = 8280 + TabIndex = 41 + Tag = "10270" + Text = "# or Element or Abbrev." + Top = 4080 + Width = 975 + End + Begin VB.TextBox txtWeight + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 285 + Index = 9 + Left = 8280 + TabIndex = 46 + Tag = "10270" + Text = "# or Element or Abbrev." + Top = 4440 + Width = 975 + End + Begin VB.OptionButton optType + Caption = "Match &Molecular Weight" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 0 + Left = 120 + TabIndex = 52 + Tag = "10350" + Top = 5400 + Value = -1 'True + Width = 2955 + End + Begin VB.OptionButton optType + Caption = "Match &Percent Compositions" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Index = 1 + Left = 120 + TabIndex = 55 + Tag = "10360" + Top = 5760 + Width = 3000 + End + Begin VB.CommandButton cmdPrint + Caption = "Prin&t ..." + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 5160 + TabIndex = 57 + Tag = "10320" + Top = 5640 + Width = 1035 + End + Begin VB.CommandButton cmdOK + Caption = "Cl&ose" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 7800 + TabIndex = 59 + Tag = "4000" + Top = 5640 + Width = 1035 + End + Begin VB.ListBox lstResults + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 2790 + Left = 120 + TabIndex = 62 + Top = 1200 + Width = 3855 + End + Begin VB.Label lblMin + Caption = "Min" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 4440 + TabIndex = 63 + Tag = "10060" + Top = 720 + Width = 495 + End + Begin VB.Label lblWeight + Caption = "Atomic Wt." + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 375 + Left = 8400 + TabIndex = 70 + Tag = "10105" + Top = 2280 + Width = 1215 + End + Begin VB.Label lblPercentMaxWeight + Caption = "Maximum Weight of Formula:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 120 + TabIndex = 74 + Tag = "10020" + Top = 4200 + Width = 2895 + End + Begin VB.Label lblWeightMode + Caption = "(using average atomic weights)" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 375 + Left = 240 + TabIndex = 73 + Top = 720 + Width = 3735 + End + Begin VB.Label lblPercentCompleted + Alignment = 2 'Center + Caption = "Percent Completed" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 615 + Left = 8280 + TabIndex = 72 + Tag = "10110" + Top = 1560 + Visible = 0 'False + Width = 1215 + End + Begin VB.Label lblHits + Caption = "Max Hits" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 8400 + TabIndex = 71 + Tag = "10100" + Top = 720 + Width = 975 + End + Begin VB.Label lblPercent + Alignment = 2 'Center + Caption = "Percent" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 7320 + TabIndex = 69 + Tag = "10090" + Top = 720 + Width = 975 + End + Begin VB.Label lblElement + Caption = "Element" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 5760 + TabIndex = 68 + Tag = "10080" + Top = 720 + Width = 1455 + End + Begin VB.Label lblWtTolerance + Caption = "Weight Tolerance:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 120 + TabIndex = 66 + Tag = "10040" + Top = 4800 + Width = 2535 + End + Begin VB.Label lblPercentTolerance + Caption = "Percent Tolerance:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 120 + TabIndex = 67 + Tag = "10050" + Top = 5040 + Width = 2535 + End + Begin VB.Label lblInstruct + Caption = $"FINDER.frx":094E + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 615 + Left = 120 + TabIndex = 53 + Tag = "10010" + Top = 0 + Width = 6735 + End + Begin VB.Label lblMWT + Caption = "Molecular Weight of Target:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 120 + TabIndex = 61 + Tag = "10030" + Top = 4440 + Width = 2895 + End + Begin VB.Label lblMax + Caption = "Max" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 495 + Left = 5040 + TabIndex = 65 + Tag = "10070" + Top = 720 + Width = 615 + End + Begin VB.Menu mnuRightClick + Caption = "RightClickMenu" + Begin VB.Menu mnuRightClickUndo + Caption = "&Undo" + End + Begin VB.Menu mnuRightClickSep1 + Caption = "-" + End + Begin VB.Menu mnuRightClickCut + Caption = "Cu&t" + End + Begin VB.Menu mnuRightClickCopy + Caption = "&Copy" + End + Begin VB.Menu mnuRightClickPaste + Caption = "&Paste" + End + Begin VB.Menu mnuRightClickDelete + Caption = "&Delete" + End + Begin VB.Menu mnuRightClickSep2 + Caption = "-" + End + Begin VB.Menu mnuRightClickSelectAll + Caption = "Select &All" + End + End +End +Attribute VB_Name = "frmFinder" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit +' The x,0 element of codearray stores a pointer to the original line the code comes from +' Then, x,1 through x,MAX_MATCHINGELEMENTS*2 is the code +' pointerarray stores a pointer to a specific line in codearray, so that swapping while sorting is extremely fast + +Private Const MAX_MATCHINGELEMENTS = 10 +Private Const MAX_HITS = 15000 + +Private lngRecursiveFunctionCallCount As Long +Private mDecimalSeparator As String + +Private Type udtElementNumType + H As Integer + C As Integer + Si As Integer + N As Integer + P As Integer + O As Integer + S As Integer + Cl As Integer + I As Integer + F As Integer + Br As Integer + Other As Integer +End Type + +Private Type udtResultStatsType + Charge As Integer + Mass As Double + MZ As Double + DeltaMass As Double +End Type + +Private Function AbsMax(ByRef intValueMin As Integer, ByRef intValueMax As Integer) As Integer + ' Takes the absolute value of both values (updating the result) + ' Makes sure the minimum value is in intValueMin and the maximum in intValueMax + + Dim intSwapVal As Integer + + intValueMin = Abs(intValueMin) + intValueMax = Abs(intValueMax) + + If intValueMin > intValueMax Then + intSwapVal = intValueMax + intValueMax = intValueMin + intValueMin = intSwapVal + End If + + AbsMax = intValueMax + +End Function + +Private Sub CheckMtoZWithTarget(dblTotalMass As Double, intTotalCharge As Single, dblTargetMass As Double, dblMassTolerance As Double, intMultipleMtoZCharge As Integer, blnChargeOK As Boolean) + ' Warning: This sub assumes that intMultipleMtoZCharge > 0 + Dim dblMtoZ As Double, dblOriginalMtoZ As Double + + ' The original target is the target m/z; assure this compound has that m/z + If intTotalCharge <> 0 Then + dblMtoZ = Abs(dblTotalMass / intTotalCharge) + Else + dblMtoZ = 0 + End If + + ' blnChargeOK is True going into this sub + dblOriginalMtoZ = dblTargetMass / intMultipleMtoZCharge + If dblMtoZ < dblOriginalMtoZ - dblMassTolerance Or dblMtoZ > dblOriginalMtoZ + dblMassTolerance Then + ' dblMtoZ is not wither tolerance of dblOriginalMtoZ, so don't print + blnChargeOK = False + End If + +End Sub + +Private Sub CompoundToCode(ByVal dblTargetWeight As Double, ByRef strCodeString() As String, ByRef udtResultsStats() As udtResultStatsType, ByRef intPointerArray() As Integer) + + ' Precedence convert table for strCodeString: + ' C1_ C2_ C3_ C4_ a z 1, 2, 3... + ' 1 2 3 4 5 30 31 32 33 + ' I convert the above numbers to characters using Chr() and add a Chr(0) in front of each one so that ... + ' if a number is larger than 226, then I use two characters: + ' 226 = Chr(0) + Chr(226+29) = Chr(0) + Chr(255) + ' 227 = Chr(CIntSafeDbl(226+29/255)) + Chr(226 + 29 Mod 255) + + Dim strCurrentLetter As String, strNumString As String, strCompound As String, strRemainder As String + Dim intXTrack As Integer, intCharLoc As Integer, intNumberLength As Integer + Dim intLineLength As Integer, intAddon As Integer + Dim intCurrentCharIndex As Integer, intCharAscii As Integer, intCurrentLine As Integer + Dim lngCurrentNum As Long, intNumSize As Integer + +On Error GoTo CompoundToCodeErrorHandler + + 'Erase strCodeString + For intCurrentLine = 0 To lstResults.ListCount - 1 + intPointerArray(intCurrentLine) = intCurrentLine + + strCompound = lstResults.List(intCurrentLine) + intXTrack = -1 + intLineLength = Len(strCompound) + For intCurrentCharIndex = 1 To intLineLength + ' Check to see if we're at charge (^) or the MW= section yet + strCurrentLetter = UCase(Mid(strCompound, intCurrentCharIndex, 1)) + If strCurrentLetter = "^" Or _ + strCurrentLetter = vbTab Or _ + strCurrentLetter = " " Then + ' Now fill udtResultStats() + If strCurrentLetter = "^" Then + ' find entire number after caret + intNumberLength = 1 + Do While IsNumeric(Mid(strCompound, intCurrentCharIndex + intNumberLength, 1)) Or _ + Mid(strCompound, intCurrentCharIndex + intNumberLength, 1) = "-" + intNumberLength = intNumberLength + 1 + Loop + 'dblResultStats(intCurrentLine, 0) = Val(Mid(strCompound, intCurrentCharIndex + 1, intNumberLength - 1)) + udtResultsStats(intCurrentLine).Charge = Val(Mid(strCompound, intCurrentCharIndex + 1, intNumberLength - 1)) + intCurrentCharIndex = intCurrentCharIndex + intNumberLength + End If + strRemainder = Mid(strCompound, intCurrentCharIndex) + + intCharLoc = InStr(strRemainder, gMWAbbreviation & "=") + If intCharLoc > 0 Then + ' Now find MW (or foreign equivalent in gMWAbbreviation) + intCharLoc = intCharLoc + Len(gMWAbbreviation & "=") + 'dblResultStats(intCurrentLine, 1) = ParseNum(Mid(strRemainder, intCharLoc), intNumSize) + udtResultsStats(intCurrentLine).Mass = ParseNum(Mid(strRemainder, intCharLoc), intNumSize) + udtResultsStats(intCurrentLine).DeltaMass = Abs(udtResultsStats(intCurrentLine).Mass - dblTargetWeight) + strRemainder = Mid(strRemainder, intCharLoc + intNumSize) + Else + 'dblResultStats(intCurrentLine, 1) = 0 + udtResultsStats(intCurrentLine).Mass = 0 + udtResultsStats(intCurrentLine).DeltaMass = 0 + intNumSize = 0 + End If + + intCharLoc = InStr(strRemainder, "m/z") + If intCharLoc > 0 Then + ' Now find m/z + intCharLoc = intCharLoc + 3 + 'dblResultStats(intCurrentLine, 2) = ParseNum(Mid(strRemainder, intCharLoc), intNumSize) + udtResultsStats(intCurrentLine).MZ = ParseNum(LTrim(Mid(strRemainder, intCharLoc)), intNumSize) + Else + 'dblResultStats(intCurrentLine, 2) = 0 + udtResultsStats(intCurrentLine).MZ = 0 + End If + + Exit For + End If + intAddon = 1 + intCharAscii = Asc(strCurrentLetter) + If (intCharAscii >= 65 And intCharAscii <= 90) Then + ' at a letter + intXTrack = intXTrack + 1 + If Mid(strCompound, intCurrentCharIndex + 2, 1) = "_" Then + ' At a custom element, give it a value of 1 to 4 + ' Also, need to bump up intCurrentCharIndex by 2 + intAddon = 3 + ' At a custom element, give it a value of Chr(0) to Chr(3), thus subtract 1 from x+1 place in string + strCodeString(intCurrentLine) = strCodeString(intCurrentLine) + Chr(0) + _ + Chr(Val(Mid(strCompound, intCurrentCharIndex + 1, 1))) + Else + ' 65 is the ascii code for the letter a + ' Thus, 65-60 = 5; subtract 60 since custom elements are Chr(0) to Chr(3), so A is Chr(5) + strCodeString(intCurrentLine) = strCodeString(intCurrentLine) + Chr(0) + _ + Chr(intCharAscii - 60) + End If + Else + ' at a number, since only letters and numbers in Formula Finder results! + lngCurrentNum = 0 + strNumString = strCurrentLetter + Do While IsNumeric(Mid(strCompound, intCurrentCharIndex + intAddon, 1)) = True + strNumString = strNumString & Mid(strCompound, intCurrentCharIndex + 1, 1) + intAddon = intAddon + 1 + Loop + lngCurrentNum = Val(strNumString) + If lngCurrentNum > 0 Then + intXTrack = intXTrack + 1 + ' Add 30 so that the number 1 is represented as 31 + If lngCurrentNum <= 225 Then + strCodeString(intCurrentLine) = strCodeString(intCurrentLine) + Chr(0) + _ + Chr(lngCurrentNum + 30) + Else + ' lngCurrentNum must be less than 65025 ! + strCodeString(intCurrentLine) = strCodeString(intCurrentLine) + _ + Chr(CIntSafeDbl((lngCurrentNum + 30) / 255)) + _ + Chr((lngCurrentNum + 30) Mod 255 + 1) + End If + End If + End If + If intXTrack = MAX_MATCHINGELEMENTS * 2 And intCurrentCharIndex < intLineLength Then + ' Too many things to compare (over MAX_MATCHINGELEMENTS elements) -- Shouldn't occur since users are limited to MAX_MATCHINGELEMENTS found elements/abbreviations + ' Save the rest of the string in strCodeString + strCodeString(intCurrentLine) = strCodeString(intCurrentLine) & "&" & _ + Mid(strCompound, intCurrentCharIndex + 1) + End If + intCurrentCharIndex = intCurrentCharIndex + intAddon - 1 + Next intCurrentCharIndex + + Next intCurrentLine + + Exit Sub + +CompoundToCodeErrorHandler: + GeneralErrorHandler "frmFinder|CompoundToCode", Err.Number, Err.Description + +End Sub + +Private Function ConstructAndVerifyCompound(ByRef strConstruct As String, count1 As Long, count2 As Long, count3 As Long, count4 As Long, count5 As Long, count6 As Long, count7 As Long, count8 As Long, count9 As Long, count10 As Long, elem1$, elem2$, elem3$, elem4$, elem5$, elem6$, elem7$, elem8$, elem9$, elem10$, dblTotalWeight As Double, dblTargetWeight As Double, dblWeightTolerance As Double, sngTotalCharge As Single, intMultipleMtoZCharge As Integer) As Boolean + ' Returns 0 if compound has too many hydrogens AND hydrogen checking is on, + ' otherwise returns 1 + ' + ' common function to both molecular weight and percent composition matching + ' + ' strConstruct is passed by reference and is modified in this subroutine + + Dim x As Integer, y As Integer + Dim swapVal As Integer, blnHOK As Boolean, blnChargeOK As Boolean + Dim strSwap As String + Dim strFormulaElem(10) As String + Dim intFormulaCount(10) As Integer + Dim EmpResultSymbols(9) As String ' Store the elements and abbreviations of the found formula so that they can be properly sequenced according to empirical formula conventions + Dim EmpResultCount(9) As Integer ' Store the number of each element and abbreviation for empirical formula conversion + + ' Counters for elements of interest (hydrogen, carbon, silicon, nitrogen, phosphorus, chlorine, iodine, flourine, bromine, and other) + Dim udtElementNum As udtElementNumType + +On Error GoTo ConstructAndVerifyCompoundErrorHandler + + If Not cChkBox(frmFinderOptions.chkSort) Then + ' Don't convert to empirical formula or sort + If count1 <> 0 Then strConstruct = strConstruct & elem1$ + If count1 > 1 Then strConstruct = strConstruct & LTrim(Str(count1)) + If count2 <> 0 Then strConstruct = strConstruct & elem2$ + If count2 > 1 Then strConstruct = strConstruct & LTrim(Str(count2)) + If count3 <> 0 Then strConstruct = strConstruct & elem3$ + If count3 > 1 Then strConstruct = strConstruct & LTrim(Str(count3)) + If count4 <> 0 Then strConstruct = strConstruct & elem4$ + If count4 > 1 Then strConstruct = strConstruct & LTrim(Str(count4)) + If count5 <> 0 Then strConstruct = strConstruct & elem5$ + If count5 > 1 Then strConstruct = strConstruct & LTrim(Str(count5)) + If count6 <> 0 Then strConstruct = strConstruct & elem6$ + If count6 > 1 Then strConstruct = strConstruct & LTrim(Str(count6)) + If count7 <> 0 Then strConstruct = strConstruct & elem7$ + If count7 > 1 Then strConstruct = strConstruct & LTrim(Str(count7)) + If count8 <> 0 Then strConstruct = strConstruct & elem8$ + If count8 > 1 Then strConstruct = strConstruct & LTrim(Str(count8)) + If count9 <> 0 Then strConstruct = strConstruct & elem9$ + If count9 > 1 Then strConstruct = strConstruct & LTrim(Str(count9)) + If count10 <> 0 Then strConstruct = strConstruct & elem10$ + If count10 > 1 Then strConstruct = strConstruct & LTrim(Str(count10)) + Else + For x = 0 To 9 + EmpResultSymbols(x) = "" + EmpResultCount(x) = 0 + Next x + ' Convert to empirical formula and sort + If count1 <> 0 Then EmpResultSymbols(0) = elem1$ + If count1 > 1 Then EmpResultCount(0) = count1 + If count2 <> 0 Then EmpResultSymbols(1) = elem2$ + If count2 > 1 Then EmpResultCount(1) = count2 + If count3 <> 0 Then EmpResultSymbols(2) = elem3$ + If count3 > 1 Then EmpResultCount(2) = count3 + If count4 <> 0 Then EmpResultSymbols(3) = elem4$ + If count4 > 1 Then EmpResultCount(3) = count4 + If count5 <> 0 Then EmpResultSymbols(4) = elem5$ + If count5 > 1 Then EmpResultCount(4) = count5 + If count6 <> 0 Then EmpResultSymbols(5) = elem6$ + If count6 > 1 Then EmpResultCount(5) = count6 + If count7 <> 0 Then EmpResultSymbols(6) = elem7$ + If count7 > 1 Then EmpResultCount(6) = count7 + If count8 <> 0 Then EmpResultSymbols(7) = elem8$ + If count8 > 1 Then EmpResultCount(7) = count8 + If count9 <> 0 Then EmpResultSymbols(8) = elem9$ + If count9 > 1 Then EmpResultCount(8) = count9 + If count10 <> 0 Then EmpResultSymbols(9) = elem10$ + If count10 > 1 Then EmpResultCount(9) = count10 + ' First find C + For x = 0 To 9 + If EmpResultSymbols(x) = "C" Then + strConstruct = strConstruct & EmpResultSymbols(x) ' i.e. C + If EmpResultCount(x) > 1 Then strConstruct = strConstruct & _ + LTrim(Str(EmpResultCount(x))) + ' blank this EmpResultSymbols so it doesn't get repeated + EmpResultSymbols(x) = "" + Exit For + End If + Next x + For x = 0 To 9 + If EmpResultSymbols(x) = "H" Then + strConstruct = strConstruct & EmpResultSymbols(x) ' i.e. H + If EmpResultCount(x) > 1 Then strConstruct = strConstruct & _ + LTrim(Str(EmpResultCount(x))) + ' blank this EmpResultSymbols so it doesn't get repeated + EmpResultSymbols(x) = "" + Exit For + End If + Next x + + ' Alphabatize the remaining elements/abbreviations via a simple bubble sort + For y = 9 To 1 Step -1 ' Sort from end to start + For x = 0 To y - 1 + If EmpResultSymbols(x) > EmpResultSymbols(x + 1) Then + ' Swap the elements/abbreviations + strSwap = EmpResultSymbols(x) + EmpResultSymbols(x) = EmpResultSymbols(x + 1) + EmpResultSymbols(x + 1) = strSwap + ' and their EmpResultCount values + swapVal = EmpResultCount(x) + EmpResultCount(x) = EmpResultCount(x + 1) + EmpResultCount(x + 1) = swapVal + End If + Next x + Next y + + ' Now insert the alphabatized elements into the string + For x = 0 To 9 + If EmpResultSymbols(x) <> "" Then + strConstruct = strConstruct & EmpResultSymbols(x) + If EmpResultCount(x) > 1 Then strConstruct = strConstruct & _ + LTrim(Str(EmpResultCount(x))) + End If + Next x + + End If + + + ' Verify hydrogens if requested + If cChkBox(frmFinderOptions.chkVerifyHydrogens) Or cChkBox(frmFinderOptions.chkFindTargetMtoZ) Then + intFormulaCount(1) = count1 + strFormulaElem(1) = elem1$ + intFormulaCount(2) = count2 + strFormulaElem(2) = elem2$ + intFormulaCount(3) = count3 + strFormulaElem(3) = elem3$ + intFormulaCount(4) = count4 + strFormulaElem(4) = elem4$ + intFormulaCount(5) = count5 + strFormulaElem(5) = elem5$ + intFormulaCount(6) = count6 + strFormulaElem(6) = elem6$ + intFormulaCount(7) = count7 + strFormulaElem(7) = elem7$ + intFormulaCount(8) = count8 + strFormulaElem(8) = elem8$ + intFormulaCount(9) = count9 + strFormulaElem(9) = elem9$ + intFormulaCount(10) = count10 + strFormulaElem(10) = elem10$ + + ' Determine number of C, Si, N, P, O, S, Cl, I, F, Br and H atoms + For x = 1 To 10 + Select Case strFormulaElem(x) + Case "C": udtElementNum.C = udtElementNum.C + intFormulaCount(x) + Case "Si": udtElementNum.Si = udtElementNum.Si + intFormulaCount(x) + Case "N": udtElementNum.N = udtElementNum.N + intFormulaCount(x) + Case "P": udtElementNum.P = udtElementNum.P + intFormulaCount(x) + Case "O": udtElementNum.O = udtElementNum.O + intFormulaCount(x) + Case "S": udtElementNum.S = udtElementNum.S + intFormulaCount(x) + Case "Cl": udtElementNum.Cl = udtElementNum.Cl + intFormulaCount(x) + Case "I": udtElementNum.I = udtElementNum.I + intFormulaCount(x) + Case "F": udtElementNum.F = udtElementNum.F + intFormulaCount(x) + Case "Br": udtElementNum.Br = udtElementNum.Br + intFormulaCount(x) + Case "H": udtElementNum.H = udtElementNum.H + intFormulaCount(x) + Case Else: udtElementNum.Other = udtElementNum.Other + intFormulaCount(x) + End Select + Next x + + ' Compute maximum number of hydrogens + If udtElementNum.Si = 0 And udtElementNum.C = 0 And udtElementNum.N = 0 And _ + udtElementNum.P = 0 And udtElementNum.Other = 0 And (udtElementNum.O > 0 Or udtElementNum.S > 0) Then + ' Only O and S + udtElementNum.H = 3 + Else + ' Formula is: [#C*2 + 3 - (2 if N or P present)] + [#N + 3 - (1 if C or Si present)] + [#other elements * 4 + 2], where we assume other elements can have a coordination number of up to 6 + If udtElementNum.C > 0 Or udtElementNum.Si > 0 Then udtElementNum.H = udtElementNum.H + (udtElementNum.C + udtElementNum.Si) * 2 + 3 + 'If udtElementNum.Si > 0 Then udtElementNum.H = udtElementNum.H + udtElementNum.Si * 2 + 3 + If udtElementNum.N > 0 Or udtElementNum.P > 0 Then udtElementNum.H = udtElementNum.H + (udtElementNum.N + udtElementNum.P) + 3 + 'If udtElementNum.P > 0 Then udtElementNum.H = udtElementNum.H + udtElementNum.P + 3 + If udtElementNum.Other > 0 Then udtElementNum.H = udtElementNum.H + udtElementNum.Other * 4 + 3 + + ' Correction for carbon contribution + 'If (udtElementNum.C > 0 Or udtElementNum.Si > 0) And (udtElementNum.N > 0 Or udtElementNum.P > 0) Then udtElementNum.H = udtElementNum.H - 2 + ' Correction for nitrogen contribution + 'If (udtElementNum.N > 0 Or udtElementNum.P > 0) And (udtElementNum.C > 0 Or udtElementNum.Si > 0) Then udtElementNum.H = udtElementNum.H - 1 + ' Combine the above two if's into: + If (udtElementNum.N > 0 Or udtElementNum.P > 0) And (udtElementNum.C > 0 Or udtElementNum.Si > 0) Then udtElementNum.H = udtElementNum.H - 3 + End If + + ' correct for if H only + If udtElementNum.H < 3 Then udtElementNum.H = 3 + + ' correct for halogens + udtElementNum.H = udtElementNum.H - udtElementNum.F - udtElementNum.Cl - udtElementNum.Br - udtElementNum.I + + ' correct for negative udtElementNum.H + If udtElementNum.H < 0 Then udtElementNum.H = 0 + + ' Verify H's + If udtElementNum.H <= udtElementNum.H Or Not cChkBox(frmFinderOptions.chkVerifyHydrogens) Then + blnHOK = True + Else + blnHOK = False + End If + + ' Only proceed if hydrogens check out + If blnHOK Then + + ' See if sngTotalCharge is within charge limits + If cChkBox(frmFinderOptions.chkFindCharge) Then + sngTotalCharge = CorrectChargeEmpirical(sngTotalCharge, udtElementNum, blnChargeOK) + Else + blnChargeOK = 1 + End If + + 'frmFinderOptions.chk + ' If charge is within range and checking for multiples, see if correct m/z too + If blnChargeOK And cChkBox(frmFinderOptions.chkFindTargetMtoZ) Then + CheckMtoZWithTarget dblTotalWeight, sngTotalCharge, dblTargetWeight, dblWeightTolerance, intMultipleMtoZCharge, blnChargeOK + End If + + If blnChargeOK Then + ConstructAndVerifyCompound = True + Else + ConstructAndVerifyCompound = False + End If + End If + Else + ConstructAndVerifyCompound = True + End If + + Exit Function + +ConstructAndVerifyCompoundErrorHandler: + GeneralErrorHandler "frmFinder|ConstructAndVerifyCompound", Err.Number, Err.Description + ConstructAndVerifyCompound = False + +End Function + +Private Sub ConstructResultsLine(ByRef strResultsLine As String, dblTotalMass As Double, dblTargetMass As Double, sngTotalCharge As Single) + ' dblTargetMass <= 0 means matching percent compositions, so don't want to add dm= to line + + Dim blnShowDeltaMass As Boolean + +On Error GoTo ConstructResultsLineErrorHandler + + ' Add charge if desired + If cChkBox(frmFinderOptions.chkFindCharge) Then + strResultsLine = strResultsLine & "^" & Trim(CStr(sngTotalCharge)) + End If + + ' Add MW info and dm or ppm to strResultsLine + If chkShowDeltaMass.value = vbChecked Then + blnShowDeltaMass = True + Else + blnShowDeltaMass = False + End If + + If blnShowDeltaMass And frmProgramPreferences.optStdDevType(1).value = True And dblTargetMass > 0 Then + ' Use scientific notation + If chkPpmMode.value = 0 Then + strResultsLine = strResultsLine & vbTab & gMWAbbreviation & "=" & CStr(dblTotalMass) & _ + vbTab & LookupLanguageCaption(10280, "dm") & "=" & _ + Format$((dblTotalMass - dblTargetMass), "0.0#######E+00") + Else + strResultsLine = strResultsLine & vbTab & gMWAbbreviation & "=" & CStr(dblTotalMass) & _ + vbTab & LookupLanguageCaption(10280, "dm") & "=" & _ + Format$(CDbl(((dblTotalMass) / dblTargetMass - 1) * 1000000#), "0.0####E+00") & " " & LookupLanguageCaption(10285, "ppm") + End If + If frmFinderOptions.chkFindMtoZ.value = 1 And sngTotalCharge <> 0 Then + ' Compute m/z value + strResultsLine = strResultsLine & vbTab & "m/z " & _ + Format$(Abs(dblTotalMass / sngTotalCharge), "0.0######E+00") + End If + Else + If Not blnShowDeltaMass Or dblTargetMass <= 0 Then + ' Don't add difference in mass (dm) result since standard deviation mode is off + strResultsLine = strResultsLine & vbTab & gMWAbbreviation & "=" & CStr(dblTotalMass) + Else + ' Display dm result in 0.000 notation rather than exponential + If chkPpmMode.value = 0 Then + strResultsLine = strResultsLine & vbTab & gMWAbbreviation & "=" & CStr(dblTotalMass) & _ + vbTab & LookupLanguageCaption(10280, "dm") & "=" & _ + Format$((dblTotalMass - dblTargetMass), "#0.0#######") + Else + strResultsLine = strResultsLine & vbTab & gMWAbbreviation & "=" & CStr(dblTotalMass) & _ + vbTab & LookupLanguageCaption(10280, "dm") & "=" & _ + Format$(CDbl(((dblTotalMass) / dblTargetMass - 1) * 1000000#), "#0.0") & " " & LookupLanguageCaption(10285, "ppm") + End If + End If + If frmFinderOptions.chkFindMtoZ.value = 1 And sngTotalCharge <> 0 Then + ' Compute m/z value + strResultsLine = strResultsLine & vbTab & "m/z " & _ + Format$(Abs(dblTotalMass / sngTotalCharge), "#0.000") + End If + End If + + Exit Sub + +ConstructResultsLineErrorHandler: + GeneralErrorHandler "frmFinder|ConstructResultsLine", Err.Number, Err.Description + +End Sub + +Private Sub ConvertListToRTF() + Dim x As Integer, y As Integer, strWorkLine As String, strRTF As String, strRTFAdd As String + +On Error GoTo ConvertListToRTFErrorHandler + + rtfResults.Text = "" + + strRTF = "{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\froman " & objMwtWin.RtfFontName & ";}{\f3\froman Times New Roman;}{\f4\fswiss\fprq2 System;}}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red255\green255\blue255;}\deflang1033\pard\plain\f2\fs" & Trim(Str(CIntSafeDbl(objMwtWin.RtfFontSize * 2.25))) & " " + + For x = 0 To lstResults.ListCount - 1 + strWorkLine = lstResults.List(x) + If optType(1).value = True And InStr(strWorkLine, LookupLanguageCaption(10535, "has")) > 0 Then + ' Matching percent compositions and on a has ... line, just add to strRTF + strRTF = strRTF & strWorkLine & "\par " + Else + ' Search for a Tab + y = InStr(strWorkLine, vbTab) + If y > 0 Then + ' Found a tab, convert part before tab to formatted RTF + strRTFAdd = ResultsToRtf(Left(strWorkLine, y - 1)) & Mid(strWorkLine, y) + Else + strRTFAdd = strWorkLine + End If + strRTF = strRTF & strRTFAdd & "\par " + End If + If x Mod 50 = 0 Then + If lstResults.ListCount > 1 Then + lblPercentCompleted.Caption = LookupLanguageCaption(10150, "Formatting") & " " & _ + Str(CIntSafeDbl(x / (lstResults.ListCount - 1) * 100)) & _ + LookupLanguageCaption(10110, "% Completed") + End If + DoEvents + If gKeyPressAbortFormulaFinder >= 2 Then + ' A key was pressed, so stop formatting + If gKeyPressAbortFormulaFinder = 2 Then MsgBox LookupLanguageCaption(10450, "A key was pressed.") & " " & LookupLanguageCaption(10465, "Stopping formatting."), _ + vbOKOnly + vbCritical, LookupLanguageCaption(10455, "Abort") + If gKeyPressAbortFormulaFinder = 3 Then MsgBox LookupLanguageCaption(10460, "The mouse was clicked outside the results box.") & " " & LookupLanguageCaption(10465, "Stopping formatting."), _ + vbOKOnly + vbCritical, LookupLanguageCaption(10455, "Abort") + gKeyPressAbortFormulaFinder = 4 + Exit For + End If + End If + Next x + + rtfResults.TextRTF = strRTF & "}" + + If gKeyPressAbortFormulaFinder < 2 Then + lblPercentCompleted.Caption = LookupLanguageCaption(10155, "Done") + Else + lblPercentCompleted.Caption = LookupLanguageCaption(10160, "Formatting Aborted") + End If + + Exit Sub + +ConvertListToRTFErrorHandler: + GeneralErrorHandler "frmFinder|ConvertListToRTF", Err.Number, Err.Description + +End Sub + +Private Sub CopyRoutinePrivate() + ' Copy text from rtfResults to the clipboard + + Dim strCopyText As String + + strCopyText = rtfResults.SelText + + RemoveHeightAdjustChar strCopyText + + ' Copy corrected text to Clipboard. + Clipboard.Clear + Clipboard.SetText strCopyText, vbCFText + +End Sub + +Private Function CorrectChargeEmpirical(sngTotalCharge As Single, udtElementNum As udtElementNumType, blnChargeOK As Boolean) As Single + + Dim intNumHalogens As Integer, intIndex As Integer + + ' Correct charge using rules for an empirical formula + If udtElementNum.C + udtElementNum.Si >= 1 Then + If udtElementNum.H > 0 And objMwtWin.GetElementStat(1, esCharge) = 1 Then + ' Since carbon or silicon are present, assume the hydrogens should be negative + ' Subtract udtElementNum.h*2 since hydrogen is assigned a +1 charge if ElementStats(1).Charge = 1 + sngTotalCharge = sngTotalCharge - udtElementNum.H * 2 + End If + ' Correct for udtElementNum.ber of C and Si + If udtElementNum.C + udtElementNum.Si > 1 Then + sngTotalCharge = sngTotalCharge - CIntSafeDbl(udtElementNum.C + udtElementNum.Si - 1) * 2 + End If + End If + + If udtElementNum.N + udtElementNum.P >= 1 And udtElementNum.C > 0 Then + ' Assume 2 hydrogens around each Nitrogen or Phosphorus, thus add back +2 for each H + ' First, decrease udtElementNum.ber of halogens by udtElementNum.ber of hydrogens & halogens taken up by the carbons + ' Determine # of H taken up by all the carbons in a compound without N or P, then add back 1 H for each N and P + intNumHalogens = udtElementNum.H + udtElementNum.F + udtElementNum.Cl + udtElementNum.Br + udtElementNum.I + intNumHalogens = intNumHalogens - (udtElementNum.C * 2 + 2) + udtElementNum.N + udtElementNum.P + If intNumHalogens < 0 Then + intNumHalogens = 0 + Else + For intIndex = 1 To udtElementNum.N + udtElementNum.P + sngTotalCharge = sngTotalCharge + 2 + intNumHalogens = intNumHalogens - 1 + If intNumHalogens = 0 Then + Exit For + Else + sngTotalCharge = sngTotalCharge + 2 + intNumHalogens = intNumHalogens - 1 + If intNumHalogens = 0 Then Exit For + End If + Next intIndex + End If + End If + + If cChkBox(frmFinderOptions.chkLimitChargeRange) Then + ' Make sure sngTotalCharge is within the specified range + If sngTotalCharge >= CIntSafe(frmFinderOptions.txtChargeMin.Text) And _ + sngTotalCharge <= CIntSafe(frmFinderOptions.txtChargeMax.Text) Then + ' Charge is within range + blnChargeOK = True + Else + blnChargeOK = False + End If + Else + blnChargeOK = True + End If + + CorrectChargeEmpirical = sngTotalCharge +End Function + +Private Sub DisplayIsoAbundanceForCurrent(Optional blnFromRtfResults As Boolean = False) + Dim lngSelPosition As Long, lngMatchLoc As Long + Dim intIndex As Integer + + Dim blnTabFound As Boolean + + Dim strCompareText As String, strCharge As String, strCompareTextCompacted As String + Dim strWorking As String, strMW As String + + If lstResults.ListCount = 0 Then + MsgBox LookupLanguageCaption(10550, "The results box is empty."), vbOKOnly, _ + LookupLanguageCaption(10555, "Nothing to Copy") + Else + ' Determine the line the cursor is on + lngSelPosition = rtfResults.SelStart + + strWorking = rtfResults.Text + + If lngSelPosition = 0 Then lngSelPosition = 1 + + ' Step backward until the previous vbCrLf is found + Do While Mid(strWorking, lngSelPosition, 1) <> vbLf And lngSelPosition > 1 + lngSelPosition = lngSelPosition - 1 + Loop + + If lngSelPosition > 1 Then + strWorking = Mid(strWorking, lngSelPosition + 1) + Else + ' At beginning of results; display first result + If lstResults.ListCount > 1 Then + strWorking = lstResults.List(1) + End If + End If + + ' Step forward until MW= is found (or foreign equivalent in gMWAbbreviation) + strMW = gMWAbbreviation & "=" + + lngSelPosition = 1 + blnTabFound = False + Do While lngSelPosition < Len(strWorking) + If Mid(strWorking, lngSelPosition, 1) = vbTab Then + blnTabFound = True + Exit Do + End If + lngSelPosition = lngSelPosition + 1 + Loop + + If blnTabFound Then + strWorking = Left(strWorking, lngSelPosition - 1) + + ' Replace any tilde character in strWorking + strWorking = Trim(Replace(strWorking, RTF_HEIGHT_ADJUSTCHAR, "")) + + ' If a Caret is present, remove the caret and any numbers following + lngMatchLoc = InStr(strWorking, "^") + If lngMatchLoc > 0 Then + strWorking = Left(strWorking, lngMatchLoc - 1) + Else + ' Need to look for entry in lstResults in order to return just the formula, and not the charge + For intIndex = 0 To lstResults.ListCount - 1 + strCompareText = lstResults.List(intIndex) + lngMatchLoc = InStr(strCompareText, vbTab) + If lngMatchLoc > 0 Then strCompareText = Left(strCompareText, lngMatchLoc - 1) + lngMatchLoc = InStr(strCompareText, "^") + If lngMatchLoc > 0 Then + ' Need to reverse the charge (i.e. change from -3 or +3 to 3- or 3+ + ' Also need to remove the ^ from strCompareText + strCharge = Trim(Mid(strCompareText, lngMatchLoc + 1)) + strCompareText = Trim(Left(strCompareText, lngMatchLoc - 1)) + If Left(strCharge, 1) = "+" Then + strCharge = Mid(strCharge, 2) & "+" + ElseIf Left(strCharge, 1) = "-" Then + strCharge = Mid(strCharge, 2) & "-" + Else + strCharge = strCharge & "+" + End If + strCompareTextCompacted = strCompareText & strCharge + Else + strCompareTextCompacted = strCompareText + End If + If strCompareTextCompacted = strWorking Then + strWorking = strCompareText + Exit For + End If + Next intIndex + End If + + Me.MousePointer = vbHourglass + + With frmIsotopicDistribution + .rtfFormula = strWorking + SetCheckBox .chkPlotResults, True + + .SetNeedToZoomOutFull True + .SetFormActivated + + .StartIsotopicDistributionCalcs False + End With + + Me.MousePointer = vbNormal + + If blnFromRtfResults Then + rtfResults.SetFocus + End If + Else + MsgBox "The cursor is not on a line with a valid formula." + End If + + End If +End Sub + +Private Function FinderMatchStats(matchline As Integer, Optional strMatchSymbol As String, Optional Charge As Single) As Double + ' Returns the weight of the element on matchline, along with setting the symbol and charge + Dim intSymbolReference As Integer, strWork As String + Dim blnSymbolMatched As Boolean + Dim strCustomElementPhrase As String, strNumOrElementPhrase As String + Dim strSymbol As String, dblMass As Double + Dim lngError As Long + Dim sngCharge As Single + Dim strFormula As String + Dim blnIsAminoAcid As Boolean + + strCustomElementPhrase = LookupLanguageCaption(10420, "Custom") + strNumOrElementPhrase = LookupLanguageCaption(10270, "# or Element or Abbrev.") + + Select Case matchline + Case 0 To 3 + Select Case matchline + Case 0: intSymbolReference = 6 + Case 1: intSymbolReference = 1 + Case 2: intSymbolReference = 7 + Case 3: intSymbolReference = 8 + End Select + + lngError = objMwtWin.GetElement(intSymbolReference, strSymbol, dblMass, 0, sngCharge, 0) + Debug.Assert lngError = 0 + + FinderMatchStats = dblMass + strMatchSymbol = strSymbol + Charge = sngCharge + + Case 4 To 9: + ' Working with custom elements + If Not IsNumeric(txtWeight(matchline).Text) Then + blnSymbolMatched = False + If txtWeight(matchline).Text = strNumOrElementPhrase Then + ' The custom element phrase is present; don't try to match it to an element + Else + ' A single element or abbreviation was entered + + ' Convert input to default format of first letter capitalized and rest lowercase + txtWeight(matchline).Text = UCase(Left(txtWeight(matchline).Text, 1)) + _ + Mid(txtWeight(matchline).Text, 2) + strWork = txtWeight(matchline).Text + + ' See if this is an element + intSymbolReference = objMwtWin.GetElementID(strWork) + + If intSymbolReference >= 1 Then + ' Found an element + lngError = objMwtWin.GetElement(intSymbolReference, strSymbol, dblMass, 0, sngCharge, 0) + Debug.Assert lngError = 0 + + FinderMatchStats = dblMass + strMatchSymbol = strSymbol + Charge = sngCharge + + blnSymbolMatched = True + Else + ' See if this is an abbreviation + intSymbolReference = objMwtWin.GetAbbreviationID(strWork) + If intSymbolReference >= 1 Then + ' Found a normal abbreviation + lngError = objMwtWin.GetAbbreviation(intSymbolReference, strSymbol, strFormula, sngCharge, blnIsAminoAcid) + FinderMatchStats = objMwtWin.ComputeMass(strFormula) + strMatchSymbol = strSymbol + Charge = sngCharge + + blnSymbolMatched = True + End If + End If + + End If + If Not blnSymbolMatched Then + FinderMatchStats = -1 + txtWeight(matchline) = strNumOrElementPhrase + strMatchSymbol = Left(strCustomElementPhrase, 1) & Trim(Str(matchline - 3)) & "_" + Charge = 0 + Else + ' Re-assign matched element or abbreviation to properly capitalize + txtWeight(matchline) = strMatchSymbol + End If + Else + FinderMatchStats = CDblSafe(txtWeight(matchline)) + strMatchSymbol = Left(strCustomElementPhrase, 1) & Trim(Str(matchline - 3)) & "_" + Charge = 0 + End If + Case Else: + FinderMatchStats = -1 + End Select + +End Function + +Public Function FormulaFinderCalculate(Optional blnQuietMode As Boolean = False) As String + + Dim intNumPotentialElementCount As Integer, blnCalculationsAborted As Boolean + Dim x As Integer, y As Integer, intMaxHits As Integer, eResponse As VbMsgBoxResult + Dim blnBad As Boolean, lngCount As Long + Dim intMultipleSearchMin As Integer, intMultipleSearchMax As Integer + Dim tolerance As Double, dblTargetWeight As Double, percentcompsum As Double + Dim strMessage As String, strWork As String, strSwap As String + Dim dblSwapVal As Double + Dim strMatchSymbol As String, MaxFormulaWeight As Double, Charge As Single + + Static blnCalculating As Boolean + + Dim intPotentialElementPointers(0) As Integer ' Empty array of pointers to the potential elements + + Dim intRange(MAX_MATCHINGELEMENTS, 2) As Integer ' The min and max number for each element + Dim dblPotentialElementStats(MAX_MATCHINGELEMENTS, 1) As Double ' The elemental weight and charge for each element or abbreviation + Dim strPotentialElements(MAX_MATCHINGELEMENTS) As String ' The symbol for each element or abbreviation + Dim dblTargetPercents(MAX_MATCHINGELEMENTS, 1) As Double ' The min and max percentages for each element (if applicable) + + Dim strCompoundList() As String + Dim strCodeString() As String + Dim udtResultStats() As udtResultStatsType + Dim intPointerArray() As Integer + + If blnCalculating Then Exit Function + + gKeyPressAbortFormulaFinder = 0 + blnCalculationsAborted = False + +On Error GoTo FinderErrorHandler + + ' Check for Checked elements + strMessage = "" + For x = 0 To MAX_MATCHINGELEMENTS + If cChkBox(chkElements(x)) Then Exit For + Next x + + If x = MAX_MATCHINGELEMENTS + 1 Then + strMessage = strMessage & LookupMessage(700) & vbCrLf + Else + ' Check for valid information in text boxes + If Val(txtHits.Text) <= 0 Then + strMessage = strMessage & LookupMessage(705) & vbCrLf + ElseIf Val(txtHits.Text) > MAX_HITS Then + strMessage = strMessage & LookupMessage(710, " " & Str(MAX_HITS)) & vbCrLf + Else + intMaxHits = CIntSafe(txtHits.Text) + End If + + ' Check for reasonable numbers in Min/Max boxes + For x = 0 To 9 + If cChkBox(chkElements(x)) And Val(txtMin(x).Text) < 0 Then + strMessage = strMessage & LookupMessage(715) & vbCrLf + ElseIf cChkBox(chkElements(x)) And Val(txtMin(x).Text) > Val(txtMax(x).Text) Then + strMessage = strMessage & LookupMessage(720) & vbCrLf + ElseIf cChkBox(chkElements(x)) And Val(txtMax(x).Text) > 65025 Then + strMessage = strMessage & LookupMessage(725) & vbCrLf + End If + Next x + + ' Initialize custom elements + For x = 4 To MAX_MATCHINGELEMENTS - 1 + If cChkBox(chkElements(x)) Then + If Not IsNumeric(txtWeight(x).Text) Then + If txtWeight(x).Text = LookupLanguageCaption(10270, "# or Element or Abbrev.") Then strMessage = strMessage & LookupMessage(730) & vbCrLf + Else + If Val(txtWeight(x).Text) <= 0 Then strMessage = strMessage & LookupMessage(735) & vbCrLf + End If + End If + Next x + + If optType(0).value = True Then + ' Matching Molecular Weights + If Not IsNumeric(txtMWT.Text) Then + strMessage = strMessage & LookupMessage(740) & vbCrLf + Else + If Val(txtMWT.Text) <= 0 Then strMessage = strMessage & LookupMessage(745) & vbCrLf + End If + If Val(txtWeightTolerance.Text) < 0 Then strMessage = strMessage & LookupMessage(750) & vbCrLf + Else + ' Matching Percent Compositions + + ' Confirm that txtPercentMaxWeight is Valid + If Not IsNumeric(txtPercentMaxWeight.Text) Then + strMessage = strMessage & LookupMessage(755) & vbCrLf + Else + If Val(txtPercentMaxWeight.Text) <= 0 Then strMessage = strMessage & LookupMessage(760) & vbCrLf + End If + MaxFormulaWeight = CDblSafe(txtPercentMaxWeight.Text) + + For x = 0 To 9 + If cChkBox(chkElements(x)) Then + If Not IsNumeric(txtPercent(x).Text) Then + FinderMatchStats x, strMatchSymbol + strMessage = strMessage & LookupMessage(765, ": " & strMatchSymbol) & vbCrLf + Else + If Val(txtPercent(x).Text) <= 0 Then strMessage = strMessage & LookupMessage(770) & vbCrLf + percentcompsum = percentcompsum + CDblSafe(txtPercent(x).Text) + End If + End If + Next x + If strMessage = "" Then + If percentcompsum > 100 + CDblSafe(txtPercentTolerance.Text) Or _ + percentcompsum < 100 - CDblSafe(txtPercentTolerance.Text) Then + strMessage = LookupLanguageCaption(10480, "The sum of the percent compositions is not 100%") & " (" & CStr(percentcompsum) & "%) " & LookupLanguageCaption(10485, "Continue with calculation?") + eResponse = MsgBox(strMessage, vbYesNo + vbQuestion + vbDefaultButton2, LookupLanguageCaption(4050, "Caution")) + If eResponse = vbNo Then + Exit Function + Else + strMessage = "" + End If + End If + End If + End If + End If + + If strMessage <> "" Then + If Not blnQuietMode Then + MsgBox strMessage, vbOKOnly + vbExclamation, LookupLanguageCaption(10490, "Cannot Calculate") + Else + FormulaFinderCalculate = strMessage + End If + Exit Function + End If + + ' Delete old Results + lstResults.Clear + lstResults.Visible = True + rtfResults.Visible = False + + ' Fill working variables with correct values + If optType(1).value = True Then + ' Matching Percent Compositions + tolerance = CDblSafe(txtPercentTolerance.Text) + Else + ' Matching Molecular Weights + If chkPpmMode.value = 0 Then + tolerance = CDblSafe(txtWeightTolerance.Text) + Else + tolerance = Abs(CDblSafe(txtMWT.Text) * CDblSafe(txtWeightTolerance.Text) / 1000000#) + End If + dblTargetWeight = CDblSafe(txtMWT.Text) + End If + + ' Determine which elements are checked and add to potentialelement list + intNumPotentialElementCount = 0 + For x = 0 To 9 + If cChkBox(chkElements(x)) Then + intRange(intNumPotentialElementCount, 0) = CIntSafe(txtMin(x).Text) + intRange(intNumPotentialElementCount, 1) = CIntSafe(txtMax(x).Text) + If x >= 4 Then + ' Working with custom elements + If Not IsNumeric(txtWeight(x).Text) Then + ' A single element or abbreviation was entered + blnBad = False + ' Convert input to default format of first letter capitalized and rest lowercase + txtWeight(x).Text = UCase(Left(txtWeight(x).Text, 1)) + _ + Mid(txtWeight(x).Text, 2) + strWork = txtWeight(x).Text + For y = 1 To Len(strWork) + If (Asc(UCase(Mid(strWork, y, 1))) < 65 Or Asc(UCase(Mid(strWork, y, 1))) > 90) And _ + Asc(UCase(Mid(strWork, y, 1))) <> 43 And _ + Asc(UCase(Mid(strWork, y, 1))) <> 95 Then + blnBad = True + If Not blnQuietMode Then + MsgBox LookupMessage(775), vbOKOnly + vbExclamation, LookupMessage(350) + Else + FormulaFinderCalculate = LookupMessage(775) + End If + + Exit Function + End If + Next y + + If Len(txtWeight(x).Text) = 0 Then + ' Too short + blnBad = True + If Not blnQuietMode Then + MsgBox LookupMessage(780), vbOKOnly + vbExclamation, LookupMessage(350) + Else + FormulaFinderCalculate = LookupMessage(780) + End If + + Else + Charge = 0 + dblPotentialElementStats(intNumPotentialElementCount, 0) = FinderMatchStats(x, strMatchSymbol, Charge) ' Returns weight of element/abbreviation, but also charge + dblPotentialElementStats(intNumPotentialElementCount, 1) = Charge + + If dblPotentialElementStats(intNumPotentialElementCount, 0) = -1 Then + ' Element or abbreviation not found + blnBad = True + If Not blnQuietMode Then + MsgBox LookupMessage(785) & ": " & strWork & " " & LookupMessage(790), vbOKOnly + vbExclamation, LookupMessage(350) + Else + FormulaFinderCalculate = LookupMessage(785) & ": " & strWork + End If + Else + ' No problems, store symbol + strPotentialElements(intNumPotentialElementCount) = strMatchSymbol + End If + End If + Else + ' Custom element, only weight given so charge is 0 + dblPotentialElementStats(intNumPotentialElementCount, 0) = CDblSafe(txtWeight(x)) + dblPotentialElementStats(intNumPotentialElementCount, 1) = 0 + strPotentialElements(intNumPotentialElementCount) = Left(LookupLanguageCaption(10420, "Custom"), 1) & Trim(Str(x - 3)) & "_" + End If + Else + dblPotentialElementStats(intNumPotentialElementCount, 0) = FinderMatchStats(x, strMatchSymbol, Charge) + dblPotentialElementStats(intNumPotentialElementCount, 1) = Charge + strPotentialElements(intNumPotentialElementCount) = strMatchSymbol + End If + dblTargetPercents(intNumPotentialElementCount, 0) = CDblSafe(txtPercent(x).Text) - tolerance ' Lower bound of target percentage + dblTargetPercents(intNumPotentialElementCount, 1) = CDblSafe(txtPercent(x).Text) + tolerance ' Upper bound of target percentage + intNumPotentialElementCount = intNumPotentialElementCount + 1 + End If + If blnBad Then Exit Function + Next x + + ' Change mouse pointer to hourglass with arrow, so user can still multitask + MousePointer = vbArrowHourglass + + ' Set the key-watch variable to one + gKeyPressAbortFormulaFinder = 1 + blnCalculating = True + cmdCalculate.Visible = False + cmdOK.Visible = False + cmdPrint.Visible = False + cmdDisplayIsotopicAbundance.Visible = False + + ' Make the percent completed box visible + lblPercentCompleted.Caption = LookupLanguageCaption(10120, "Searching") & " 0% " & LookupLanguageCaption(10130, "Completed") + lblPercentCompleted.Visible = True + + If frmFinderOptions.cboSearchType.ListIndex = 0 Then + ' Thorough search + + ' Reorder dblPotentialElementStats pointer array in order from heaviest to lightest element + ' Greatly speeds up the recursive routine + ' Bubble sort + For y = intNumPotentialElementCount - 1 To 1 Step -1 ' Sort from end to start + For x = 0 To y - 1 + If dblPotentialElementStats(x, 0) < dblPotentialElementStats(x + 1, 0) Then + ' Swap the element symbols + strSwap = strPotentialElements(x) + strPotentialElements(x) = strPotentialElements(x + 1) + strPotentialElements(x + 1) = strSwap + ' and their weights + dblSwapVal = dblPotentialElementStats(x, 0) + dblPotentialElementStats(x, 0) = dblPotentialElementStats(x + 1, 0) + dblPotentialElementStats(x + 1, 0) = dblSwapVal + ' and their charge + dblSwapVal = dblPotentialElementStats(x, 1) + dblPotentialElementStats(x, 1) = dblPotentialElementStats(x + 1, 1) + dblPotentialElementStats(x + 1, 1) = dblSwapVal + + If optType(1).value = True Then + ' and the dblTargetPercents array + dblSwapVal = dblTargetPercents(x, 0) + dblTargetPercents(x, 0) = dblTargetPercents(x + 1, 0) + dblTargetPercents(x + 1, 0) = dblSwapVal + + dblSwapVal = dblTargetPercents(x, 1) + dblTargetPercents(x, 1) = dblTargetPercents(x + 1, 1) + dblTargetPercents(x + 1, 1) = dblSwapVal + + End If + End If + Next x + Next y + + ' Initialize the status box + UpdateStatus intNumPotentialElementCount, 3, True, 0 + + If optType(0).value = True Then + If cChkBox(frmFinderOptions.chkFindTargetMtoZ) Then + ' Searching for target m/z rather than target mass + MultipleSearchMath intNumPotentialElementCount, intMultipleSearchMin, intMultipleSearchMax + + For x = intMultipleSearchMin To intMultipleSearchMax + ' Call the RecursiveMWfinder repeatedly, sending dblTargetWeight * x each time to search for target, target*2, target*3, etc. + RecursiveMWFinder strPotentialElements(), dblPotentialElementStats(), 0, intNumPotentialElementCount, intPotentialElementPointers(), 0, 0, dblTargetWeight * x, tolerance, 0, x + Next x + Else + RecursiveMWFinder strPotentialElements(), dblPotentialElementStats(), 0, intNumPotentialElementCount, intPotentialElementPointers(), 0, 0, dblTargetWeight, tolerance, 0, 0 + End If + Else + RecursivePCompFinder strPotentialElements(), dblPotentialElementStats(), 0, intNumPotentialElementCount, intPotentialElementPointers(), 0, 0, dblTargetPercents(), MaxFormulaWeight, 9 + End If + + Else + ' Bounded search + + If cChkBox(frmFinderOptions.chkFindTargetMtoZ) Then + ' Searching for target m/z rather than target mass + + MultipleSearchMath intNumPotentialElementCount, intMultipleSearchMin, intMultipleSearchMax + ' Send max and min charge for searching + + OldFormulaFinder strPotentialElements(), dblPotentialElementStats(), intNumPotentialElementCount, dblTargetWeight, tolerance, intMultipleSearchMin, intMultipleSearchMax, intRange(), MaxFormulaWeight, intMaxHits, dblTargetPercents() + Else + OldFormulaFinder strPotentialElements(), dblPotentialElementStats(), intNumPotentialElementCount, dblTargetWeight, tolerance, 1, 1, intRange(), MaxFormulaWeight, intMaxHits, dblTargetPercents() + End If + End If + + ' Show abort messages if necessary + If gKeyPressAbortFormulaFinder >= 2 Then + If gKeyPressAbortFormulaFinder = 2 Then MsgBox LookupLanguageCaption(10500, "A key was pressed.") & " " & _ + LookupLanguageCaption(10510, "Stopping calculations."), vbOKOnly + vbCritical, _ + LookupLanguageCaption(10455, "Abort") + If gKeyPressAbortFormulaFinder = 3 Then MsgBox LookupLanguageCaption(10505, "The mouse was clicked outside the results box.") & " " & _ + LookupLanguageCaption(10510, "Stopping calculations."), vbOKOnly + vbCritical, _ + LookupLanguageCaption(10455, "Abort") + gKeyPressAbortFormulaFinder = 1 + blnCalculationsAborted = True + ElseIf lstResults.ListCount >= intMaxHits Then + strMessage = LookupLanguageCaption(10515, "The maximum number of hits has been reached.") & " " & LookupLanguageCaption(10510, "Stopping calculations.") + If Not blnQuietMode Then + MsgBox strMessage, vbOKOnly + vbCritical, LookupLanguageCaption(10520, "Maximum Hits") + End If + End If + + ' Determine total number of results found + lngCount = Val(lstResults.ListCount) + + ' Sort results if necessary (lngCount from above is used for Sorting... line and after sorting) + If cChkBox(frmFinderOptions.chkSort) Then ' And gKeyPressAbortFormulaFinder < 2 Then + ' Sort results + lblPercentCompleted.Caption = LookupLanguageCaption(10115, "Sorting") & _ + Str(lngCount) & " " & _ + LookupLanguageCaption(10135, "compounds") + + ' Change view of lstresults box so first line is on top, avoids screen update problem when sorting + If lstResults.ListCount > 0 Then + lstResults.ListIndex = 0 + lstResults.ListIndex = -1 + End If + + ' Check for keypress and update the status box + DoEvents + + ReDim strCodeString(lstResults.ListCount + 1) + ReDim udtResultStats(lstResults.ListCount + 1) + ReDim intPointerArray(lstResults.ListCount + 1) + + ' Convert compounds in list to code + CompoundToCode dblTargetWeight, strCodeString(), udtResultStats(), intPointerArray() + + ' Sort the compounds + ShellSortResults strCodeString(), udtResultStats(), intPointerArray(), 0, lstResults.ListCount - 1 + + ReDim strCompoundList(lstResults.ListCount) ' Temporary storage for the results box + + ' First, copy all of the results to a temporary array (I know it eats up memory, but I have no choice) + For x = 0 To lstResults.ListCount - 1 + strCompoundList(x) = lstResults.List(x) + Next x + + ' Now, put them back into the lstResults.ListCount box in the correct order + ' Use intPointerArray() for this + For x = 0 To lstResults.ListCount - 1 + lstResults.List(x) = strCompoundList(intPointerArray(x)) + Next x + + If gKeyPressAbortFormulaFinder < 2 Then + lblPercentCompleted.Caption = "100% " & LookupLanguageCaption(10130, "Completed") + Else + lblPercentCompleted.Caption = LookupLanguageCaption(10140, "Sorting Interrupted") + End If + Else + ' Don't sort + If gKeyPressAbortFormulaFinder < 2 Then + lblPercentCompleted.Caption = "100% " & LookupLanguageCaption(10130, "Completed") + Else + lblPercentCompleted.Caption = LookupLanguageCaption(10145, "Calculations Interrupted") + End If + End If + + If optType(1).value = True Then + ' Matching percent compositions + ' Separate results into two lines per compound for better readability + + ' First, change view of lstresults box so first line is on top, avoids screen update problem when sorting + If lstResults.ListCount > 0 Then + lstResults.ListIndex = 0 + lstResults.ListIndex = -1 + End If + x = 0 + Do While x <= lstResults.ListCount - 1 + y = InStr(lstResults.List(x), " " & LookupLanguageCaption(10535, "has")) + If y > 0 Then + lstResults.AddItem Mid(lstResults.List(x), y), x + 1 + lstResults.List(x) = Left(lstResults.List(x), y - 1) + x = x + 1 + End If + x = x + 1 + Loop + End If + + ' Add line for total number of compounds found + strMessage = LookupLanguageCaption(10530, "Compounds found") & ": " & Str(lngCount) + lstResults.AddItem strMessage, 0 + + ' Set the ToolTipText for the listing + If lngCount > 0 And cChkBox(frmProgramPreferences.chkShowToolTips) Then + lstResults.ToolTipText = LookupToolTipLanguageCaption(10200, "Double click any line to expand it") + Else + lstResults.ToolTipText = "" + End If + + blnCalculating = False + + ' Copy results from lstResults to rtfResults + If gKeyPressAbortFormulaFinder < 2 Then + ConvertListToRTF + lstResults.Visible = False + rtfResults.Visible = True + End If + + If blnCalculationsAborted Then + lblPercentCompleted.Caption = LookupLanguageCaption(10145, "Calculations Interrupted") + End If + + + ' Make sure results fit + Form_Resize + +FinderResume: + + ' Reset gKeyPressAbortFormulaFinder + gKeyPressAbortFormulaFinder = 0 + + cmdCalculate.Visible = True + cmdOK.Visible = True + cmdPrint.Visible = True + cmdDisplayIsotopicAbundance.Visible = True + + ' Change mouse pointer to default + MousePointer = vbDefault + + Exit Function + +FinderErrorHandler: + ' Change mouse pointer to default + MousePointer = vbDefault + + If Err.Number = 7 Then + MsgBox LookupLanguageCaption(10540, "A memory error has occurred. The results list is probably full. Results so far are shown."), _ + vbOKOnly + vbExclamation, LookupLanguageCaption(10545, "Out of Memory") + Else + GeneralErrorHandler "frmFinder|cmdCalculate", Err.Number, Err.Description + End If + Resume FinderResume + +End Function + +Private Sub RecursiveMWFinder(strPotentialElements() As String, dblPotentialElementStats() As Double, intStartIndex As Integer, intNumPotentialElementCount As Integer, intPotentialElementPointers() As Integer, intPointerCount As Integer, dblPotentialMassTotal As Double, dblTargetMass As Double, dblMassTolerance As Double, sngPotentialChargeTotal As Single, intMultipleMtoZCharge As Integer) + ' Potentialelem contains the weights of all of the potential elements + ' intPotentialElementPointers contains pointers to the elements that have been added to the potential formula so far + ' potentialweight contains the weight of the potential formula + ' if intMultipleMtoZCharge = 0 then not performing a multiple m/z search + + Dim intNewPotentialElementPointers() As Integer + Dim intCurrentIndex As Integer, intPointer As Integer, dblNewMassTotal As Double + Dim sngChargeTotal As Single, intExtra As Integer + +On Error GoTo RecursiveMWFinderErrorHandler + + ReDim intNewPotentialElementPointers(intPointerCount + 1) + + If gKeyPressAbortFormulaFinder >= 2 Or lstResults.ListCount >= CIntSafe(txtHits.Text) Then + Exit Sub + End If + + For intCurrentIndex = intStartIndex To intNumPotentialElementCount - 1 ' intNumPotentialElementCount >= 1, if 1, means just dblPotentialElementStats(0, 0), etc. + dblNewMassTotal = dblPotentialMassTotal + dblPotentialElementStats(intCurrentIndex, 0) + sngChargeTotal = sngPotentialChargeTotal + dblPotentialElementStats(intCurrentIndex, 1) + If dblNewMassTotal <= dblTargetMass + dblMassTolerance Then + ' Below or within dblMassTolerance, add current element's pointer to pointer array + For intPointer = 0 To intPointerCount - 1 + intNewPotentialElementPointers(intPointer) = intPotentialElementPointers(intPointer) + Next intPointer + intNewPotentialElementPointers(intPointerCount) = intCurrentIndex ' Store current element's number at end of intNewPotentialElementPointers array +' ReportCompound "", strPotentialElements(), dblPotentialElementStats(), intNumPotentialElementCount, intNewPotentialElementPointers(), intPointerCount + 1, dblNewMassTotal, dblTargetMass, dblMassTolerance, sngChargeTotal, intMultipleMtoZCharge + + ' Update status + lngRecursiveFunctionCallCount = lngRecursiveFunctionCallCount + 1 + If lngRecursiveFunctionCallCount Mod 500 = 0 Then + DoEvents + If gKeyPressAbortFormulaFinder >= 2 Or lstResults.ListCount >= CIntSafe(txtHits.Text) Then + Exit Sub + End If + End If + If intPointerCount = 3 Then UpdateStatus intNumPotentialElementCount, intPointerCount + + If dblNewMassTotal >= dblTargetMass - dblMassTolerance Then + ' Within dblMassTolerance, so verify hydrogens and add to lstResults + RecursiveConstructAndVerifyCompound "", strPotentialElements(), dblPotentialElementStats(), intNumPotentialElementCount, intNewPotentialElementPointers(), intPointerCount + 1, dblNewMassTotal, dblTargetMass, dblMassTolerance, sngChargeTotal, intMultipleMtoZCharge + End If + + ' Haven't reached dblTargetMass - dblMassTolerance region, so call RecursiveFinder again + If intCurrentIndex = intNumPotentialElementCount - 1 Then + ' But first, if adding the lightest element (i.e. the last in the list), + ' add a bunch of it until the potential compound's weight is close to the target + intExtra = 0 + Do While dblNewMassTotal < _ + dblTargetMass - dblMassTolerance - dblPotentialElementStats(intCurrentIndex, 0) + intExtra = intExtra + 1 + dblNewMassTotal = dblNewMassTotal + dblPotentialElementStats(intCurrentIndex, 0) + sngChargeTotal = sngChargeTotal + dblPotentialElementStats(intCurrentIndex, 1) + Loop + If intExtra > 0 Then + ReDim Preserve intNewPotentialElementPointers(intPointerCount + 1 + intExtra) + For intPointer = intPointerCount + 1 To intPointerCount + intExtra + intNewPotentialElementPointers(intPointer) = intCurrentIndex + Next intPointer + intPointerCount = intPointerCount + intExtra + End If + End If + ' Now recursively call this sub + RecursiveMWFinder strPotentialElements(), dblPotentialElementStats(), intCurrentIndex, intNumPotentialElementCount, intNewPotentialElementPointers(), intPointerCount + 1, dblNewMassTotal, dblTargetMass, dblMassTolerance, sngChargeTotal, intMultipleMtoZCharge + End If + Next intCurrentIndex + + Exit Sub + +RecursiveMWFinderErrorHandler: + GeneralErrorHandler "frmFinder|RecursiveMWFinder", Err.Number, Err.Description + +End Sub + +Private Sub RecursivePCompFinder(strPotentialElements() As String, dblPotentialElementStats() As Double, intStartIndex As Integer, intNumPotentialElementCount As Integer, intPotentialElementPointers() As Integer, intPointerCount As Integer, dblPotentialMassTotal As Double, dblTargetPercents() As Double, dblMaxFormulaWeight As Double, sngPotentialChargeTotal As Single) + ' dblPotentialElementStats contains the weights of all of the potential elements + ' intPotentialElementPointers contains pointers to the elements that have been added to the potential formula so far + ' dblPotentialMassTotal contains the mass of the potential formula + + ' dblTargetPercents holds the lower and upper bounds of target percentages + + Dim intNewPotentialElementPointers() As Integer + Dim dblPotentialPercents() As Double + + Dim intElementCount(MAX_MATCHINGELEMENTS) As Integer + + Dim intCurrentIndex As Integer, intPointer As Integer, dblNewMassTotal As Double + Dim intPercentTrack As Integer + Dim intIndex As Integer, sngChargeTotal As Single + +On Error GoTo RecursivePCompFinderErrorHandler + + ReDim intNewPotentialElementPointers(intPointerCount + 1) + ReDim dblPotentialPercents(intNumPotentialElementCount) + + If gKeyPressAbortFormulaFinder >= 2 Or lstResults.ListCount >= CIntSafe(txtHits.Text) Then + Exit Sub + End If + + For intCurrentIndex = intStartIndex To intNumPotentialElementCount - 1 ' intNumPotentialElementCount >= 1, if 1, means just dblPotentialElementStats(0,0), etc. + dblNewMassTotal = dblPotentialMassTotal + dblPotentialElementStats(intCurrentIndex, 0) + sngChargeTotal = sngPotentialChargeTotal + dblPotentialElementStats(intCurrentIndex, 1) + + If dblNewMassTotal <= dblMaxFormulaWeight Then + ' only proceed if weight is less than max weight + + ' add current element's pointer to pointer array + For intPointer = 0 To intPointerCount - 1 + intNewPotentialElementPointers(intPointer) = intPotentialElementPointers(intPointer) + Next intPointer + intNewPotentialElementPointers(intPointerCount) = intCurrentIndex ' Store current element's number at end of intNewPotentialElementPointers array + + Erase intElementCount() + + ' Compute the number of each element + For intIndex = 0 To intPointerCount + ' For each pointer, increment intElementCount + intElementCount(intNewPotentialElementPointers(intIndex)) = intElementCount(intNewPotentialElementPointers(intIndex)) + 1 + Next intIndex + + For intIndex = 0 To intNumPotentialElementCount - 1 + If intElementCount(intIndex) = 0 Then Exit For + Next intIndex + + If intIndex = intNumPotentialElementCount Then + ' Only proceed if all elements are present + ' Compute % comp of each element + For intIndex = 0 To intNumPotentialElementCount - 1 + dblPotentialPercents(intIndex) = intElementCount(intIndex) * dblPotentialElementStats(intIndex, 0) / dblNewMassTotal * 100 + Next intIndex + 'If intPointerCount = 0 Then dblPotentialPercents(0) = 100 + + intPercentTrack = 0 + For intIndex = 0 To intNumPotentialElementCount - 1 + If dblPotentialPercents(intIndex) >= dblTargetPercents(intIndex, 0) And _ + dblPotentialPercents(intIndex) <= dblTargetPercents(intIndex, 1) Then + intPercentTrack = intPercentTrack + 1 + End If + Next intIndex + + If intPercentTrack = intNumPotentialElementCount Then + ' Matching compound, so add to list + RecursiveConstructAndVerifyCompound "", strPotentialElements(), dblPotentialElementStats(), intNumPotentialElementCount, intNewPotentialElementPointers(), intPointerCount + 1, dblNewMassTotal, 0, 0, sngChargeTotal, 0 + End If + + End If + + ' Update status + lngRecursiveFunctionCallCount = lngRecursiveFunctionCallCount + 1 + If lngRecursiveFunctionCallCount Mod 500 = 0 Then + DoEvents + If gKeyPressAbortFormulaFinder >= 2 Or lstResults.ListCount >= CIntSafe(txtHits.Text) Then + Exit Sub + End If + End If + If intPointerCount = 3 Then UpdateStatus intNumPotentialElementCount, intPointerCount + + ' Haven't reached dblMaxFormulaWeight + ' Now recursively call this sub + RecursivePCompFinder strPotentialElements(), dblPotentialElementStats(), intCurrentIndex, intNumPotentialElementCount, intNewPotentialElementPointers(), intPointerCount + 1, dblNewMassTotal, dblTargetPercents(), dblMaxFormulaWeight, sngChargeTotal + + End If + Next intCurrentIndex + + Exit Sub + +RecursivePCompFinderErrorHandler: + GeneralErrorHandler "frmFinder|RecursivePCompFinder", Err.Number, Err.Description + +End Sub + +Public Function GetMaxElementCount() As Integer + GetMaxElementCount = MAX_MATCHINGELEMENTS +End Function + +Public Sub LoadDynamicTextCaptions() + Dim intIndex As Integer, strCaption As String + + strCaption = LookupLanguageCaption(10260, "Percent") + For intIndex = 0 To txtPercent.Count - 1 + With txtPercent(intIndex) + ' If current value is not a number (including being a %), then + ' replace with correct text or symbol for new langugae + If Not IsNumeric(.Text) Then + .Text = strCaption + End If + End With + Next intIndex + + strCaption = LookupLanguageCaption(10270, "# or Element or Abbrev.") + For intIndex = 0 To txtWeight.Count - 1 + With txtWeight(intIndex + 4) + ' Look for custom weight starting with a #, or containing a space, + ' or starting with Ý (Russian abbreviation) + ' If found, replace with correct phrase for new language + If Left(.Text, 1) = "#" Or InStr(.Text, " ") > 0 Or .Text = "Ý" Then + .Text = strCaption + End If + End With + Next intIndex +End Sub + +Private Sub MultipleSearchMath(intNumPotentialElementCount As Integer, intMultipleSearchMin As Integer, intMultipleSearchMax As Integer) + + intMultipleSearchMin = CIntSafe(frmFinderOptions.txtChargeMin) + intMultipleSearchMax = CIntSafe(frmFinderOptions.txtChargeMax) + + intMultipleSearchMax = AbsMax(intMultipleSearchMin, intMultipleSearchMax) + intMultipleSearchMin = 1 + + If intMultipleSearchMax < intMultipleSearchMin Then intMultipleSearchMax = intMultipleSearchMin + + ' Initialize the status box + UpdateStatus intNumPotentialElementCount, 3, True, intMultipleSearchMax + +End Sub + +Private Function ParseNum(strWork As String, ByRef intNumLength As Integer, Optional blnAllowNegative As Boolean = False) As Double + ' Looks for a number and returns it if found + ' If an error is found, it returns a negative number for the error code and sets intNumLength = 0 + ' -1 = No number + ' -2 = (unused) + ' -3 = No number at all or (more likely) no number after decimal point + ' -4 = More than one decimal point + + Dim strWorking As String, strFoundNum As String, intIndex As Integer, intDecPtCount As Integer + + If mDecimalSeparator = "" Then + mDecimalSeparator = DetermineDecimalPoint() + End If + + ' Set intNumLength to -1 for now + ' If it doesn't get set to 0 (due to an error), it will get set to the + ' length of the matched number before exiting the sub + intNumLength = -1 + + If strWork = "" Then strWork = EMPTY_STRINGCHAR + If (Asc(Left(strWork, 1)) < 48 Or Asc(Left(strWork, 1)) > 57) And _ + Left(strWork, 1) <> mDecimalSeparator And _ + Not (Left(strWork, 1) = "-" And blnAllowNegative = True) Then + intNumLength = 0 ' No number found + ParseNum = -1 + Else + ' Start of string is a number or a decimal point, or (if allowed) a negative sign + For intIndex = 1 To Len(strWork) + strWorking = Mid(strWork, intIndex, 1) + If IsNumeric(strWorking) Or strWorking = mDecimalSeparator Or _ + (blnAllowNegative = True And strWorking = "-") Then + strFoundNum = strFoundNum & strWorking + Else + Exit For + End If + Next intIndex + + If Len(strFoundNum) = 0 Or strFoundNum = mDecimalSeparator Then + ' No number at all or (more likely) no number after decimal point + strFoundNum = -3 + intNumLength = 0 + Else + ' Check for more than one decimal point (. or ,) + intDecPtCount = 0 + For intIndex = 1 To Len(strFoundNum) + If Mid(strFoundNum, intIndex, 1) = mDecimalSeparator Then intDecPtCount = intDecPtCount + 1 + Next intIndex + If intDecPtCount > 1 Then + ' more than one intDecPtCount + strFoundNum = -4 + intNumLength = 0 + Else + ' All is fine + End If + End If + + If intNumLength < 0 Then intNumLength = Len(strFoundNum) + ParseNum = CDblSafe(strFoundNum) + End If + +End Function + + +Private Sub PositionFormControls() + Dim intIndex As Integer + + lstResults.Visible = True + rtfResults.Visible = False + + lblPercentMaxWeight.Visible = False + txtPercentMaxWeight.Visible = False + lblPercentTolerance.Visible = False + txtPercentTolerance.Visible = False + lblMin.Visible = False + lblMax.Visible = False + lblPercent.Visible = False + lblWeight.Visible = False + + For intIndex = 0 To 9 + txtMin(intIndex).Visible = False + txtMax(intIndex).Visible = False + chkElements(intIndex).Visible = True + txtPercent(intIndex).Visible = False + If intIndex >= 4 Then txtWeight(intIndex).Visible = False + Next intIndex + +End Sub + +Private Sub PositionLblWeight() + Dim intIndex As Integer + + ' Determine position of lblWeight + For intIndex = 4 To 9 + If cChkBox(chkElements(intIndex)) Then + ' Position lblWeight above this custom element + lblWeight.Top = chkElements(intIndex).Top - chkElements(intIndex).Height - 180 + Exit For + End If + Next intIndex + +End Sub + +Private Sub OldFormulaFinder(strPotentialElements() As String, dblPotentialElementStats() As Double, intNumPotentialElementCount As Integer, dblTargetWeight As Double, dblTolerance As Double, intMultipleSearchMin As Integer, intMultipleSearchMax As Integer, intRange() As Integer, dblMaxFormulaWeight As Double, intMaxHits As Integer, dblTargetPercents() As Double) + + ' Iteration variables + Dim j As Long, k As Long, l As Long, m As Long, N As Long, O As Long, P As Long, q As Long, r As Long, S As Long + + Dim dblTotalWeight As Double, sngTotalCharge As Single + Dim intSubTrack As Integer, intIndex As Integer + Dim blnHOK As Boolean + Dim dblMultipleSearchMaxWeight As Double, dblMatchWeight As Double + + Dim strConstruct As String, intCurrentCharge As Integer + + Dim Percent(MAX_MATCHINGELEMENTS) As Double ' The calculated percentages for the specific compound + +On Error GoTo OldFormulaFinderErrorHandler + + dblMultipleSearchMaxWeight = dblTargetWeight * intMultipleSearchMax + + ' Determine the valid compounds + For j = intRange(0, 0) To intRange(0, 1) + For k = intRange(1, 0) To intRange(1, 1) + For l = intRange(2, 0) To intRange(2, 1) + For m = intRange(3, 0) To intRange(3, 1) + For N = intRange(4, 0) To intRange(4, 1) + For O = intRange(5, 0) To intRange(5, 1) + For P = intRange(6, 0) To intRange(6, 1) + For q = intRange(7, 0) To intRange(7, 1) + For r = intRange(8, 0) To intRange(8, 1) + For S = intRange(9, 0) To intRange(9, 1) + + If k Mod 10 = 0 Then + DoEvents + End If + + dblTotalWeight = j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + m * dblPotentialElementStats(3, 0) + N * dblPotentialElementStats(4, 0) + O * dblPotentialElementStats(5, 0) + P * dblPotentialElementStats(6, 0) + q * dblPotentialElementStats(7, 0) + r * dblPotentialElementStats(8, 0) + S * dblPotentialElementStats(9, 0) + sngTotalCharge = j * dblPotentialElementStats(0, 1) + k * dblPotentialElementStats(1, 1) + l * dblPotentialElementStats(2, 1) + m * dblPotentialElementStats(3, 1) + N * dblPotentialElementStats(4, 1) + O * dblPotentialElementStats(5, 1) + P * dblPotentialElementStats(6, 1) + q * dblPotentialElementStats(7, 1) + r * dblPotentialElementStats(8, 1) + S * dblPotentialElementStats(9, 1) + + If optType(1).value = True Then + ' Matching Percent Compositions + If dblTotalWeight > 0 And dblTotalWeight <= dblMaxFormulaWeight Then + Percent(0) = j * dblPotentialElementStats(0, 0) / dblTotalWeight * 100 + Percent(1) = k * dblPotentialElementStats(1, 0) / dblTotalWeight * 100 + Percent(2) = l * dblPotentialElementStats(2, 0) / dblTotalWeight * 100 + Percent(3) = m * dblPotentialElementStats(3, 0) / dblTotalWeight * 100 + Percent(4) = N * dblPotentialElementStats(4, 0) / dblTotalWeight * 100 + Percent(5) = O * dblPotentialElementStats(5, 0) / dblTotalWeight * 100 + Percent(6) = P * dblPotentialElementStats(6, 0) / dblTotalWeight * 100 + Percent(7) = q * dblPotentialElementStats(7, 0) / dblTotalWeight * 100 + Percent(8) = r * dblPotentialElementStats(8, 0) / dblTotalWeight * 100 + Percent(9) = S * dblPotentialElementStats(9, 0) / dblTotalWeight * 100 + + intSubTrack = 0 + For intIndex = 0 To intNumPotentialElementCount - 1 + If Percent(intIndex) >= dblTargetPercents(intIndex, 0) And Percent(intIndex) <= dblTargetPercents(intIndex, 1) Then intSubTrack = intSubTrack + 1 + Next intIndex + If intSubTrack = intNumPotentialElementCount Then + ' All of the elements have percent compositions matching the target + + ' Call subroutine to construct formula and verify hydrogens + strConstruct = "" ' strConstruct is passed by reference + blnHOK = ConstructAndVerifyCompound(strConstruct, j, k, l, m, N, O, P, q, r, S, strPotentialElements(0), strPotentialElements(1), strPotentialElements(2), strPotentialElements(3), strPotentialElements(4), strPotentialElements(5), strPotentialElements(6), strPotentialElements(7), strPotentialElements(8), strPotentialElements(9), dblTotalWeight, dblTargetWeight, dblTolerance, sngTotalCharge, 0) + ' No need to set blnHOK to True when not verifying hydrogens since program does this in ConstructAndVerifyCompound function + + If strConstruct <> "" And blnHOK Then + ConstructResultsLine strConstruct, dblTotalWeight, -1, sngTotalCharge + + ' Add % Comp results to list + strConstruct = strConstruct & " " & LookupLanguageCaption(10535, "has") & " " + If j <> 0 Then strConstruct = strConstruct & strPotentialElements(0) & "=" & Format(Percent(0), "##.##") & "% " + If k <> 0 Then strConstruct = strConstruct & strPotentialElements(1) & "=" & Format(Percent(1), "##.##") & "% " + If l <> 0 Then strConstruct = strConstruct & strPotentialElements(2) & "=" & Format(Percent(2), "##.##") & "% " + If m <> 0 Then strConstruct = strConstruct & strPotentialElements(3) & "=" & Format(Percent(3), "##.##") & "% " + If N <> 0 Then strConstruct = strConstruct & strPotentialElements(4) & "=" & Format(Percent(4), "##.##") & "% " + If O <> 0 Then strConstruct = strConstruct & strPotentialElements(5) & "=" & Format(Percent(5), "##.##") & "% " + If P <> 0 Then strConstruct = strConstruct & strPotentialElements(6) & "=" & Format(Percent(6), "##.##") & "% " + If q <> 0 Then strConstruct = strConstruct & strPotentialElements(7) & "=" & Format(Percent(7), "##.##") & "% " + If r <> 0 Then strConstruct = strConstruct & strPotentialElements(8) & "=" & Format(Percent(8), "##.##") & "% " + If S <> 0 Then strConstruct = strConstruct & strPotentialElements(9) & "=" & Format(Percent(9), "##.##") & "% " + lstResults.AddItem strConstruct + End If + End If + End If + Else + ' Matching Molecular Weights + + If dblTotalWeight <= dblMultipleSearchMaxWeight + dblTolerance Then + For intCurrentCharge = intMultipleSearchMin To intMultipleSearchMax + dblMatchWeight = dblTargetWeight * intCurrentCharge + If dblTotalWeight <= dblMatchWeight + dblTolerance And _ + dblTotalWeight >= dblMatchWeight - dblTolerance Then + ' Within dblTolerance + ' Call subroutine to construct formula and verify hydrogens + strConstruct = "" ' strConstruct is passed by reference + blnHOK = ConstructAndVerifyCompound(strConstruct, j, k, l, m, N, O, P, q, r, S, strPotentialElements(0), strPotentialElements(1), strPotentialElements(2), strPotentialElements(3), strPotentialElements(4), strPotentialElements(5), strPotentialElements(6), strPotentialElements(7), strPotentialElements(8), strPotentialElements(9), dblTotalWeight, dblTargetWeight * intCurrentCharge, dblTolerance, sngTotalCharge, intCurrentCharge) + ' No need to set blnHOK = 1 when not verifying hydrogens since program does this in ConstructAndVerifyCompound function + + If strConstruct <> "" And blnHOK Then + ConstructResultsLine strConstruct, dblTotalWeight, dblTargetWeight, sngTotalCharge + + lstResults.AddItem strConstruct + End If + Exit For + End If + Next intCurrentCharge + Else + + ' Jump out of loop since weight is too high + ' Determine which variable is causing the weight to be too high + ' Incrementing "s" would definitely make the weight too high, so set it to its max (so it will zero and increment "r") + S = intRange(9, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + m * dblPotentialElementStats(3, 0) + N * dblPotentialElementStats(4, 0) + O * dblPotentialElementStats(5, 0) + P * dblPotentialElementStats(6, 0) + q * dblPotentialElementStats(7, 0) + (r + 1) * dblPotentialElementStats(8, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + ' Incrementing r would make the weight too high, so set it to its max (so it will zero and increment q) + r = intRange(8, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + m * dblPotentialElementStats(3, 0) + N * dblPotentialElementStats(4, 0) + O * dblPotentialElementStats(5, 0) + P * dblPotentialElementStats(6, 0) + (q + 1) * dblPotentialElementStats(7, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + q = intRange(7, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + m * dblPotentialElementStats(3, 0) + N * dblPotentialElementStats(4, 0) + O * dblPotentialElementStats(5, 0) + (P + 1) * dblPotentialElementStats(6, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + P = intRange(6, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + m * dblPotentialElementStats(3, 0) + N * dblPotentialElementStats(4, 0) + (O + 1) * dblPotentialElementStats(5, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + O = intRange(5, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + m * dblPotentialElementStats(3, 0) + (N + 1) * dblPotentialElementStats(4, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + N = intRange(4, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + l * dblPotentialElementStats(2, 0) + (m + 1) * dblPotentialElementStats(3, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + m = intRange(3, 1) + If (j * dblPotentialElementStats(0, 0) + k * dblPotentialElementStats(1, 0) + (l + 1) * dblPotentialElementStats(2, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + l = intRange(2, 1) + If (j * dblPotentialElementStats(0, 0) + (k + 1) * dblPotentialElementStats(1, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + k = intRange(1, 1) + If ((j + 1) * dblPotentialElementStats(0, 0)) > (dblTolerance + dblMultipleSearchMaxWeight) Then + j = intRange(0, 1) + End If + End If + End If + End If + End If + End If + End If + End If + End If + End If + End If + If lstResults.ListCount >= intMaxHits Or gKeyPressAbortFormulaFinder >= 2 Then + ' Set variables to their maximum so all the loops will end + j = intRange(0, 1) + k = intRange(1, 1) + l = intRange(2, 1) + m = intRange(3, 1) + N = intRange(4, 1) + O = intRange(5, 1) + P = intRange(6, 1) + q = intRange(7, 1) + r = intRange(8, 1) + S = intRange(9, 1) + End If + If gKeyPressAbortFormulaFinder >= 2 Then Exit Sub + Next S + Next r + Next q + Next P + Next O + Next N + Next m + Next l + Next k + If intRange(0, 1) <> 0 Then + If intMultipleSearchMin = 0 Then + lblPercentCompleted = LookupLanguageCaption(10120, "Searching") & " " & _ + Str(CIntSafeDbl(j / intRange(0, 1) * 100)) & _ + LookupLanguageCaption(10110, "% Completed") + Else + lblPercentCompleted = LookupLanguageCaption(10120, "Searching") & " " & _ + Str(CIntSafeDbl(j / (intRange(0, 1) * intMultipleSearchMax) * 100)) & _ + LookupLanguageCaption(10110, "% Completed") + End If + End If + + Next j + + Exit Sub + +OldFormulaFinderErrorHandler: + GeneralErrorHandler "frmFinder|OldFormulaFinder", Err.Number, Err.Description + +End Sub + +Private Sub RecursiveConstructAndVerifyCompound(strResults As String, strPotentialElements() As String, dblPotentialElementStats() As Double, intNumPotentialElementCount As Integer, intPotentialElementPointers() As Integer, intPointerCount As Integer, dblTotalMass As Double, dblTargetMass As Double, dblWeightTolerance As Double, ByVal sngTotalCharge As Single, intMultipleMtoZCharge As Integer) + ' common function to both molecular weight and percent composition matching + ' strResults is blank for molecular weight matching, but has the % compositions for %comp matching + ' if intMultipleMtoZCharge is 0 then searching for target weights, otherwise searching for target m/z's + + Dim intIndex As Integer, maxH%, y%, swapVal% + Dim blnHyrdrogenOK As Boolean, blnChargeOK As Boolean + + Dim intElementCount() As Integer + Dim strEmpiricalResult() As String + Dim intEmpiricalResultElementCount() As Integer + Dim strSwap As String + + ReDim intElementCount(intNumPotentialElementCount) ' Store the Number of each element + ReDim strEmpiricalResult(intNumPotentialElementCount) ' Store the elements and abbreviations of the found formula so that they can be properly sequenced according to empirical formula conventions + ReDim intEmpiricalResultElementCount(intNumPotentialElementCount) ' Store the Number of each element and abbreviation for empirical formula conversion + + ' Counters for elements of interest (hydrogen, carbon, silicon, nitrogen, phosphorus, chlorine, iodine, flourine, bromine, and other) + Dim udtElementNum As udtElementNumType + +On Error GoTo RecursiveConstructAndVerifyCompoundErrorHandler + + For intIndex = 0 To intPointerCount - 1 + ' For each pointer, increment intElementCount + intElementCount(intPotentialElementPointers(intIndex)) = intElementCount(intPotentialElementPointers(intIndex)) + 1 + Next intIndex + + If Not cChkBox(frmFinderOptions.chkSort) Then + ' Don't sort or convert to formatted empirical formula + For intIndex = 0 To intNumPotentialElementCount - 1 + ' Step through elements, if intElementCount > 0, then add to formula + If intElementCount(intIndex) <> 0 Then strResults = strResults & strPotentialElements(intIndex) + If intElementCount(intIndex) > 1 Then strResults = strResults & LTrim(CStr(intElementCount(intIndex))) + Next intIndex + Else + + ' Convert to empirical formula and sort + For intIndex = 0 To intNumPotentialElementCount - 1 + If intElementCount(intIndex) <> 0 Then strEmpiricalResult(intIndex) = strPotentialElements(intIndex) + If intElementCount(intIndex) >= 1 Then intEmpiricalResultElementCount(intIndex) = intElementCount(intIndex) + Next intIndex + + ' First find C + For intIndex = 0 To intNumPotentialElementCount - 1 + If strEmpiricalResult(intIndex) = "C" Then + strResults = strResults & strEmpiricalResult(intIndex) ' i.e. C + If intEmpiricalResultElementCount(intIndex) > 1 Then strResults = strResults & _ + LTrim(CStr(intEmpiricalResultElementCount(intIndex))) + ' blank this strEmpiricalResult so it doesn't get repeated + strEmpiricalResult(intIndex) = "" + Exit For + End If + Next intIndex + For intIndex = 0 To intNumPotentialElementCount - 1 + If strEmpiricalResult(intIndex) = "H" Then + strResults = strResults & strEmpiricalResult(intIndex) ' i.e. H + If intEmpiricalResultElementCount(intIndex) > 1 Then strResults = strResults & _ + LTrim(CStr(intEmpiricalResultElementCount(intIndex))) + ' blank this strEmpiricalResult so it doesn't get repeated + strEmpiricalResult(intIndex) = "" + Exit For + End If + Next intIndex + + ' Alphabatize the remaining elements/abbreviations via a simple bubble sort + For y = intNumPotentialElementCount - 1 To 1 Step -1 ' Sort from end to start + For intIndex = 0 To y - 1 + If strEmpiricalResult(intIndex) > strEmpiricalResult(intIndex + 1) Then + ' strSwap the elements/abbreviations + strSwap = strEmpiricalResult(intIndex) + strEmpiricalResult(intIndex) = strEmpiricalResult(intIndex + 1) + strEmpiricalResult(intIndex + 1) = strSwap + ' and their intEmpiricalResultElementCount values + swapVal = intEmpiricalResultElementCount(intIndex) + intEmpiricalResultElementCount(intIndex) = intEmpiricalResultElementCount(intIndex + 1) + intEmpiricalResultElementCount(intIndex + 1) = swapVal + End If + Next intIndex + Next y + + ' Now insert the alphabatized elements into the string + For intIndex = 0 To intNumPotentialElementCount - 1 + ' If C or H was found above, its strEmpiricalResult was made blank, so need the following + ' check to exclude C and H + If strEmpiricalResult(intIndex) <> "" Then + strResults = strResults & strEmpiricalResult(intIndex) + If intEmpiricalResultElementCount(intIndex) > 1 Then strResults = strResults & _ + LTrim(CStr(intEmpiricalResultElementCount(intIndex))) + End If + Next intIndex + + End If + + ' Verify hydrogens if requested + If cChkBox(frmFinderOptions.chkVerifyHydrogens) Or intMultipleMtoZCharge > 0 Then + + ' Determine Number of C, Si, N, P, O, S, Cl, I, F, Br and H atoms + For intIndex = 0 To intNumPotentialElementCount - 1 + Select Case strPotentialElements(intIndex) + Case "C": udtElementNum.C = udtElementNum.C + intElementCount(intIndex) + Case "Si": udtElementNum.Si = udtElementNum.Si + intElementCount(intIndex) + Case "N": udtElementNum.N = udtElementNum.N + intElementCount(intIndex) + Case "P": udtElementNum.P = udtElementNum.P + intElementCount(intIndex) + Case "O": udtElementNum.O = udtElementNum.O + intElementCount(intIndex) + Case "S": udtElementNum.S = udtElementNum.S + intElementCount(intIndex) + Case "Cl": udtElementNum.Cl = udtElementNum.Cl + intElementCount(intIndex) + Case "I": udtElementNum.I = udtElementNum.I + intElementCount(intIndex) + Case "F": udtElementNum.F = udtElementNum.F + intElementCount(intIndex) + Case "Br": udtElementNum.Br = udtElementNum.Br + intElementCount(intIndex) + Case "H": udtElementNum.H = udtElementNum.H + intElementCount(intIndex) + Case Else: udtElementNum.Other = udtElementNum.Other + intElementCount(intIndex) + End Select + Next intIndex + + ' Compute maximum Number of hydrogens + If udtElementNum.Si = 0 And udtElementNum.C = 0 And udtElementNum.N = 0 And _ + udtElementNum.P = 0 And udtElementNum.Other = 0 And (udtElementNum.O > 0 Or udtElementNum.S > 0) Then + ' Only O and S + maxH = 3 + Else + ' Formula is: [#C*2 + 3 - (2 if N or P present)] + [#N + 3 - (1 if C or Si present)] + [#other elements * 4 + 3], where we assume other elements can have a coordination Number of up to 7 + If udtElementNum.C > 0 Or udtElementNum.Si > 0 Then + maxH = maxH + (udtElementNum.C + udtElementNum.Si) * 2 + 3 +' If udtElementNum.N > 0 Or udtElementNum.P > 0 Then maxh = maxh - 2 + End If + If udtElementNum.N > 0 Or udtElementNum.P > 0 Then + maxH = maxH + (udtElementNum.N + udtElementNum.P) + 3 +' If udtElementNum.C > 0 Or udtElementNum.Si > 0 Then maxh = maxh - 1 + End If + ' Correction for carbon contribution + ' Combine the above two remarked if's into: + If (udtElementNum.N > 0 Or udtElementNum.P > 0) And (udtElementNum.C > 0 Or udtElementNum.Si > 0) Then maxH = maxH - 3 + + If udtElementNum.Other > 0 Then maxH = maxH + udtElementNum.Other * 4 + 3 + End If + + ' correct for if H only + If maxH < 3 Then maxH = 3 + + ' correct for halogens + maxH = maxH - udtElementNum.F - udtElementNum.Cl - udtElementNum.Br - udtElementNum.I + + ' correct for negative maxh + If maxH < 0 Then maxH = 0 + + ' Verify H's + If udtElementNum.H <= maxH Or Not cChkBox(frmFinderOptions.chkVerifyHydrogens) Then + blnHyrdrogenOK = True + Else + blnHyrdrogenOK = False + End If + Else + blnHyrdrogenOK = True + End If + + ' Only proceed if compound isn't blank and hydrogens check out + If strResults <> "" And blnHyrdrogenOK Then + + ' See if sngTotalCharge is within charge limits + sngTotalCharge = CorrectChargeEmpirical(sngTotalCharge, udtElementNum, blnChargeOK) + + ' If charge is within range and checking for multiples, see if correct m/z too + If blnChargeOK And intMultipleMtoZCharge > 0 Then + CheckMtoZWithTarget dblTotalMass, sngTotalCharge, dblTargetMass, dblWeightTolerance, intMultipleMtoZCharge, blnChargeOK + End If + + ' Only proceed if charge checks out + If blnChargeOK Then + If optType(0).value = True Then + ' Matching Molecular Weights + ConstructResultsLine strResults, dblTotalMass, dblTargetMass, sngTotalCharge + Else + ' Matching Percent Compositions + ConstructResultsLine strResults, dblTotalMass, -1, sngTotalCharge + + strResults = strResults & " " & LookupLanguageCaption(10535, "has") & " " + ' Add % info + For intIndex = 0 To intNumPotentialElementCount - 1 + If intElementCount(intIndex) <> 0 Then + strResults = strResults & strPotentialElements(intIndex) & "=" & _ + Format$(intElementCount(intIndex) * dblPotentialElementStats(intIndex, 0) / dblTotalMass * 100, "##.##") & "% " + End If + Next intIndex + + End If + lstResults.AddItem strResults + End If + End If + + Exit Sub + +RecursiveConstructAndVerifyCompoundErrorHandler: + GeneralErrorHandler "frmFinder|RecursiveConstructAndVerifyCompound", Err.Number, Err.Description + +End Sub + +Public Sub ResizeForm(Optional blnEnlargeToMinimums As Boolean = False) + Dim x%, lngPreferredWidth% + Dim lngMinHeight As Long + Dim lngTopPosAdjust As Long + + Dim lngEffectiveFormWidth As Long + Dim lngEffectiveFormHeight As Long + + lngMinHeight = 6725 + +On Error GoTo ResizeFormErrorHandler + + With frmFinder + If .WindowState <> vbMinimized Then + ' define minimum width + lngPreferredWidth = 1.75 * TextWidth(rtfResults.Text) + + If lngPreferredWidth < 9100 Then lngPreferredWidth = 9100 + If lngPreferredWidth > Screen.Width Then lngPreferredWidth = Screen.Width + + If .Width < lngPreferredWidth Then + If blnEnlargeToMinimums And .WindowState = vbNormal Then + .Width = lngPreferredWidth + End If + lngEffectiveFormWidth = lngPreferredWidth + Else + lngEffectiveFormWidth = .Width + End If + + If .Height < lngMinHeight Then + If blnEnlargeToMinimums And .WindowState = vbNormal Then + .Height = lngMinHeight + End If + lngEffectiveFormHeight = lngMinHeight + Else + lngEffectiveFormHeight = .Height + End If + End If + End With + + If frmFinder.WindowState <> vbMinimized Then + lngTopPosAdjust = lngEffectiveFormHeight - lngMinHeight + + lblInstruct.Top = 120 + lblInstruct.Left = 120 + + With lstResults + .Top = 1200 + .Left = 120 + .Height = 3400 + lngTopPosAdjust + + .Width = lngEffectiveFormWidth - 5400 + If frmFinderOptions.cboSearchType.ListIndex = 0 Then .Width = .Width + 1250 + + .Font = objMwtWin.RtfFontName + .FontSize = objMwtWin.RtfFontSize + End With + + With rtfResults + .Top = lstResults.Top + .Left = 120 + .Height = 3200 + lngTopPosAdjust + + .Width = lstResults.Width + .Font.Name = objMwtWin.RtfFontName + .Font.Size = objMwtWin.RtfFontSize + End With + + lblMWT.Top = 4625 + lngTopPosAdjust + lblMWT.Left = 120 + txtMWT.Top = lblMWT.Top + txtMWT.Left = 2900 + lblWtTolerance.Top = 5075 + lngTopPosAdjust + lblWtTolerance.Left = lblMWT.Left + txtWeightTolerance.Top = lblWtTolerance.Top + txtWeightTolerance.Left = txtMWT.Left + + lblPercentMaxWeight.Top = lblMWT.Top + lblPercentMaxWeight.Left = lblMWT.Left + txtPercentMaxWeight.Top = txtMWT.Top + txtPercentMaxWeight.Left = txtMWT.Left + lblPercentTolerance.Top = lblWtTolerance.Top + lblPercentTolerance.Left = lblWtTolerance.Left + txtPercentTolerance.Top = txtWeightTolerance.Top + txtPercentTolerance.Left = txtWeightTolerance.Left + txtPercentTolerance.Width = 735 + + chkPpmMode.Top = lblWtTolerance.Top + chkPpmMode.Left = 4200 + + chkShowDeltaMass.Top = chkPpmMode.Top + 255 + chkShowDeltaMass.Left = chkPpmMode.Left + + optType(0).Top = 5475 + lngTopPosAdjust + optType(1).Top = 5825 + lngTopPosAdjust + + cmdCalculate.Top = 5625 + lngTopPosAdjust + cmdAbort.Top = cmdCalculate.Top + cmdPrint.Top = cmdCalculate.Top + cmdCopy.Top = cmdCalculate.Top + cmdCopyAsRTF.Top = lblWtTolerance.Top - 50 + cmdDisplayIsotopicAbundance.Top = cmdCopyAsRTF.Top + cmdOK.Top = cmdCalculate.Top + + cmdCalculate.Left = lngEffectiveFormWidth - 5260 + cmdAbort.Left = cmdCalculate.Left + cmdPrint.Left = lngEffectiveFormWidth - 3940 + cmdCopy.Left = lngEffectiveFormWidth - 2620 + cmdCopyAsRTF.Left = cmdCopy.Left - (cmdCopyAsRTF.Width - cmdCopy.Width) / 2 + cmdOK.Left = lngEffectiveFormWidth - 1300 + cmdDisplayIsotopicAbundance.Left = cmdOK.Left - (cmdDisplayIsotopicAbundance.Width - cmdOK.Width) / 2 + + lblElement.Top = 720 + lblElement.Width = 1215 + lblElement.Left = lngEffectiveFormWidth - 3650 + lblPercentCompleted.Left = lngEffectiveFormWidth - 1350 + lblPercentCompleted.Top = 1500 + + ' Hidden Labels + lblMin.Top = lblElement.Top + lblMax.Top = lblElement.Top + lblPercent.Top = lblElement.Top + lblMin.Left = lngEffectiveFormWidth - 5150 + lblMax.Left = lngEffectiveFormWidth - 4450 + lblPercent.Left = lngEffectiveFormWidth - 2100 + lblPercent.Width = 615 + Call PositionLblWeight + lblWeight.Left = lblPercentCompleted.Left + 120 + lblWeight.Width = 855 + + For x = 0 To 9 + txtMin(x).Top = x * 360 + lstResults.Top + txtMin(x).Left = lblMin.Left + txtMax(x).Top = x * 360 + lstResults.Top + txtMax(x).Left = lblMax.Left + chkElements(x).Top = x * 360 + lstResults.Top + chkElements(x).Left = lngEffectiveFormWidth - 3800 + chkElements(x).Width = 1700 + txtPercent(x).Top = x * 360 + lstResults.Top + txtPercent(x).Left = lblPercent.Left + txtPercent(x).Width = 735 + Next x + + chkElements(0).Caption = LookupLanguageCaption(10400, "Carbon") + chkElements(1).Caption = LookupLanguageCaption(10405, "Hydrogen") + chkElements(2).Caption = LookupLanguageCaption(10410, "Nitrogen") + chkElements(3).Caption = LookupLanguageCaption(10415, "Oxygen") + For x = 4 To 9 + chkElements(x).Caption = LookupLanguageCaption(10420, "Custom") & Trim(Str(x - 3)) & "_" + Next x + + txtHits.Top = txtPercent(0).Top + txtHits.Left = lblPercentCompleted.Left + lblHits.Top = lblPercent.Top + lblHits.Left = lblPercentCompleted.Left + + cmdFinderOptions.Top = 50 + cmdFinderOptions.Left = lngEffectiveFormWidth - 1600 + + For x = 4 To 9 + txtWeight(x).Top = x * 360 + lstResults.Top + txtWeight(x).Left = lblPercentCompleted.Left + Next x + + End If + + Exit Sub + +ResizeFormErrorHandler: + Debug.Assert False + GeneralErrorHandler "frmFinder|ResizeForm", Err.Number, Err.Description + +End Sub + +Private Function ResultsToRtf(strWorkText As String) As String + Dim strWorkChar As String, strRTF As String + Dim x As Integer, y As Integer + Dim strChargeString As String + + ' Converts plain text to formatted rtf text. + ' Rtf string must begin with {{\fonttbl{\f0\fcharset0\fprq2 Times New Roman;}}\pard\plain\fs25 + ' and must end with } + + strRTF = "" + + For x = 1 To Len(strWorkText) + strWorkChar = Mid(strWorkText, x, 1) + If IsNumeric(strWorkChar) Or strWorkChar = glbDecimalSeparator Then + ' Number or period, so subscript it if it's not followed by an underscore (underscore is used for custom elements: C1_, C2_, etc.) + If Mid(strWorkText, x + 1, 1) = "_" Then + strRTF = strRTF & strWorkChar & "_" + x = x + 1 + Else + If x = 1 Then + ' at beginning of line, so leave it alone. Probably out of place + strRTF = strRTF & strWorkChar + Else + ' find entire number + y = 1 + Do While IsNumeric(Mid(strWorkText, x + y, 1)) + y = y + 1 + Loop + strRTF = strRTF & "{\sub " & Mid(strWorkText, x, y) & "}" + x = x + y - 1 + End If + End If + ElseIf strWorkChar = "^" Then + ' Found a caret, ignore it and superscript the number after it + ' Find entire number + y = 1 + Do While IsNumeric(Mid(strWorkText, x + y, 1)) Or Mid(strWorkText, x + y, 1) = "-" + y = y + 1 + Loop + strChargeString = ChargeValueToString(CDblSafe(Mid(strWorkText, x + 1, y - 1))) + + strRTF = strRTF & "{\super " & strChargeString & "}" + x = x + y + ElseIf strWorkChar = "+" Then + ' Found a plus sign, superscript it + strRTF = strRTF & "{\super +}" + ElseIf strWorkChar = "_" Then + ' Found an underscore following a letter, superscript it + strRTF = strRTF & "{\super _}" + Else + strRTF = strRTF & strWorkChar + End If + Next x + + ResultsToRtf = strRTF + +End Function + +Public Sub SetWeightMatchingMode(intMatchingMode As Integer) + + ' Match molecular weight has intMatchingMode = 0 + ' Match percent compositions has intMatchingMode = 1 + + Dim intIndex As Integer + + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + + If intMatchingMode = 0 Then + ' Match molecular weights + lblPercent.Visible = False + lblPercentTolerance.Visible = False + txtPercentTolerance.Visible = False + lblPercentMaxWeight.Visible = False + txtPercentMaxWeight.Visible = False + lblWtTolerance.Visible = True + txtWeightTolerance.Visible = True + txtMWT.Visible = True + txtMWT.Visible = True + chkPpmMode.Visible = True + Else + ' Match percent compositions + lblWtTolerance.Visible = False + txtWeightTolerance.Visible = False + txtMWT.Visible = False + txtMWT.Visible = False + chkPpmMode.Visible = False + lblPercentMaxWeight.Visible = True + txtPercentMaxWeight.Visible = True + lblPercentTolerance.Visible = True + txtPercentTolerance.Visible = True + End If + + For intIndex = 0 To 9 + If intMatchingMode = 0 Then + txtPercent(intIndex).Visible = False + Else + If cChkBox(chkElements(intIndex)) Then + txtPercent(intIndex).Visible = True + lblPercent.Visible = True + End If + End If + Next intIndex + + frmFinderOptions.UpdateCheckBoxes + +End Sub + +Private Sub ShellSortResults(strCodeString() As String, udtResultStats() As udtResultStatsType, intPointerArray() As Integer, intLowIndex As Integer, intHiIndex As Integer) + Dim eSortMode As smcFinderResultsSortModeConstants + + ' Variables common to both + Dim intSwapCode As Integer, blnSwapThem As Boolean + + ' Sort the list via a shell sort + Dim intMaxRow As Integer, intOffset As Integer, intLimit As Integer, intSwitch As Integer + Dim intRow As Integer + Dim intRemainder As Integer, intSortTrack As Integer, intSortTrackMax As Integer + + ' Do some math to help predict percent of sort completed over time + intSortTrackMax = 0 + intRemainder = intHiIndex + 1 + intRemainder = intRemainder \ 2 + Do While intRemainder > 0 + intSortTrackMax = intSortTrackMax + 1 + intRemainder = intRemainder \ 2 + Loop + + eSortMode = frmFinderOptions.LookupResultsSortModeTypeByIndex(frmFinderOptions.cboSortResults.ListIndex) + + ' Set comparison intOffset to half the number of records + intMaxRow = intHiIndex + 1 ' Add 1 since list goes from 0 to intHiIndex rather than 1 to intHiIndex + 1 + intOffset = intMaxRow \ 2 + + Do While intOffset > 0 ' Loop until intOffset gets to zero. + ' Check for KeyPress and keep lstResults box updated (which indicates sort progessing) + DoEvents + + If gKeyPressAbortFormulaFinder >= 2 Then + ' A key was pressed, so stop sorting + If gKeyPressAbortFormulaFinder = 2 Then MsgBox LookupLanguageCaption(10450, "A key was pressed.") & " " & LookupLanguageCaption(10470, "Stopping sort."), _ + vbOKOnly + vbCritical, LookupLanguageCaption(10455, "Abort") + If gKeyPressAbortFormulaFinder = 3 Then MsgBox LookupLanguageCaption(10460, "The mouse was clicked outside the results box.") & " " & LookupLanguageCaption(10470, "Stopping sort."), _ + vbOKOnly + vbCritical, LookupLanguageCaption(10455, "Abort") + gKeyPressAbortFormulaFinder = 4 + Exit Do + End If + + intLimit = intMaxRow - intOffset + Do + intSwitch = 0 ' Assume no switches at this intOffset. + + ' Compare elements and intSwitch ones out of order: + For intRow = intLowIndex To intLimit - 1 + blnSwapThem = False + If eSortMode = smcSortByFormula Then + ' Sort by Formula + If strCodeString(intPointerArray(intRow)) > _ + strCodeString(intPointerArray(intRow + intOffset)) Then blnSwapThem = True + Else + ' Sort numerically + If eSortMode = smcSortByMWT Then + If udtResultStats(intPointerArray(intRow)).Mass > udtResultStats(intPointerArray(intRow + intOffset)).Mass Then + blnSwapThem = True + End If + ElseIf eSortMode = smcSortByDeltaMass Then + If udtResultStats(intPointerArray(intRow)).DeltaMass > udtResultStats(intPointerArray(intRow + intOffset)).DeltaMass Then + blnSwapThem = True + End If + ElseIf eSortMode = smcSortByCharge Then + If udtResultStats(intPointerArray(intRow)).Charge > udtResultStats(intPointerArray(intRow + intOffset)).Charge Then + blnSwapThem = True + End If + Else + ' Assume eSortMode = smcSortByMZ + If udtResultStats(intPointerArray(intRow)).MZ > udtResultStats(intPointerArray(intRow + intOffset)).MZ Then + blnSwapThem = True + End If + End If + End If + + If blnSwapThem = True Then + ' If the Low item should follow the High item, then swap them + ' Swap the two elements + intSwapCode = intPointerArray(intRow) + intPointerArray(intRow) = intPointerArray(intRow + intOffset) + intPointerArray(intRow + intOffset) = intSwapCode + intSwitch = intRow + End If + + Next intRow + + ' Sort on next pass only to where last intSwitch was made: + intLimit = intSwitch - intOffset + Loop While intSwitch + + ' No switches at last intOffset, try one half as big: + intOffset = intOffset \ 2 + + intSortTrack = intSortTrack + 1 + If intSortTrack > 1 And intSortTrackMax <> 0 Then + lblPercentCompleted.Caption = LookupLanguageCaption(10115, "Sorting") & " " & _ + Str(Format(intSortTrack / intSortTrackMax * 100, "##")) & _ + LookupLanguageCaption(10110, "% Completed") + + ' Change view of lstresults box so first line is on top, avoids screen update problem when sorting + If lstResults.ListCount > 0 Then + lstResults.ListIndex = 0 + lstResults.ListIndex = -1 + End If + End If + Loop + +End Sub + +Private Sub UpdateMinMax(Optional intUpdateLine As Integer = -1) + Dim intIndex As Integer, intIndexStart As Integer, intIndexEnd As Integer, intMultiplier As Integer + Dim dblElementMass As Double + + If cChkBox(frmFinderOptions.chkAutoSetBounds) Then + ' Only update Min and Max if user wishes. + If intUpdateLine = -1 Then + intIndexStart = 0 + intIndexEnd = 9 + Else + intIndexStart = intUpdateLine + intIndexEnd = intUpdateLine + End If + + If CDblSafe(txtMWT.Text) > 0 Then + For intIndex = intIndexStart To intIndexEnd + + ' Find the mass for each element + ' Set the maximum search value for each element to a reasonable value, + ' based on it's mass, the search mass, and the search tolerance + ' For example, if the search mass is 200 and the tolerance is 0.5, + ' then for Nitrogen (mass=14), the max atom count is set to 15 since + ' 15 * 14= 210 (a little more than 200) + If intIndex = 1 And cChkBox(frmFinderOptions.chkVerifyHydrogens) Then + dblElementMass = FinderMatchStats(1) * 2 + Else + dblElementMass = FinderMatchStats(intIndex) + End If + If dblElementMass <= 0 Then + txtMax(intIndex).Text = "20" + Else + If optType(0).value = True Then + If Not cChkBox(frmFinderOptions.chkFindTargetMtoZ) Then + txtMax(intIndex).Text = Trim(Str(CIntSafeDbl((CIntSafe(txtMWT.Text) + _ + CIntSafe(txtWeightTolerance.Text)) / dblElementMass) + 1)) + Else + intMultiplier = AbsMax(CIntSafe(frmFinderOptions.txtChargeMin), CIntSafe(frmFinderOptions.txtChargeMax)) + txtMax(intIndex).Text = Trim(Str(CIntSafeDbl((CDblSafe(txtMWT.Text) + CIntSafeDbl(txtWeightTolerance.Text)) / dblElementMass) * intMultiplier + 1)) + End If + ElseIf frmFinderOptions.cboSearchType.ListIndex = 0 Then + txtMax(intIndex).Text = Trim(Str(CIntSafeDbl((CDblSafe(txtPercentMaxWeight.Text) + _ + CIntSafeDbl(txtWeightTolerance.Text)) / dblElementMass) + 1)) + Else + ' leave txtMax(intIndex).text unchanged + End If + End If + Next intIndex + End If + End If + +End Sub + +Private Sub UpdateStatus(intNumPotentialElementCount As Integer, intNumPointers As Integer, Optional blnInitialize As Boolean = False, Optional intMultipleSearchMax As Integer = 0) + Static lngRecursiveCount As Long, strSpinStatus As String + Static lngMaxRecursiveCount As Long + + If blnInitialize = True Then + lngRecursiveCount = 0 + lngRecursiveFunctionCallCount = 0 + ' Calculate lngMaxRecursiveCount based on a combination function + lngMaxRecursiveCount = Combinatorial(intNumPointers + intNumPotentialElementCount, intNumPotentialElementCount - 1) - Combinatorial(intNumPotentialElementCount + intNumPointers - 2, intNumPointers - 1) + If intMultipleSearchMax > 0 Then + ' Correct lngMaxRecursiveCount for searching for m/z values + lngMaxRecursiveCount = lngMaxRecursiveCount * intMultipleSearchMax + End If + If intNumPotentialElementCount = 1 Then lngMaxRecursiveCount = 1 + Else + lngRecursiveCount = lngRecursiveCount + 1 + End If + + If lngRecursiveCount <= lngMaxRecursiveCount Then + lblPercentCompleted = LookupLanguageCaption(10120, "Searching") & " " & _ + Format$(CIntSafeDbl(lngRecursiveCount / lngMaxRecursiveCount * 100), "##0") & _ + LookupLanguageCaption(10110, "% Completed") + Else + Select Case Right(lblPercentCompleted.Caption, 2) + Case "--": strSpinStatus = "\ " + Case "\ ": strSpinStatus = "| " + Case "|": strSpinStatus = "/ " + Case "/ ": strSpinStatus = "--" + Case Else: strSpinStatus = "--" + End Select + lblPercentCompleted = LookupLanguageCaption(10125, "Working") & " " & strSpinStatus + End If + +End Sub + +Private Sub chkElements_Click(Index As Integer) + Dim boolSetValue As Boolean, intIndex As Integer + + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + + boolSetValue = cChkBox(chkElements(Index)) + + ' If doing bounded search, show/hide min/max boxes + If frmFinderOptions.cboSearchType.ListIndex = 1 Then + ' Bounded search, so show/hide bounds boxes + txtMin(Index).Visible = boolSetValue + txtMax(Index).Visible = boolSetValue + If boolSetValue = True Then + lblMin.Visible = True + lblMax.Visible = True + End If + End If + + ' No matter what, show/hide percent boxes if matching percents + If optType(1).value = True Then + txtPercent(Index).Visible = boolSetValue + If boolSetValue = True Then + lblPercent.Visible = True + End If + End If + + ' No matter what, for custom elements, show/hide weight box + If Index >= 4 Then + ' Custom elements boxes + ' Display Atomic Wt. if box is checked + txtWeight(Index).Visible = boolSetValue + If boolSetValue = True Then lblWeight.Visible = True + End If + + ' If hydrogen is present, then show verify hydrogens box + If Index = 1 Then frmFinderOptions.chkVerifyHydrogens.Enabled = boolSetValue + + ' See if Min, Max, and Percent labels need to be removed + If boolSetValue = False Then + For intIndex = 0 To 9 + If cChkBox(chkElements(intIndex)) Then Exit For + Next intIndex + If intIndex = 10 Then + lblMin.Visible = False + lblMax.Visible = False + lblPercent.Visible = False + lblWeight.Visible = False + cmdCalculate.Enabled = False + Else + ' See if Custom Weight label needs to be removed + For intIndex = 4 To 9 + If cChkBox(chkElements(intIndex)) Then Exit For + Next intIndex + If intIndex = 10 Then lblWeight.Visible = False + End If + Else + cmdCalculate.Enabled = True + End If + + ' Determine position of lblWeight + Call PositionLblWeight + + UpdateMinMax Index + +End Sub + +Private Sub chkPpmMode_Click() + Dim temp As Double, ppm As Double + + If chkPpmMode.value = 0 Then + ' now turning false, convert weight tolerance to regular + ppm = CDblSafe(txtWeightTolerance.Text) + If CDblSafe(txtMWT.Text) = 0 Then + temp = 0.5 + Else + temp = Abs(CDblSafe(txtMWT.Text) * ppm / 1000000#) + End If + txtWeightTolerance.Text = CStr(temp) + Else + ' now turning true, convert weight tolerance to ppm + temp = CDblSafe(txtWeightTolerance.Text) + ' Original formula was ppm = Abs((1 - (Val(txtMWT.Text) + temp) / Val(txtMWT.Text)) * 1000000#) + ' Simplified using Derive to get: + If Val(txtMWT.Text) = 0 Then + ppm = 100 + Else + ppm = Abs(1000000# * temp / CDblSafe(txtMWT.Text)) + End If + txtWeightTolerance.Text = CStr(ppm) + End If + +End Sub + +Private Sub cmdAbort_Click() + gKeyPressAbortFormulaFinder = 3 +End Sub + +Private Sub cmdCalculate_Click() + FormulaFinderCalculate +End Sub + +Private Sub cmdCalculate_KeyDown(KeyCode As Integer, Shift As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + If KeyCode >= 32 Then + gKeyPressAbortFormulaFinder = 2 + KeyCode = 0 + Shift = 0 + End If + End If + +End Sub + +Private Sub cmdCopy_Click() + Dim x%, copytext$ + + If lstResults.ListCount = 0 Then + MsgBox LookupLanguageCaption(10550, "The results box is empty."), vbOKOnly, _ + LookupLanguageCaption(10555, "Nothing to Copy") + Else + Clipboard.Clear + copytext$ = "" + For x = 0 To lstResults.ListCount - 1 + ' MW not found, copy line to clipboard without any tabs + copytext$ = copytext$ & vbCrLf & lstResults.List(x) + Next x + Clipboard.SetText copytext$, vbCFText + End If + +End Sub + +Private Sub cmdCopyAsRTF_Click() + If lstResults.ListCount = 0 Then + MsgBox LookupLanguageCaption(10550, "The results box is empty."), vbOKOnly, _ + LookupLanguageCaption(10555, "Nothing to Copy") + Else + Clipboard.Clear + + Clipboard.SetText RemoveRTFHeightAdjust(rtfResults.TextRTF), vbCFRTF + End If + +End Sub + +Private Sub cmdDisplayIsotopicAbundance_Click() + DisplayIsoAbundanceForCurrent +End Sub + +Private Sub cmdFinderOptions_Click() + + frmFinderOptions.Show + +End Sub + +Private Sub cmdOK_Click() + HideFormShowMain Me +End Sub + +Private Sub cmdPrint_Click() + Dim x%, eResponse As VbMsgBoxResult + + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + Exit Sub + End If + + If lstResults.ListCount = 0 Then + MsgBox LookupLanguageCaption(10550, "The results box is empty."), vbOKOnly, _ + LookupLanguageCaption(10560, "Nothing to Print") + Else + ' Print the results + eResponse = YesNoBox(LookupLanguageCaption(10565, "Are you sure you want to print the current result(s)?"), LookupLanguageCaption(10570, "Printing")) + If eResponse = vbYes Then + For x = 0 To lstResults.ListCount - 1 + Printer.Print lstResults.List(x) + Next x + Printer.EndDoc + End If + End If + +End Sub + +Private Sub Form_Activate() + + lstResults.FontName = objMwtWin.RtfFontName + lstResults.FontSize = objMwtWin.RtfFontSize + gKeyPressAbortFormulaFinder = 0 + + PossiblyHideMainWindow + + ' Display correct weight mode phrase + Select Case objMwtWin.GetElementMode + Case 3: lblWeightMode.Caption = LookupLanguageCaption(3840, "(using integer isotopic weights)") + Case 2: lblWeightMode.Caption = LookupLanguageCaption(3830, "(using isotopic elemental weights)") + Case Else: lblWeightMode.Caption = LookupLanguageCaption(3820, "(using average atomic weights)") + End Select + + LoadDynamicTextCaptions +End Sub + +Private Sub Form_Click() + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If +End Sub + +Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + If KeyCode >= 32 Then + gKeyPressAbortFormulaFinder = 2 + KeyCode = 0 + Shift = 0 + End If + Else + If KeyCode = vbKeyEscape Then cmdOK_Click + End If +End Sub + +Private Sub Form_KeyPress(KeyAscii As Integer) + If KeyAscii = 15 Then + ' User pressed CTRL-O (finder options) + cmdFinderOptions_Click + End If + +End Sub + +Private Sub Form_Load() + PositionFormControls + + ' Put window in center of screen + SizeAndCenterWindow Me, cWindowTopCenter, 9100, 6300 + + mnuRightClick.Visible = False + + ResizeForm True + + optType_Click 0 + +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + + QueryUnloadFormHandler Me, Cancel, UnloadMode +End Sub + +Private Sub Form_Resize() + ResizeForm +End Sub + +Private Sub lblElement_Click() + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If +End Sub + +Private Sub lstResults_DblClick() + ZoomLine lstResults.List(lstResults.ListIndex) +End Sub + +Private Sub lstResults_KeyPress(KeyAscii As Integer) + Select Case KeyAscii + Case vbKeyReturn + lstResults_DblClick + Case Else + KeyAscii = 0 + End Select + +End Sub + +Private Sub mnuRightClickCopy_Click() + CopyRoutinePrivate +End Sub + +Private Sub mnuRightClickCut_Click() + ' Can't cut from rtfResults, but will copy to the clipboard anyway + CopyRoutinePrivate +End Sub + +Private Sub mnuRightClickDelete_Click() + ' Not used in frmFinder +End Sub + +Private Sub mnuRightClickPaste_Click() + ' Not used in frmFinder +End Sub + +Private Sub mnuRightClickSelectAll_Click() + rtfResults.SelStart = 0 + rtfResults.SelLength = Len(rtfResults.Text) +End Sub + +Private Sub mnuRightClickUndo_Click() + ' Not used in frmFinder +End Sub + +Private Sub optType_Click(Index As Integer) + SetWeightMatchingMode Index +End Sub + +Private Sub rtfResults_KeyDown(KeyCode As Integer, Shift As Integer) + + Select Case KeyCode + Case vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight + ' Arrow keys are OK + Case vbKeyPageUp, vbKeyPageDown, vbKeyHome, vbKeyEnd + ' ok + Case 16, 17, 18, vbKeyEscape, vbKeyF1 + ' Shift, Ctrl, Alt, Escape, & F1 keys + Case Else + If Shift And vbCtrlMask Then ' And them in case alt or shift was also accidentally pressed + If KeyCode = vbKeyC Then + ' Allow Ctrl+C (copy), but not cut or paste + ElseIf KeyCode = vbKeyA Then + ' Allow Ctrl+A (Select All) + ElseIf KeyCode = vbKeyD Then + DisplayIsoAbundanceForCurrent True + KeyCode = 0 + Shift = 0 + Else + KeyCode = 0 + Shift = 0 + End If + Else + If Shift = vbAltMask Then + ' Pressed Alt + some key; let it pass + If KeyCode = vbKeyD Or KeyCode = vbKeyD + 32 Then + DisplayIsoAbundanceForCurrent True + KeyCode = 0 + Shift = 0 + End If + Else + KeyCode = 0 + Shift = 0 + End If + End If + End Select + +End Sub + +Private Sub rtfResults_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) + If Button = vbRightButton Then + ShowPopupRightClickMenu Me, rtfResults, False, False + End If +End Sub + +Private Sub txtHits_Click() + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub + +Private Sub txtHits_GotFocus() + HighlightOnFocus txtHits + +End Sub + +Private Sub txtHits_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtHits, KeyAscii, True + +End Sub + +Private Sub txtMax_Click(Index As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub + +Private Sub txtMax_GotFocus(Index As Integer) + HighlightOnFocus txtMax(Index) + +End Sub + +Private Sub txtMax_KeyPress(Index As Integer, KeyAscii As Integer) + TextBoxKeyPressHandler txtMax(Index), KeyAscii, True + +End Sub + +Private Sub txtMin_Click(Index As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub + +Private Sub txtMin_GotFocus(Index As Integer) + HighlightOnFocus txtMin(Index) + +End Sub + +Private Sub txtMin_KeyPress(Index As Integer, KeyAscii As Integer) + TextBoxKeyPressHandler txtMin(Index), KeyAscii, True + +End Sub + +Private Sub txtMWT_Change() + UpdateMinMax +End Sub + +Private Sub txtMWT_Click() + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If +End Sub + +Private Sub txtMWT_GotFocus() + HighlightOnFocus txtMWT +End Sub + +Private Sub txtMWT_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtMWT, KeyAscii, True, True + +End Sub + +Private Sub txtPercent_Click(Index As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub + +Private Sub txtPercent_GotFocus(Index As Integer) + HighlightOnFocus txtPercent(Index) + +End Sub + +Private Sub txtPercent_KeyPress(Index As Integer, KeyAscii As Integer) + TextBoxKeyPressHandler txtPercent(Index), KeyAscii, True, True + +End Sub + +Private Sub txtPercentMaxWeight_GotFocus() + HighlightOnFocus txtPercentMaxWeight + +End Sub + +Private Sub txtPercentMaxWeight_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtPercentMaxWeight, KeyAscii, True, True + +End Sub + +Private Sub txtPercentTolerance_Click() + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub + +Private Sub txtPercentTolerance_GotFocus() + HighlightOnFocus txtPercentTolerance + +End Sub + +Private Sub txtPercentTolerance_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtPercentTolerance, KeyAscii, True, True + +End Sub + +Private Sub txtWeight_Click(Index As Integer) + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub +Private Sub txtWeight_GotFocus(Index As Integer) + HighlightOnFocus txtWeight(Index) + +End Sub + +Private Sub txtWeight_KeyPress(Index As Integer, KeyAscii As Integer) + TextBoxKeyPressHandler txtWeight(Index), KeyAscii, True, True, False, True, True, True + +End Sub + +Private Sub txtWeightTolerance_Click() + If gKeyPressAbortFormulaFinder = 1 Then + gKeyPressAbortFormulaFinder = 3 + End If + +End Sub + +Private Sub txtWeightTolerance_GotFocus() + HighlightOnFocus txtWeightTolerance + +End Sub + +Private Sub txtWeightTolerance_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtWeightTolerance, KeyAscii, True, True + +End Sub + diff --git a/FINDER.frx b/FINDER.frx new file mode 100644 index 0000000000000000000000000000000000000000..dcf76e49632f22c7026bd73f30dc9aed578e467b GIT binary patch literal 2551 zcmeHJv5wO~5M3u1A3{Q+qMnlCbV_ni(eMK_q;<2{>tu!FwY+O0bUKOReg%oIpv-TX zH@i-voNVg~3M4YljK}ldo7s%yDEk*e6i$fWxC;^CB5FAmzfgID`&&4{Kf)v7X~_ER z@lgnTMBBD-A@=*d;BM{fe*UF;*}!E3|HlTRXfkFZnnoiw5z!T3tm>)r_Ru@%r!(Bo zd!(xTXFi3U^n)iDp6|~yJU^U=@&5VYJO}+hJzwxH2aNYGc$cs^jze;aGyeWZ z{8T?=jI-WLujA`b_fH6M-08XR!H*diI(@)c#?IEUpXfcr=z(;m_qrqGpL+G(H15;s zk7HTH?L7st(}!|T4EllHa@p^11aPeuP)^dE~#u;+gob;SIUC zPimJh5?Na9Lt3pD%lFG9Q+Yn;Sjcj{nBU#qC%Gw|`%)m8C%N5eYw6R9R*=$4)jI$1 z@bKzo@=dGVS6ycBk|tdwm8`SCU(N}WJ}cW4&VmPo!2gLetW=>=N3yDFQ`K5JMW}35 z=`5L=WR}r))6`^ko?lO=)k)ZB$7%%t&Ry hB1~|GavU>on=-TDNk?1h(hW<i`v(V2jaC2v literal 0 HcmV?d00001 diff --git a/FileIOFunctions.bas b/FileIOFunctions.bas new file mode 100644 index 0000000..d37a549 --- /dev/null +++ b/FileIOFunctions.bas @@ -0,0 +1,2489 @@ +Attribute VB_Name = "FileIOFunctions" +Option Explicit + +Private Const LANG_FILE_ERROR_STATEMENT_ID_OFFSET = 20000 +Private Const LANG_FILE_CAUTION_STATEMENT_ID_OFFSET = 22000 + +Private Const CAP_FLOW_FILE_VERSIONTWO = 2 + +Private Function BackupFile(strFilePath As String) As String + ' Creates a backup of the file given by strFilePath by copying the file + ' to a new file, wherein the file's extension has been replaced with .Bak + ' Returns the path of the backup file if success; otherwise, returns "" + + Dim strBackupPath As String + +On Error GoTo BackupFileErrorHandler + + If gBlnWriteFilesOnDrive Then + If FileExists(strFilePath) Then + strBackupPath = FileExtensionForce(strFilePath, "bak", True) + + FileCopy strFilePath, strBackupPath + BackupFile = strFilePath + Else + BackupFile = "" + End If + Else + BackupFile = "" + End If + + Exit Function + +BackupFileErrorHandler: + Debug.Assert False + BackupFile = "" + +End Function + +Public Function BuildPath(strParentDirectory As String, strFileName As String) As String + Dim fso As New FileSystemObject + + BuildPath = fso.BuildPath(strParentDirectory, strFileName) + + Set fso = Nothing + +End Function + +Private Function CheckBoxToIntegerString(chkThisCheckBox As CheckBox) As String + CheckBoxToIntegerString = Trim(Str(Val(chkThisCheckBox.value))) +End Function + +Public Function ConstructFileDialogFilterMask(strFileTypeDescription As String, strFileExtension As String) As String + ' Returns a properly formatted mask string for the Open or Save common dialog + ' For example: "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" + Dim strMask As String, strAllFiles As String + + strAllFiles = LookupMessage(1500) + strMask = strFileTypeDescription & " (*." & strFileExtension & ")|*." & strFileExtension & "|" & strAllFiles & " (*.*)|*.*" + ConstructFileDialogFilterMask = strMask + +End Function + +Public Function IsComment(ByVal strTestString As String) As Boolean + ' Returns True if strTestString starts with ; or ' + + strTestString = Trim(strTestString) + If Left(strTestString, 1) = COMMENT_CHAR Or Left(strTestString, 1) = "'" Then + IsComment = True + Else + IsComment = False + End If +End Function + +Public Sub LoadAbbreviations(blnResetToDefaultAbbreviations As Boolean) + ' blnResetToDefaultAbbreviations = False will load abbreviations from disk + ' blnResetToDefaultAbbreviations = True will reset abbreviations to default and update the file on disk + + Dim intIndex As Integer, intAbbrevFound As Integer + Dim blnFileNotFound As Boolean, blnRecreateFile As Boolean + Dim strWork As String + Dim strFilePath As String, strBackupFilePath As String + Dim InFileNum As Integer + + Dim lngErrorID As Long, lngAbbreviationID As Long + Dim intInvalidAbbreviationCount As Integer + Dim strSymbol As String, strFormula As String, strOneLetterSymbol As String, strComment As String + Dim blnIsAminoAcid As Boolean, blnInvalidSymbolOrFormula As Boolean + Dim sngCharge As Single + +On Error GoTo LoadAbbreviationsErrorHandler + + If Not gBlnAccessFilesOnDrive Then + If blnResetToDefaultAbbreviations Then + ' Load the abbreviations from memory + objMwtWin.ResetAbbreviations + End If + Exit Sub + End If + + ' Load Abbreviations + AddToIntro LookupLanguageCaption(3800, "Loading Abbreviations") & " ...", False, False + + strFilePath = BuildPath(gCurrentPath, ABBREVIATIONS_FILENAME) + blnFileNotFound = Not FileExists(strFilePath) + + If blnFileNotFound Or blnResetToDefaultAbbreviations Then + + ' Set the default abbreviations + objMwtWin.ResetAbbreviations + + If gBlnWriteFilesOnDrive Then + ' Re-create the abbreviations file + SaveAbbreviations True, False, strBackupFilePath + If Len(strBackupFilePath) > 0 Then + AddToIntro LookupMessage(110) & " " & LookupMessage(115) & ": " & strBackupFilePath + Else + AddToIntro LookupMessage(110) + End If + End If + Else + + ' Load from disk + InFileNum = FreeFile() + Open strFilePath For Input As #InFileNum + + ' Read the first line and make sure it's a valid version (5.0 or greater) + Line Input #InFileNum, strWork + + intIndex = InStr(strWork, "(v") + If intIndex = 0 Then + ' Missing version number, so re-create file + blnRecreateFile = True + Else + If Val(Mid(strWork, intIndex + 2)) < 5 Then + ' Version is before 5.0, re-create file + blnRecreateFile = True + End If + End If + + If blnRecreateFile Then + Close InFileNum + ' Set the default abbreviations + objMwtWin.ResetAbbreviations + SaveAbbreviations + Else + + objMwtWin.RemoveAllAbbreviations + + Do + Line Input #InFileNum, strWork + strWork = Trim(strWork) + + If strWork <> "" And Not IsComment(strWork) Then + Select Case intAbbrevFound + Case 0 + If Left(strWork, 13) = "[AMINO ACIDS]" Then intAbbrevFound = 1 + Case 1 + If Left(strWork, 15) = "[ABBREVIATIONS]" Then + intAbbrevFound = 2 + Else + LoadAbbreviationsParse strWork, True + End If + Case Else + Debug.Assert intAbbrevFound = 2 + LoadAbbreviationsParse strWork, False + End Select + End If + Loop Until EOF(InFileNum) + + Select Case intAbbrevFound + Case 0 + ' Amino Acids not found + AddToIntro LookupMessage(120) + Case 1 + ' Abbreviations not found + AddToIntro LookupMessage(130) + AddToIntro LookupMessage(135) + Case Else + ' Everything is fine + End Select + + Close InFileNum + End If + End If + + ' Validate all of the abbreviations + intInvalidAbbreviationCount = objMwtWin.ValidateAllAbbreviations() + If intInvalidAbbreviationCount > 0 Then + For lngAbbreviationID = 1 To objMwtWin.GetAbbreviationCount + lngErrorID = objMwtWin.GetAbbreviation(lngAbbreviationID, strSymbol, strFormula, sngCharge, blnIsAminoAcid, strOneLetterSymbol, strComment, blnInvalidSymbolOrFormula) + If blnInvalidSymbolOrFormula Then + AddToIntro LookupMessage(160) & ": " & strSymbol & " " & strFormula + End If + Next lngAbbreviationID + End If + + Exit Sub + +LoadAbbreviationsErrorHandler: + Close InFileNum + AddToIntro LookupMessage(150) & " (" & strFilePath & "): " & Err.Description + + ' Set the default abbreviations + objMwtWin.ResetAbbreviations + +End Sub + +Private Sub LoadAbbreviationsParse(strWork As String, blnAminoAcidAbbreviation As Boolean) + + Const MAX_PARSE_VALS = 4 + Dim strParsedVals(MAX_PARSE_VALS) As String, strRemaining As String + Dim strComment As String + Dim intParseCount As Integer + Dim intParsedValIndex As Integer + + Dim strAbbrevSymbol As String, strThisAbbrevData As String + Dim strFormula As String, strOneLetterSymbol As String + Dim sngCharge As Single + Dim lngErrorID As Long + + strWork = FormatForLocale(strWork) + + ' Look for a comment at the end of strWork and store in strComment + strComment = StripComment(strWork) + + intParseCount = ParseString(strWork, strParsedVals(), MAX_PARSE_VALS, " ", strRemaining, True, True) + + For intParsedValIndex = 1 To MAX_PARSE_VALS + strParsedVals(intParsedValIndex) = Trim(strParsedVals(intParsedValIndex)) + Next intParsedValIndex + + ' Make sure strParsedVals(2) contains useful information (i.e. doesn't start with ' or ; and isn't blank) + If intParseCount > 0 And Len(strParsedVals(2)) > 0 Then + + strAbbrevSymbol = strParsedVals(1) + If Len(strAbbrevSymbol) > 6 Then + strAbbrevSymbol = Left(strAbbrevSymbol, 6) + AddToIntro LookupMessage(190) & ": " & strWork + End If + + For intParsedValIndex = 1 To 3 + ' strParsedVals(2) contains the formula + ' strParsedVals(3) contains the charge + ' strParsedVals(4) contains the 1 letter abbreviation (for amino acids only, and not all have one) + strThisAbbrevData = strParsedVals(intParsedValIndex + 1) + + If Not IsComment(strThisAbbrevData) Then + Select Case intParsedValIndex + Case 1 + ' Formula + strFormula = strThisAbbrevData + Case 2 + ' Charge + sngCharge = CSngSafe(strThisAbbrevData) + Case 3 + ' One letter abbreviation + If blnAminoAcidAbbreviation Then + ' Single letter abbreviation for amino acids + ' Limit to just 1 letter + strOneLetterSymbol = UCase(Left(strThisAbbrevData, 1)) + End If + End Select + End If + Next intParsedValIndex + + ' Note: Passing False to blnValidateFormula so that all abbreviations are added + ' We later call .ValidateAllAbbreviations to validate them + lngErrorID = objMwtWin.SetAbbreviation(strAbbrevSymbol, strFormula, sngCharge, blnAminoAcidAbbreviation, strOneLetterSymbol, strComment, False) + + If lngErrorID <> 0 Then + ' Ignore the error for now; we'll validate all of the abbreviations later + ' Reset objMwtWin.ErrorID + objMwtWin.ClearError + End If + Else + AddToIntro LookupMessage(200) & ": " & strWork + End If + +End Sub + +Public Sub LoadCapillaryFlowInfo() + ' Loads Capillary Flow values from an Info file + + Dim strInfoFilePath As String, strMessage As String + Dim blnMatched As Boolean + Dim strLineIn As String, intEqualLoc As Integer + Dim strSettingInFile As String, strIDStringInFile As String + Dim InFileNum As Integer + Dim intCapillaryFlowFileFormatVersion As Integer + + ' 1550 = Capillary Flow Info Files, 1555 = .cap + strInfoFilePath = SelectFile(frmCapillaryCalcs.hwnd, "Select File", gLastFileOpenSaveFolder, False, "", ConstructFileDialogFilterMask(LookupMessage(1550), LookupMessage(1555)), 1, True) + If Len(strInfoFilePath) = 0 Then + ' No file selected (or other error) + Exit Sub + End If + +On Error GoTo LoadCapillaryFlowInfoErrorHandler + + ' Open the file for input + InFileNum = FreeFile() + Open strInfoFilePath For Input As #InFileNum + + Do While Not EOF(InFileNum) + Line Input #InFileNum, strLineIn + + If Len(strLineIn) > 0 Then + If Not IsComment(strLineIn) Then + + intEqualLoc = InStr(strLineIn, "=") + If intEqualLoc > 0 Then + strIDStringInFile = UCase(Left(strLineIn, intEqualLoc - 1)) + strSettingInFile = Mid(strLineIn, intEqualLoc + 1) + + If UCase(Left(strLineIn, 13)) = "CAPILLARYFLOW" Then + blnMatched = ParseCapillaryFlowSetting(strIDStringInFile, strSettingInFile, intCapillaryFlowFileFormatVersion) + Else + blnMatched = False + End If + + If Not blnMatched Then + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End If + + End If + End If + End If + Loop + + Close InFileNum + Exit Sub + +LoadCapillaryFlowInfoErrorHandler: + Close InFileNum + strMessage = LookupMessage(330) & ": " & strInfoFilePath + strMessage = strMessage & vbCrLf & Err.Description + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub LoadDefaultOptions(blnResetToDefaults As Boolean, Optional blnShowDebugPrompts As Boolean = False) + ' blnResetToDefaults = False will load defaults from disk + ' blnResetToDefaults = True will reset defaults to default + + Dim intIndex As Integer, intCharLoc As Integer + Dim strWork As String, strMessage As String, strWorkVal As String, intWorkVal As Integer + Dim blnFileNotFound As Boolean + Dim strNewFontName As String + Dim intNewFontSize As Integer + Dim intSeparatorLoc As Integer, intSavedMaxAllowableIndex As Integer + Dim strFilePath As String + Dim InFileNum As Integer + Dim eResponse As VbMsgBoxResult + +On Error GoTo LoadDefaultOptionsErrorHandler + + If Not gBlnAccessFilesOnDrive Then + ' Load the options from memory + SetDefaultOptions + SetAllTooltips + Exit Sub + End If + + strFilePath = BuildPath(gCurrentPath, INI_FILENAME) + blnFileNotFound = Not FileExists(strFilePath) + + If blnFileNotFound Or blnResetToDefaults Then + + ' Set the default options + SetDefaultOptions + SetAllTooltips + + If gBlnWriteFilesOnDrive Then + If blnShowDebugPrompts Then MsgBox "LoadDefaultOptions: Re-creating the options file (" & strFilePath & ")" + SaveDefaultOptions + End If + + Else + + ' Load from disk + InFileNum = FreeFile() + + If blnShowDebugPrompts Then MsgBox "LoadDefaultOptions: Reading options file (" & strFilePath & ")" + Open strFilePath For Input As #InFileNum + + Do + Line Input #InFileNum, strWork + strWork = Trim(strWork) + + If strWork <> "" And Not IsComment(strWork) Then + intCharLoc = InStr(strWork, "=") + If intCharLoc > 0 Then + strWorkVal = Mid(strWork, intCharLoc + 1) + intWorkVal = CIntSafe(strWorkVal) + Select Case UCase(Left(strWork, intCharLoc - 1)) + Case "VIEW": + If intWorkVal = vmdSingleView Then + frmMain.SetViewMode vmdSingleView + Else + frmMain.SetViewMode vmdMultiView + End If + Case "CONVERT" + If intWorkVal >= 0 And intWorkVal <= 2 Then + frmProgramPreferences.optConvertType(intWorkVal).value = True + End If + Case "ABBREV": + If intWorkVal >= 0 And intWorkVal <= 2 Then + frmProgramPreferences.optAbbrevType(intWorkVal).value = True + End If + Case "STDDEV": + If intWorkVal >= 0 And intWorkVal <= 3 Then + frmProgramPreferences.optStdDevType(intWorkVal).value = True + End If + Case "CAUTION": SetCheckBoxValue frmProgramPreferences.chkShowCaution, intWorkVal + Case "ADVANCE": SetCheckBoxValue frmProgramPreferences.chkAdvanceOnCalculate, intWorkVal + Case "CHARGE": SetCheckBoxValue frmProgramPreferences.chkComputeCharge, intWorkVal + Case "QUICKSWITCH": SetCheckBoxValue frmProgramPreferences.chkShowQuickSwitch, intWorkVal + Case "FONT": + ' Also get fontsize before reformatting the objects + strNewFontName = strWorkVal + Case "FONTSIZE": + If intWorkVal >= 7 And intWorkVal <= 64 Then + intNewFontSize = intWorkVal + Else + intNewFontSize = 10 + End If + Case "EXITCONFIRM": + If intWorkVal >= 0 And intWorkVal <= 3 Then + frmProgramPreferences.optExitConfirmation(intWorkVal).value = True + End If + Case "FINDERWEIGHTMODEWARN": + If intWorkVal >= -1 And intWorkVal <= 1 Then + With frmProgramPreferences + Select Case intWorkVal + Case 1 + .chkAlwaysSwitchToIsotopic.value = vbChecked + ' This also checks never show + Case -1 + .chkAlwaysSwitchToIsotopic.value = vbUnchecked + .chkNeverShowFormulaFinderWarning.value = vbChecked + Case Else + .chkAlwaysSwitchToIsotopic.value = vbUnchecked + .chkNeverShowFormulaFinderWarning.value = vbUnchecked + End Select + End With + End If + Case "TOOLTIPS" + SetCheckBoxValue frmProgramPreferences.chkShowToolTips, intWorkVal + Case "HIDEINACTIVEFORMS" + SetCheckBoxValue frmProgramPreferences.chkHideInactiveForms, intWorkVal + Case "STARTUPMODULE" + With frmProgramPreferences.cboStartupModule + If intWorkVal < .ListCount Then + .ListIndex = intWorkVal + End If + End With + Case "AUTOSAVEVALUES": + SetCheckBoxValue frmProgramPreferences.chkAutosaveValues, intWorkVal + Case "BRACKETSASPARENTHESES" + SetCheckBoxValue frmProgramPreferences.chkBracketsAsParentheses, intWorkVal + Case "AUTOCOPYCURRENTMWT" + SetCheckBoxValue frmProgramPreferences.chkAutoCopyCurrentMWT, intWorkVal + Case "MAXIMUMFORMULASTOSHOW" + ' Note that the cboMaximumFormulasToShow combo box is initialized to the allowable + ' values for the current resolution when frmProgramPreferences is loaded + + ' Parse the two values stored on this line + intSeparatorLoc = InStr(strWorkVal, "::") + If intSeparatorLoc > 0 Then + ' intWorkVal holds the user's desired max formula index + intWorkVal = CIntSafe(Left(strWorkVal, intSeparatorLoc - 1)) + intSavedMaxAllowableIndex = CIntSafe(Mid(strWorkVal, intSeparatorLoc + 2)) + With frmProgramPreferences + If intSavedMaxAllowableIndex = CIntSafeDbl(.cboMaximumFormulasToShow.List(.cboMaximumFormulasToShow.ListCount - 1)) - 1 Then + ' Only use the saved desired max formula index if the screen resolution + ' has not changed since the program was last exited + ' This is done so that the user will realize that more formulas can be displayed at higher resolutions + For intIndex = 0 To .cboMaximumFormulasToShow.ListCount - 1 + If .cboMaximumFormulasToShow.List(intIndex) = Trim(Str(intWorkVal)) + 1 Then + .cboMaximumFormulasToShow.ListIndex = intIndex + If frmMain.GetTopFormulaIndex <= intWorkVal Then + gMaxFormulaIndex = intWorkVal + End If + Exit For + End If + Next intIndex + End If + End With + End If + Case "FINDERBOUNDEDSEARCH" + If intWorkVal = 0 Or intWorkVal = 1 Then + frmFinderOptions.cboSearchType.ListIndex = intWorkVal + End If + Case "LANGUAGE" + gCurrentLanguage = strWorkVal + Case "LANGUAGEFILE" + gCurrentLanguageFileName = strWorkVal + Case "LASTOPENSAVEFOLDER" + gLastFileOpenSaveFolder = strWorkVal + Case Else + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End Select + Else + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End If + End If + Loop Until EOF(InFileNum) + Close InFileNum + + If blnShowDebugPrompts Then MsgBox "LoadDefaultOptions: Set Fonts" + + ' Tasks that need to be done now that the options have been loaded + SetFonts strNewFontName, intNewFontSize + + If blnShowDebugPrompts Then + eResponse = MsgBox("Show detailed debugging information when setting ToolTips?", vbQuestion + vbYesNo + vbDefaultButton2) + SetAllTooltips (eResponse = vbYes) + Else + SetAllTooltips + End If + + End If + + Exit Sub + +LoadDefaultOptionsErrorHandler: + Close InFileNum + + strMessage = LookupMessage(400) & " (" & strFilePath & "): " & Err.Description + strMessage = strMessage & vbCrLf & LookupMessage(410) & vbCrLf & LookupMessage(345) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub LoadElements(intNewElementMode As Integer, Optional blnShowFrmIntro As Boolean = True) + ' intNewElementMode = 0 will load elements from disk + ' intNewElementMode = 1 will reset elements to default (average weights) + ' intNewElementMode = 2 will change elements to isotopic weights + ' intNewElementMode = 3 will change the elements to their integer weights + + ' If loading elements from memory, re-creates the element file + ' Otherwise, loads from disk and updates the values in objMwtWin + + Const MAX_PARSE_COUNT = 4 + Dim intParseCount As Integer, intParsedValIndex As Integer + Dim strParsedVals(MAX_PARSE_COUNT) As String ' 0-based array + + Dim intCharLoc As Integer + Dim blnElementsHeaderFound As Boolean, blnFileNotFound As Boolean, blnRecreateFile As Boolean + Dim InFileNum As Integer + Dim eNewElementWeightType As emElementModeConstants + + Dim strLineIn As String, strRemaining As String + Dim strSymbol As String + Dim lngElementID As Long, lngErrorID As Long + Dim dblMass As Double, dblUncertainty As Double, sngCharge As Single, intIsotopeCount As Integer + Dim dblNewMass As Double, dblNewUncertainty As Double, sngNewCharge As Single + + Dim strFilePath As String, strBackupFilePath As String + +On Error GoTo LoadElementsErrorHandler + + If Not gBlnAccessFilesOnDrive Then + ' Load the element weights from memory + SwitchWeightModeInteger intNewElementMode + Exit Sub + End If + + ' Load Elements + If blnShowFrmIntro Then frmIntro.Show vbModeless + frmIntro.lblLoadStatus.Caption = LookupLanguageCaption(3810, "Loading Elements") & " ..." + + strFilePath = BuildPath(gCurrentPath, ELEMENTS_FILENAME) + blnFileNotFound = Not FileExists(strFilePath) + + If blnFileNotFound Or intNewElementMode >= 1 Then + If blnFileNotFound Then + AddToIntro LookupMessage(270) & " (" & strFilePath & ")" + End If + + SwitchWeightModeInteger intNewElementMode + + If gBlnWriteFilesOnDrive Then + SaveElements strBackupFilePath + If Len(strBackupFilePath) > 0 Then + AddToIntro LookupMessage(210) & " " & LookupMessage(115) & ": " & strBackupFilePath + Else + AddToIntro LookupMessage(210) + End If + End If + Else + + ' Load from disk + InFileNum = FreeFile() + Open strFilePath For Input As #InFileNum + + ' Read the first line and make sure it's a valid version (5.0 or greater) + Line Input #InFileNum, strLineIn + + intCharLoc = InStr(strLineIn, "(v") + If intCharLoc = 0 Then + ' Missing version number, so re-create file + blnRecreateFile = True + Else + If Val(Mid(strLineIn, intCharLoc + 2)) < 5 Then + ' Version is before 5.0, re-create file + blnRecreateFile = True + End If + End If + + If blnRecreateFile Then + Close InFileNum + SwitchWeightModeInteger intNewElementMode + SaveElements + Else + + blnElementsHeaderFound = False + Do + Line Input #InFileNum, strLineIn + strLineIn = Trim(strLineIn) + strRemaining = "" + + If strLineIn <> "" And Not IsComment(strLineIn) Then + If Not blnElementsHeaderFound Then + If Left(strLineIn, 19) = "[ELEMENTWEIGHTTYPE]" Then + eNewElementWeightType = CIntSafe(Trim(Mid(strLineIn, 20))) + If eNewElementWeightType < 1 Or eNewElementWeightType > 3 Then + eNewElementWeightType = 1 + End If + SwitchWeightMode eNewElementWeightType + gElementWeightTypeInFile = eNewElementWeightType + End If + If Left(strLineIn, 13) = "[ELEMENTS]" Then + blnElementsHeaderFound = True + If eNewElementWeightType = 0 Then + ' No gElementWeightType statement present, assume type 1 + eNewElementWeightType = 1 + SwitchWeightMode eNewElementWeightType + gElementWeightTypeInFile = eNewElementWeightType + End If + End If + Else + strLineIn = FormatForLocale(strLineIn) + + ' Note: by using a delimeter of " ;'" and setting MatchWholeDelimeter to false, then strLineIn will be split based on a space, semicolon, or apostrophe + intParseCount = ParseString(strLineIn, strParsedVals(), MAX_PARSE_COUNT, " ;'", strRemaining, False, True, False) + + If intParseCount >= 3 Then + For intParsedValIndex = 0 To MAX_PARSE_COUNT - 1 + strParsedVals(intParsedValIndex) = Trim(strParsedVals(intParsedValIndex)) + Next intParsedValIndex + + If IsNumeric(strParsedVals(1)) Then + strSymbol = strParsedVals(0) + + dblNewMass = CDblSafe(strParsedVals(1)) + If IsNumeric(strParsedVals(3)) Then + dblNewUncertainty = CDblSafe(strParsedVals(2)) + Else + dblNewUncertainty = 0 + End If + + If IsNumeric(strParsedVals(3)) Then + sngNewCharge = CSngSafe(strParsedVals(3)) + Else + sngNewCharge = 0 + End If + + If dblNewMass >= 0 And dblNewUncertainty >= 0 Then + ' Make sure strSymbol is valid, and grab the current values for the element + lngElementID = objMwtWin.GetElementID(strSymbol) + + If lngElementID > 0 Then + ' Get the current element values + lngErrorID = objMwtWin.GetElement(lngElementID, strSymbol, dblMass, dblUncertainty, sngCharge, intIsotopeCount) + Debug.Assert lngErrorID = 0 + + ' See if new mass is more than 20% different than old mass + If dblNewMass > 1.2 * dblMass Or _ + dblNewMass < 0.8 * dblMass Then + AddToIntro LookupMessage(220, ": " & strSymbol & ", " & CStr(dblNewMass)) + End If + + ' See if uncertainty is more than 10 times different than old uncertainty + If gElementWeightTypeInFile = emAverageMass And _ + (dblNewUncertainty > 10 * dblUncertainty Or _ + dblNewUncertainty < 0.1 * dblUncertainty) Then + AddToIntro LookupMessage(230, ": " & strSymbol & ", " & CStr(dblNewUncertainty)) + End If + + lngErrorID = objMwtWin.SetElement(strSymbol, dblNewMass, dblNewUncertainty, sngNewCharge, False) + + If lngErrorID <> 0 Then + AddToIntro LookupMessage(lngErrorID) & ": " & strLineIn + End If + Else + AddToIntro LookupMessage(250) & ": " & strLineIn + End If + Else + AddToIntro LookupMessage(200) & ": " & strLineIn + End If + Else + AddToIntro LookupMessage(200) & ": " & strLineIn + End If + Else + AddToIntro LookupMessage(200) & ": " & strLineIn + End If + + End If + End If + Loop Until EOF(InFileNum) + + If Not blnElementsHeaderFound Then + ' Elements not found + AddToIntro LookupMessage(260) + AddToIntro LookupMessage(265) + End If + + Close InFileNum + End If + End If + +LoadElementsExit: + + ' Recompute the abbreviation masses + objMwtWin.RecomputeAbbreviationMasses + + ' Make sure QuickSwitch Element Mode value is correct + frmMain.ShowHideQuickSwitch frmProgramPreferences.chkShowQuickSwitch.value + + Exit Sub + +LoadElementsErrorHandler: + Close InFileNum + AddToIntro LookupMessage(280) & " (" & strFilePath & ")" + AddToIntro Err.Description + AddToIntro LookupMessage(265) + Resume LoadElementsExit + +End Sub + +Public Function LoadLanguageSettings(strLangFilename As String, strNewLanguage As String) As Boolean + Dim strFilePath As String + Dim blnSuccess As Boolean + Dim strSearchForFile As String, strMessage As String + + ' See if the language file exists + strFilePath = BuildPath(gCurrentPath, strLangFilename) + + strSearchForFile = Dir(strFilePath) + If Len(strSearchForFile) > 0 Then + ' Load the new language file into form frmStrings + blnSuccess = LoadLanguageFile(strFilePath, frmStrings.grdLanguageStrings, frmStrings.grdLanguageStringsCrossRef, True) + + If blnSuccess Then + ' Reset menu captions to numeric values + ResetMenuCaptions False + + ' Load the captions into controls on all forms + LoadLanguageCaptions + + ' Load the captions into the dynamic text fields on the Formula Finder form + frmFinder.LoadDynamicTextCaptions + + ' Add shortcut keys to menus + AppendShortcutKeysToMenuCaptions + + ' Save new language in gCurrentLanguage + gCurrentLanguage = strNewLanguage + gCurrentLanguageFileName = strLangFilename + + ' Save new value for gMWAbbreviation + gMWAbbreviation = LookupLanguageCaption(4040, "MW") + If Len(gMWAbbreviation) <> 2 Then + gMWAbbreviation = "MW" + End If + + blnSuccess = True + Else + ' Problem loading settings + strMessage = LookupMessage(440) & " (" & strFilePath & ")" + strMessage = strMessage & vbCrLf & LookupMessage(450) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + blnSuccess = False + End If + Else + strMessage = LookupMessage(460) & " (" & strFilePath & ")" + strMessage = strMessage & vbCrLf & LookupMessage(450) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + blnSuccess = False + End If + + LoadLanguageSettings = blnSuccess + +End Function + +Private Sub LoadGridColumnTitles(grdThisFlexGrid As MSFlexGrid) + + Dim intIndex As Integer + +On Error GoTo LoadGridColumnTitlesErrorHandler + + ' Need to update Column titles in various MSFlexGrids in program + With grdThisFlexGrid + Select Case LCase(.Name) + Case "grdamino" + .TextMatrix(0, 0) = "AbbrevID (Hidden)" + .TextMatrix(0, 1) = LookupLanguageCaption(9180, .TextMatrix(0, 0)) + .TextMatrix(0, 2) = LookupLanguageCaption(9160, .TextMatrix(0, 1)) + .TextMatrix(0, 3) = LookupLanguageCaption(9150, .TextMatrix(0, 2)) + .TextMatrix(0, 4) = LookupLanguageCaption(9190, .TextMatrix(0, 3)) + .TextMatrix(0, 5) = LookupLanguageCaption(9195, "Comment") + Case "grdnormal" + .TextMatrix(0, 0) = "AbbrevID (Hidden)" + .TextMatrix(0, 1) = LookupLanguageCaption(9170, .TextMatrix(0, 0)) + .TextMatrix(0, 2) = LookupLanguageCaption(9160, .TextMatrix(0, 1)) + .TextMatrix(0, 3) = LookupLanguageCaption(9150, .TextMatrix(0, 2)) + .TextMatrix(0, 4) = LookupLanguageCaption(9195, "Comment") + Case "grdelem" + .TextMatrix(0, 0) = LookupLanguageCaption(9350, .TextMatrix(0, 0)) + .TextMatrix(0, 1) = LookupLanguageCaption(9360, .TextMatrix(0, 1)) + .TextMatrix(0, 2) = LookupLanguageCaption(9370, .TextMatrix(0, 2)) + .TextMatrix(0, 3) = LookupLanguageCaption(9150, .TextMatrix(0, 3)) + Case "grdmodsymbols" + .TextMatrix(0, 0) = "ModSymbolID (Hidden)" + .TextMatrix(0, 1) = LookupLanguageCaption(15610, "Symbol") + .TextMatrix(0, 2) = LookupLanguageCaption(15620, "Mass") + .TextMatrix(0, 3) = LookupLanguageCaption(15640, "Comment") + Case "grdionlist" + .TextMatrix(0, 0) = LookupLanguageCaption(12550, "Mass") + .TextMatrix(0, 1) = LookupLanguageCaption(12560, "Intensity") + .TextMatrix(0, 2) = LookupLanguageCaption(12570, "Symbol") + Case "grdfragmasses" + .TextMatrix(0, 0) = LookupLanguageCaption(12500, "#") + .TextMatrix(0, 1) = LookupLanguageCaption(12510, "Immon.") + ' We can only update the Seq column if the initial language is English + For intIndex = 0 To .Cols - 1 + If .TextMatrix(0, intIndex) = "Seq." Then + .TextMatrix(0, intIndex) = LookupLanguageCaption(12520, "Seq.") + Exit For + End If + Next intIndex + .TextMatrix(0, .Cols - 1) = .TextMatrix(0, 0) + Case "grdpc", "grdlanguagestrings", "grdmenuinfo", "grdlanguagestringscrossref" + ' No column titles in grdPC or grdLanguageStrings or grdMenuInfo or grdLanguageStringsCrossRef + Case Else + ' Unknown Grid: do not set any titles + ' Add cases above for the other grids so this assertion is note reached + Debug.Assert False + End Select + End With + + Exit Sub + +LoadGridColumnTitlesErrorHandler: + Debug.Assert False + GeneralErrorHandler "MwtWinProcedures|LoadGridColumnTitles", Err.Number, Err.Description +End Sub + +Private Sub LoadLanguageCaptions(Optional boolSingleFormOnly As Boolean = False, Optional frmThisSingleForm As VB.Form) + Dim frmThisForm As VB.Form + + If boolSingleFormOnly Then + LoadLanguageCaptionsIntoForm frmThisSingleForm + frmThisSingleForm.Refresh + Else + ' Load new captions into all forms + For Each frmThisForm In Forms + LoadLanguageCaptionsIntoForm frmThisForm + frmThisForm.Refresh + Next + + LoadLanguageCaptionsIntoAppWideDynamicLabels + + frmEditElem.PositionFormControls + frmEditAbbrev.PositionFormControls + End If + + If frmMain.mnuShowTips.Checked = True Then + ' Load all ToolTips + SetAllTooltips + End If + + Dim strMinutesElapsedRemaining As String, strClickToPause As String + Dim strPreparingToPause As String, strPaused As String + Dim strResuming As String, strPressEscapeToAbort As String + + ' Update language captions for frmProgress and objMwtWin.frmProgress + strMinutesElapsedRemaining = LookupLanguageCaption(14740, "min. elapsed/remaining") + strClickToPause = LookupLanguageCaption(14710, "Click to Pause") + strPreparingToPause = LookupLanguageCaption(14715, "Preparing to Pause") + strPaused = LookupLanguageCaption(14720, "Paused") + strResuming = LookupLanguageCaption(14725, "Resuming") + strPressEscapeToAbort = LookupLanguageCaption(14730, "(Press Escape to Abort)") + + frmProgress.SetStandardCaptionText strMinutesElapsedRemaining, strPreparingToPause, strResuming, strClickToPause, strPaused, strPressEscapeToAbort + + objMwtWin.SetStandardProgressCaptionText strMinutesElapsedRemaining, strPreparingToPause, strResuming, strClickToPause, strPaused, strPressEscapeToAbort + +End Sub + +Private Sub LoadLanguageCaptionsIntoAppWideDynamicLabels() + Dim intIndex As Integer + + ' Need to update Formula 1, Formula 2, etc. in frmMain since they are + ' added dynamically and do not have a LanguageID# in their .Tag + With frmMain + For intIndex = 0 To frmMain.GetTopFormulaIndex + .lblFormula(intIndex).Caption = ConstructFormulaLabel(intIndex) + Next intIndex + End With + +End Sub + +Private Sub LoadLanguageCaptionsIntoForm(frmThisForm As VB.Form) + Dim ctlThisControl As Control, strControlType As String + Dim boolComboBox As Boolean + + ' Load the caption for the form + frmThisForm.Caption = LookupLanguageCaption(frmThisForm.Tag, frmThisForm.Caption) + + ' Load captions for each control on form (if appropriate) + ' Note that ToolTips are loaded separately using SetAllTooltips + ' Attempting to set ToolTips using this Sub results in very high processor usage + For Each ctlThisControl In frmThisForm.Controls + boolComboBox = False + With ctlThisControl + strControlType = TypeName(ctlThisControl) + Select Case strControlType + Case "Label" + .Caption = LookupLanguageCaption(.Tag, .Caption) + Case "Menu" + .Caption = LookupLanguageCaption(.Caption, .Caption, True, .Name) + Case "TabStrip" + ' Not implemented: use .Tag to set .Caption and .ToolTipText to set .ToolTipText + Case "Toolbar" + ' Not implemented: use .ToolTipText to set .ToolTipText + Case "ListView" + ' Not implemented: use .Tag to set .Text + Case "CommonDialog" + ' Not used + Case "StatusBar" + ' MsgBox "status bar fontsize=" & ctl.Font.Size + Case "SplitFrame" + Case "ScrollPanel" + Case "PictureBox" + Case "ProgressBar" + Case "TextBox" + Case "Timer" + Case "Shape" + Case "ComboBox" + boolComboBox = True + Case "Image" + Case "ListBox" + Case "Line" + Case "MSFlexGrid" + LoadGridColumnTitles ctlThisControl + Case "RichTextBox" + ' I use the .Tag property of RichTextBox controls to store useful values + ' Do not attempt to set the caption + Case Else + ' Regular control (and Frames) + .Caption = LookupLanguageCaption(.Tag, .Caption) + End Select + End With + If boolComboBox Then + ' Do not Re-populate if control is cboSortResults (.Tag = 10850) + ' The control's list items are added dynamically depending on the checkboxes on the form + If ctlThisControl.Tag <> "10850" Then + PopulateComboBox ctlThisControl, True + End If + End If + Next + +End Sub + +Private Function LoadLanguageFile(strLangFilePath As String, grdThisLanguageGrid As MSFlexGrid, grdThisLanguageGridCrossRef As MSFlexGrid, blnForeignLanguage As Boolean) As Boolean + ' This sub assumes file strLangFilePath exists + ' Check for this before calling + + Dim strWork As String, intEqualPos As Integer, lngKeyValue As Long + Dim strNewSymbolCombo As String, strCaption As String + Dim blnCautionFound As Boolean, intCrossRefTrack As Integer + Dim lngError As Long + Dim InFileNum As Integer + + Const CROSS_REF_TRACK_STEP = 1000 + +On Error GoTo LoadLanguageFileErrorHandler + + If Not FileExists(strLangFilePath) Then + ' File not found + AddToIntro LookupMessage(460) & " (" & strLangFilePath & ")" + AddToIntro LookupMessage(305) + ResetMenuCaptions True + + LoadLanguageFile = False + Exit Function + End If + + InFileNum = FreeFile() + Open strLangFilePath For Input As #InFileNum + + With grdThisLanguageGrid + .Clear + .Rows = 0 + .ColWidth(0) = 650 + .ColWidth(1) = 8000 + End With + + With grdThisLanguageGridCrossRef + .Clear + .Rows = 0 + .ColWidth(0) = 600 + .ColWidth(1) = 600 + End With + + intCrossRefTrack = CROSS_REF_TRACK_STEP + Do + ' Read each line and store in grdThisLanguageGrid if it starts with + ' a number followed by an = sign + Line Input #InFileNum, strWork + intEqualPos = InStr(strWork, "=") + + If intEqualPos > 0 Then + If IsNumeric(Left(strWork, intEqualPos - 1)) Then + lngKeyValue = CLng(Left(strWork, intEqualPos - 1)) + strCaption = Mid(strWork, intEqualPos + 1) + + With grdThisLanguageGrid + .AddItem CStr(lngKeyValue) + .TextMatrix(.Rows - 1, 1) = strCaption + End With + + If lngKeyValue >= LANG_FILE_ERROR_STATEMENT_ID_OFFSET And _ + lngKeyValue < LANG_FILE_CAUTION_STATEMENT_ID_OFFSET Then + lngError = objMwtWin.SetMessageStatement(lngKeyValue - LANG_FILE_ERROR_STATEMENT_ID_OFFSET, strCaption) + Debug.Assert lngError = 0 + End If + + If lngKeyValue >= intCrossRefTrack Then + Do While intCrossRefTrack + 1000 <= lngKeyValue + intCrossRefTrack = intCrossRefTrack + CROSS_REF_TRACK_STEP + With grdThisLanguageGridCrossRef + .AddItem intCrossRefTrack + .TextMatrix(.Rows - 1, 1) = grdThisLanguageGrid.Rows - 1 + End With + Loop + With grdThisLanguageGridCrossRef + .AddItem intCrossRefTrack + .TextMatrix(.Rows - 1, 1) = grdThisLanguageGrid.Rows - 1 + End With + intCrossRefTrack = intCrossRefTrack + CROSS_REF_TRACK_STEP + End If + + If lngKeyValue = LANG_FILE_CAUTION_STATEMENT_ID_OFFSET And blnForeignLanguage Then + blnCautionFound = True + End If + ElseIf blnCautionFound And intEqualPos > 2 Then + Select Case Asc(Left(strWork, 1)) + Case 97 To 122, 65 To 90 ' a to z and A to Z + strNewSymbolCombo = Left(strWork, intEqualPos - 1) + strCaption = Mid(strWork, intEqualPos + 1) + + lngError = objMwtWin.SetCautionStatement(strNewSymbolCombo, strCaption) + Debug.Assert lngError = 0 + End Select + + End If + End If + + Loop Until EOF(InFileNum) + Close InFileNum + + LoadLanguageFile = True + Exit Function + +LoadLanguageFileErrorHandler: + Close InFileNum + AddToIntro LookupMessage(440) & " (" & strLangFilePath & "): " & Err.Description + AddToIntro LookupMessage(305) + LoadLanguageFile = False + +End Function + +Public Sub LoadSequenceInfo() + ' Loads Fragmentation Modelling sequence info from a file + + Dim strSequenceFilePath As String, strMessage As String + Dim blnMatched As Boolean + Dim strLineIn As String, intEqualLoc As Integer + Dim strSettingInFile As String, strIDStringInFile As String + Dim SeqFileNum As Integer + Dim blnSkipNextLineRead As Boolean + + ' 1530 = Sequence Files, 1535 = .seq + strSequenceFilePath = SelectFile(frmFragmentationModelling.hwnd, "Select File", gLastFileOpenSaveFolder, False, "", ConstructFileDialogFilterMask(LookupMessage(1530), LookupMessage(1535)), 1) + If Len(strSequenceFilePath) = 0 Then + ' No file selected (or other error) + Exit Sub + End If + +On Error GoTo LoadSequenceInfoErrorHandler + + ' Open the file for input + SeqFileNum = FreeFile() + Open strSequenceFilePath For Input As #SeqFileNum + + Do While Not EOF(SeqFileNum) + If blnSkipNextLineRead Then + blnSkipNextLineRead = False + Else + Line Input #SeqFileNum, strLineIn + strLineIn = Trim(strLineIn) + End If + + If Len(strLineIn) > 0 Then + If Not IsComment(strLineIn) Then + + intEqualLoc = InStr(strLineIn, "=") + If intEqualLoc > 0 Then + strIDStringInFile = UCase(Left(strLineIn, intEqualLoc - 1)) + strSettingInFile = Mid(strLineIn, intEqualLoc + 1) + + If UCase(Left(strLineIn, 9)) = "FRAGMODEL" Then + blnMatched = ParseFragModelSetting(SeqFileNum, strIDStringInFile, strSettingInFile) + Else + blnMatched = False + End If + + If Not blnMatched Then + If UCase(Left(strLineIn, 7)) = "IONPLOT" Then + ' This is an old setting; we can ignore it + Else + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End If + End If + Else + If Not PossiblySkipCWSpectrumSection(strLineIn, SeqFileNum, blnSkipNextLineRead) Then + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End If + End If + End If + End If + Loop + + Close SeqFileNum + + ' Load the CWSpectrum Options + frmFragmentationModelling.LoadCWSpectrumOptions strSequenceFilePath + + ' Rematch the loaded ions in case txtAlignment is nonzero + ' Necessary since txtAlignment's value is set after the IonMatchList is Loaded + frmFragmentationModelling.AlignmentOffsetValidate + + Exit Sub + +LoadSequenceInfoErrorHandler: + Close SeqFileNum + strMessage = LookupMessage(900) & ": " & strSequenceFilePath + strMessage = strMessage & vbCrLf & Err.Description + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub LoadValuesAndFormulas(blnRecreateDefaultValuesFile As Boolean) + ' blnRecreateDefaultValuesFile = False will load values from disk + ' blnRecreateDefaultValuesFile = True will reset values to default + + Dim intEqualLoc As Integer, intIndex As Integer + Dim blnMatched As Boolean, blnFileNotFound As Boolean + Dim strLineIn As String, strMessage As String, strSettingInFile As String + Dim strIDStringInFile As String, strIDStringToMatch As String + Dim dblSettingInFileValue As Double, lngSettingInFile As Long + Dim strFilePath As String + Dim strNewFormulaIndex As String, intNewFormulaIndex As Integer + Dim InFileNum As Integer + Dim intCapillaryFlowFileFormatVersion As Integer + Dim eViewModeSaved As vmdViewModeConstants + Dim blnSkipNextLineRead As Boolean + +On Error GoTo LoadValuesAndFormulasErrorHandler + + If Not gBlnAccessFilesOnDrive Then + SetDefaultValuesAndFormulas blnRecreateDefaultValuesFile + Exit Sub + End If + + strFilePath = BuildPath(gCurrentPath, VALUES_FILENAME) + blnFileNotFound = Not FileExists(strFilePath) + + If blnFileNotFound Or blnRecreateDefaultValuesFile Then + + SetDefaultValuesAndFormulas True + + If gBlnWriteFilesOnDrive Then + + If Not blnFileNotFound Then + BackupFile strFilePath + End If + + ' Re-create the values file + SaveValuesAndFormulas + + ' Wait 100 msec, then call frmFragmentationModelling.SaveCWSpectrumOptions + Sleep 100 + frmFragmentationModelling.SaveCWSpectrumOptions strFilePath + End If + Else + InFileNum = FreeFile() + Open strFilePath For Input As #InFileNum + + ' Set blnDelayUpdate to True on frmMMconvert to delay auto-updating + frmMMConvert.SetDelayUpdate True + + eViewModeSaved = frmMain.GetViewMode() + If eViewModeSaved = vmdSingleView Then frmMain.SetViewMode vmdMultiView + + intNewFormulaIndex = -1 + Do + If blnSkipNextLineRead Then + blnSkipNextLineRead = False + Else + Line Input #InFileNum, strLineIn + strLineIn = Trim(strLineIn) + End If + + If strLineIn <> "" And Not IsComment(strLineIn) Then + intEqualLoc = InStr(strLineIn, "=") + If intEqualLoc > 0 Then + blnMatched = False + strSettingInFile = Mid(strLineIn, intEqualLoc + 1) + strIDStringInFile = UCase(Left(strLineIn, intEqualLoc - 1)) + If IsNumeric(strSettingInFile) Then + dblSettingInFileValue = CDblSafe(FormatForLocale(strSettingInFile)) + lngSettingInFile = CLngSafe(Str(dblSettingInFileValue)) + Else + dblSettingInFileValue = 0 + lngSettingInFile = 0 + End If + + If UCase(Left(strLineIn, 7)) = "FORMULA" Then + strNewFormulaIndex = Mid(strLineIn, 8, intEqualLoc - 8) + If IsNumeric(strNewFormulaIndex) Then + strSettingInFile = FormatForLocale(strSettingInFile) + If strSettingInFile = "" Then + ' Skip it if it's blank + blnMatched = True + Else + If intNewFormulaIndex < gMaxFormulaIndex Then + intNewFormulaIndex = intNewFormulaIndex + 1 + If intNewFormulaIndex > frmMain.GetTopFormulaIndex Then + frmMain.AddNewFormulaWrapper + End If + frmMain.rtfFormula(intNewFormulaIndex).Text = strSettingInFile + + If frmMain.GetViewMode = vmdSingleView Then + ' Need to manually update the formula's formatting + frmMain.UpdateAndFormatFormula intNewFormulaIndex, True + End If + + ' Must assign value to rtfFormulaSingle to allow new formula button_click to work + frmMain.rtfFormulaSingle.Text = strSettingInFile + frmMain.rtfFormula(intNewFormulaIndex).Tag = FORMULA_CHANGED + frmMain.rtfFormulaSingle.Tag = FORMULA_CHANGED + End If + End If + blnMatched = True + End If + End If + + For intIndex = 0 To 9 + strIDStringToMatch = "FINDERMIN" & Trim(Str(intIndex)) + If strIDStringInFile = strIDStringToMatch Then + frmFinder.txtMin(intIndex).Text = strSettingInFile + blnMatched = True + End If + strIDStringToMatch = "FINDERMAX" & Trim(Str(intIndex)) + If strIDStringInFile = strIDStringToMatch Then + frmFinder.txtMax(intIndex).Text = strSettingInFile + blnMatched = True + End If + strIDStringToMatch = "FINDERCHECKELEMENTS" & Trim(Str(intIndex)) + If strIDStringInFile = strIDStringToMatch Then + frmFinder.chkElements(intIndex).value = lngSettingInFile + blnMatched = True + End If + strIDStringToMatch = "FINDERPERCENTVALUE" & Trim(Str(intIndex)) + If strIDStringInFile = strIDStringToMatch Then + frmFinder.txtPercent(intIndex).Text = strSettingInFile + blnMatched = True + End If + strIDStringToMatch = "FINDERCUSTOMWEIGHT" & Trim(Str(intIndex - 3)) + If strIDStringInFile = strIDStringToMatch Then + frmFinder.txtWeight(intIndex).Text = strSettingInFile + blnMatched = True + End If + If blnMatched Then Exit For + Next intIndex + + If Not blnMatched Then + Select Case strIDStringInFile + Case "AMINOACIDCONVERTONELETTER": frmAminoAcidConverter.txt1LetterSequence = strSettingInFile + Case "AMINOACIDCONVERTTHREELETTER": frmAminoAcidConverter.txt3LetterSequence = strSettingInFile + Case "AMINOACIDCONVERTSPACEONELETTER": frmAminoAcidConverter.chkSpaceEvery10.value = lngSettingInFile + Case "AMINOACIDCONVERTDASHTHREELETTER": frmAminoAcidConverter.chkSeparateWithDash.value = lngSettingInFile + + Case "MOLE/MASSWEIGHTSOURCE": SetDualOptionGroup frmMMConvert.optWeightSource, CInt(lngSettingInFile) + Case "MOLE/MASSCUSTOMMASS": frmMMConvert.txtCustomMass.Text = strSettingInFile + Case "MOLE/MASSACTION": frmMMConvert.cboAction.ListIndex = lngSettingInFile + Case "MOLE/MASSFROM": frmMMConvert.txtFromNum.Text = strSettingInFile + Case "MOLE/MASSFROMUNITS": frmMMConvert.cboFrom.ListIndex = lngSettingInFile + Case "MOLE/MASSDENSITY": frmMMConvert.txtDensity.Text = strSettingInFile + Case "MOLE/MASSTOUNITS": frmMMConvert.cboTo.ListIndex = lngSettingInFile + Case "MOLE/MASSVOLUME": frmMMConvert.txtVolume.Text = strSettingInFile + Case "MOLE/MASSVOLUMEUNITS": frmMMConvert.cboVolume.ListIndex = lngSettingInFile + Case "MOLE/MASSMOLARITY": frmMMConvert.txtConcentration.Text = strSettingInFile + Case "MOLE/MASSMOLARITYUNITS": frmMMConvert.cboConcentration.ListIndex = lngSettingInFile + + Case "MOLE/MASSLINKCONCENTRATIONS": frmMMConvert.chkLinkMolarities = lngSettingInFile + Case "MOLE/MASSLINKDILUTIONVOLUMEUNITS": frmMMConvert.chkLinkDilutionVolumeUnits = lngSettingInFile + + Case "MOLE/MASSDILUTIONMODE": frmMMConvert.cboDilutionMode.ListIndex = lngSettingInFile + Case "MOLE/MASSMOLARITYINITIAL": frmMMConvert.txtDilutionConcentrationInitial.Text = strSettingInFile + Case "MOLE/MASSMOLARITYINITIALUNITS": frmMMConvert.cboDilutionConcentrationInitial.ListIndex = lngSettingInFile + Case "MOLE/MASSVOLUMEINITIAL": frmMMConvert.txtStockSolutionVolume.Text = strSettingInFile + Case "MOLE/MASSVOLUMEINITIALUNITS": frmMMConvert.cboStockSolutionVolume.ListIndex = lngSettingInFile + Case "MOLE/MASSMOLARITYFINAL": frmMMConvert.txtDilutionConcentrationFinal.Text = strSettingInFile + Case "MOLE/MASSMOLARITYFINALUNITS": frmMMConvert.cboDilutionConcentrationFinal.ListIndex = lngSettingInFile + Case "MOLE/MASSVOLUMESOLVENT": frmMMConvert.txtDilutingSolventVolume.Text = strSettingInFile + Case "MOLE/MASSVOLUMESOLVENTUNITS": frmMMConvert.cboDilutingSolventVolume.ListIndex = lngSettingInFile + Case "MOLE/MASSVOLUMETOTAL": frmMMConvert.txtTotalVolume.Text = strSettingInFile + Case "MOLE/MASSVOLUMETOTALUNITS": frmMMConvert.cboTotalVolume.ListIndex = lngSettingInFile + + Case "VISCOSITYMECNPERCENTACETONTRILE": frmViscosityForMeCN.txtPercentAcetonitrile = strSettingInFile + Case "VISCOSITYMECNTEMPERATURE": frmViscosityForMeCN.txtTemperature = strSettingInFile + Case "VISCOSITYMECNTEMPERATUREUNITS": frmViscosityForMeCN.cboTemperatureUnits.ListIndex = lngSettingInFile + + Case "CALCULATOR": frmCalculator.rtfExpression.Text = strSettingInFile + + Case "IONPLOTCOLOR": frmIsotopicDistribution.lblPlotColor.BackColor = lngSettingInFile + Case "IONPLOTSHOWPLOT": frmIsotopicDistribution.chkPlotResults.value = lngSettingInFile + Case "IONPLOTTYPE" + ValidateValueLng lngSettingInFile, 0, 1, 1 ' ipmGaussian + frmIsotopicDistribution.cboPlotType.ListIndex = lngSettingInFile + Case "IONPLOTRESOLUTION" + ValidateValueLng lngSettingInFile, 1, 1000000000#, 5000 + frmIsotopicDistribution.txtEffectiveResolution = strSettingInFile + Case "IONPLOTRESOLUTIONMASS": frmIsotopicDistribution.txtEffectiveResolutionMass = strSettingInFile + Case "IONPLOTGAUSSIANQUALITY": frmIsotopicDistribution.txtGaussianQualityFactor = strSettingInFile + Case "IONCOMPARISONPLOTCOLOR": frmIsotopicDistribution.lblComparisonListPlotColor.BackColor = lngSettingInFile + Case "IONCOMPARISONPLOTTYPE" + ValidateValueLng lngSettingInFile, 0, 2, 0 ' ipmSticksToZero + frmIsotopicDistribution.cboComparisonListPlotType.ListIndex = lngSettingInFile + Case "IONCOMPARISONPLOTNORMALIZE": frmIsotopicDistribution.chkComparisonListNormalize.value = lngSettingInFile + + Case "FINDERACTION": SetDualOptionGroup frmFinder.optType, CInt(lngSettingInFile) + Case "FINDERMWT": frmFinder.txtMWT.Text = strSettingInFile + Case "FINDERPERCENTMAXWEIGHT": frmFinder.txtPercentMaxWeight.Text = strSettingInFile + Case "FINDERPPM": frmFinder.chkPpmMode.value = lngSettingInFile + Case "FINDERSHOWDELTAMASS": frmFinder.chkShowDeltaMass.value = lngSettingInFile + Case "FINDERWTTOLERANCE": frmFinder.txtWeightTolerance.Text = strSettingInFile + Case "FINDERPERCENTTOLERANCE": frmFinder.txtPercentTolerance.Text = strSettingInFile + Case "FINDERMAXHITS": frmFinder.txtHits.Text = strSettingInFile + Case "FINDERSORTRESULTS": frmFinderOptions.chkSort.value = lngSettingInFile + Case "FINDERSMARTH": frmFinderOptions.chkVerifyHydrogens.value = lngSettingInFile + Case "FINDERFINDCHARGE": frmFinderOptions.chkFindCharge.value = lngSettingInFile + frmFinderOptions.UpdateCheckBoxes + Case "FINDERFINDMTOZ": frmFinderOptions.chkFindMtoZ.value = lngSettingInFile + frmFinderOptions.UpdateCheckBoxes + Case "FINDERLIMITCHARGERANGE": frmFinderOptions.chkLimitChargeRange.value = lngSettingInFile + frmFinderOptions.UpdateCheckBoxes + Case "FINDERCHARGERANGEMIN": frmFinderOptions.txtChargeMin.Text = strSettingInFile + Case "FINDERCHARGERANGEMAX": frmFinderOptions.txtChargeMax.Text = strSettingInFile + Case "FINDERFINDTARGETMTOZ": frmFinderOptions.chkFindTargetMtoZ.value = lngSettingInFile + frmFinderOptions.UpdateCheckBoxes + Case "FINDERHIGHLIGHTTEXT": frmProgramPreferences.chkHighlightTextFields.value = lngSettingInFile + Case "FINDERAUTOBOUNDSSET": frmFinderOptions.chkAutoSetBounds.value = lngSettingInFile + Case "FINDERSORTMODE": + If dblSettingInFileValue <= frmFinderOptions.cboSortResults.ListCount - 1 Then + frmFinderOptions.cboSortResults.ListIndex = dblSettingInFileValue + End If + Case Else + If UCase(Left(strLineIn, 13)) = "CAPILLARYFLOW" Then + ParseCapillaryFlowSetting strIDStringInFile, strSettingInFile, intCapillaryFlowFileFormatVersion + ElseIf UCase(Left(strLineIn, 9)) = "FRAGMODEL" Or UCase(Left(strLineIn, 7)) = "IONPLOT" Then + ParseFragModelSetting InFileNum, strIDStringInFile, strSettingInFile + Else + If Not blnMatched Then + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End If + End If + End Select + End If + Else + If UCase(Left(strLineIn, 21)) = "FRAGMODELIONMATCHLIST" Then + ' Typically this line is read by frmFragmentationModelling.LoadIonListToMatch() + ' However, if no ions are present, this line won't be read + ' Simply ignore it + Else + If Not PossiblySkipCWSpectrumSection(strLineIn, InFileNum, blnSkipNextLineRead) Then + ' Not matched, error + ' Stop in IDE but ignore when compiled + Debug.Assert False + End If + End If + End If + End If + Loop Until EOF(InFileNum) + + Close InFileNum + + ' Load the CWSpectrum Options + frmFragmentationModelling.LoadCWSpectrumOptions strFilePath + + If eViewModeSaved = vmdSingleView Then frmMain.SetViewMode vmdSingleView + + ' Rematch the loaded ions in case txtAlignment is nonzero + ' Necessary since txtAlignment's value is set after the IonMatchList is Loaded + frmFragmentationModelling.AlignmentOffsetValidate + End If + +LoadValuesAndFormulasExit: + + ' Restore blnDelayUpdate on frmMMConvert + frmMMConvert.SetDelayUpdate False + Exit Sub + +LoadValuesAndFormulasErrorHandler: + Close InFileNum + ' Error Loading/Creating Values File + strMessage = LookupMessage(330) & " (" & strFilePath & "): " & Err.Description + strMessage = strMessage & vbCrLf & LookupMessage(340) & vbCrLf & LookupMessage(345) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + Resume LoadValuesAndFormulasExit + +End Sub + +Private Sub OutputToFile(OutFileNum As Integer, strMessage As String, Optional strMessage2 As String = "", Optional strMessage3 As String = "", Optional strMessage4 As String = "", Optional strMessage5 As String = "") + If Len(strMessage2) <= 12 Then + Print #OutFileNum, strMessage; Tab(9); strMessage2; Tab(30); strMessage3; Tab(40); strMessage4; Tab(50); strMessage5 + Else + Print #OutFileNum, strMessage; Tab(9); strMessage2; " "; strMessage3; " "; strMessage4; " "; strMessage5 + End If +End Sub + +Private Function ParseCapillaryFlowSetting(ByVal strIDStringInFile As String, ByVal strSettingInFile As String, ByRef intCapillaryFlowFileFormatVersion As Integer) As Boolean + ' Returns true if setting is found + Dim blnSettingFound As Boolean + Dim intSettingInFileValue As Integer, dblSettingInFileValue As Double + Dim lngIndex As Long + Dim strIDStringToMatch As String + +On Error GoTo ParseCapillaryFlowSettingErrorHandler + + If IsNumeric(strSettingInFile) Then + dblSettingInFileValue = CDblSafe(strSettingInFile) + intSettingInFileValue = CIntSafe(strSettingInFile) + Else + strSettingInFile = 0 + End If + + blnSettingFound = False + + For lngIndex = 0 To CapTextBoxMaxIndex + strIDStringToMatch = "CAPILLARYFLOWOPENTEXT" & Trim(Str(lngIndex)) + If strIDStringInFile = strIDStringToMatch Then + OpenCapVals.TextValues(lngIndex) = dblSettingInFileValue + blnSettingFound = True + End If + If Not blnSettingFound Then + strIDStringToMatch = "CAPILLARYFLOWPACKEDTEXT" & Trim(Str(lngIndex)) + If strIDStringInFile = strIDStringToMatch Then + PackedCapVals.TextValues(lngIndex) = dblSettingInFileValue + blnSettingFound = True + End If + End If + If blnSettingFound Then Exit For + Next lngIndex + + If Not blnSettingFound Then + For lngIndex = 0 To CapComboBoxMaxIndex + strIDStringToMatch = "CAPILLARYFLOWOPENCOMBO" & Trim(Str(lngIndex)) + blnSettingFound = ParseCapillaryFlowSettingCombo(lngIndex, strIDStringInFile, strIDStringToMatch, intSettingInFileValue, intCapillaryFlowFileFormatVersion, False) + + If Not blnSettingFound Then + strIDStringToMatch = "CAPILLARYFLOWPACKEDCOMBO" & Trim(Str(lngIndex)) + blnSettingFound = ParseCapillaryFlowSettingCombo(lngIndex, strIDStringInFile, strIDStringToMatch, intSettingInFileValue, intCapillaryFlowFileFormatVersion, True) + End If + + If blnSettingFound Then Exit For + Next lngIndex + End If + + If Not blnSettingFound Then + ' Assume true for now + blnSettingFound = True + + Select Case strIDStringInFile + Case "CAPILLARYFLOWMODE": frmCapillaryCalcs.cboCapillaryType.ListIndex = intSettingInFileValue + Case "CAPILLARYFLOWCOMPUTATIONTYPE": gCapFlowComputationTypeSave = intSettingInFileValue + Case "CAPILLARYFLOWLINKFLOWRATE": gCapFlowLinkMassRateFlowRateSave = intSettingInFileValue + Case "CAPILLARYFLOWLINKLINEARVELOCITY": gCapFlowLinkBdLinearVelocitySave = intSettingInFileValue + Case "CAPILLARYFLOWSHOWPEAKBROADENINGSAVE": gCapFlowShowPeakBroadeningSave = intSettingInFileValue + Case "CAPILLARYFLOWWEIGHTSOURCE": SetDualOptionGroup frmCapillaryCalcs.optWeightSource, intSettingInFileValue + Case "CAPILLARYFLOWCUSTOMMASS": frmCapillaryCalcs.txtCustomMass.Text = strSettingInFile + Case "CAPILLARYFLOWFILEFORMATVERSION": intCapillaryFlowFileFormatVersion = intSettingInFileValue + Case Else + ' Not found, set back to false + blnSettingFound = False + End Select + End If + + ParseCapillaryFlowSetting = blnSettingFound + Exit Function + +ParseCapillaryFlowSettingErrorHandler: + GeneralErrorHandler "FileIOFunctions|ParseCapillaryFlowSetting", Err.Number, Err.Description + +End Function + +Private Function ParseCapillaryFlowSettingCombo(lngComboBoxIndex As Long, strIDStringInFile As String, strIDStringToMatch As String, intSettingInFileValue As Integer, intCapillaryFlowFileFormatVersion As Integer, blnPackedCombo As Boolean) As Boolean + Dim lngTargetIndex As Long + Dim intTargetSetting As Integer + +On Error GoTo ParseCapillaryFlowSettingComboErrorHandler + + If strIDStringInFile = strIDStringToMatch Then + lngTargetIndex = lngComboBoxIndex + intTargetSetting = intSettingInFileValue + + If intCapillaryFlowFileFormatVersion < CAP_FLOW_FILE_VERSIONTWO Then + ' Old file version, may need to use a different save index or adjust SettingInFileValue + Select Case lngComboBoxIndex + Case 0 ' No conversion needed + Case 1: lngTargetIndex = lngComboBoxIndex + 1: intTargetSetting = intSettingInFileValue + 3 + Case 2: lngTargetIndex = lngComboBoxIndex + 1 + Case 3 To 12: lngTargetIndex = lngComboBoxIndex + 2 + Case 13: lngTargetIndex = lngComboBoxIndex + 3: intTargetSetting = intSettingInFileValue + 3 + Case Else + ' This is unexpected + Debug.Assert False + End Select + End If + + If Not blnPackedCombo Then + OpenCapVals.ComboValues(lngTargetIndex) = intTargetSetting + Else + PackedCapVals.ComboValues(lngTargetIndex) = intTargetSetting + End If + + ParseCapillaryFlowSettingCombo = True + Else + ParseCapillaryFlowSettingCombo = False + End If + + Exit Function + +ParseCapillaryFlowSettingComboErrorHandler: + GeneralErrorHandler "FileIOFunctions|ParseCapillaryFlowSettingCombo", Err.Number, Err.Description + +End Function + +Private Function ParseFragModelSetting(SeqFileNum As Integer, strIDStringInFile As String, strSettingInFile As String) As Boolean + ' Returns true if setting is found + + Const MODIFICATION_SYMBOL_KEY = "FRAGMODELMODIFICATIONSYMBOL" + Const MAX_PARSE_COUNT = 4 + + Dim blnSettingFound As Boolean, blnSuccess As Boolean + Dim lngSettingInFile As Long + Dim lngModSymbolIndex As Long + Dim lngParseCount As Long + Dim strParsedVals(MAX_PARSE_COUNT) As String + Dim strSymbol As String, strComment As String + Dim dblMass As Double, blnIndicatesPhosphorylation As Boolean + +On Error GoTo ParseFragModelSettingErrorHandler + + If IsNumeric(strSettingInFile) Then + lngSettingInFile = CLngSafe(strSettingInFile) + Else + lngSettingInFile = 0 + End If + + blnSettingFound = True + + Select Case strIDStringInFile + Case "FRAGMODELNOTATIONMODE": frmFragmentationModelling.cboNotation.ListIndex = lngSettingInFile + Case "FRAGMODELSEQUENCE": frmFragmentationModelling.txtSequence = strSettingInFile + Case "FRAGMODELNTERMINUS": frmFragmentationModelling.cboNTerminus.ListIndex = lngSettingInFile + Case "FRAGMODELCTERMINUS": frmFragmentationModelling.cboCTerminus.ListIndex = lngSettingInFile + Case "FRAGMODELIONTYPE0": frmFragmentationModelling.chkIonType(0) = lngSettingInFile + Case "FRAGMODELIONTYPE1": frmFragmentationModelling.chkIonType(1) = lngSettingInFile + Case "FRAGMODELIONTYPE2": frmFragmentationModelling.chkIonType(2) = lngSettingInFile + Case "FRAGMODELIONSTOMODIFY0": frmFragmentationModelling.lstIonsToModify.Selected(0) = lngSettingInFile + Case "FRAGMODELIONSTOMODIFY1": frmFragmentationModelling.lstIonsToModify.Selected(1) = lngSettingInFile + Case "FRAGMODELIONSTOMODIFY2": frmFragmentationModelling.lstIonsToModify.Selected(2) = lngSettingInFile + Case "FRAGMODELWATERLOSS": frmFragmentationModelling.chkWaterLoss = lngSettingInFile + Case "FRAGMODELAMMONIALOSS": frmFragmentationModelling.chkAmmoniaLoss = lngSettingInFile + Case "FRAGMODELPHOSPHATELOSS": frmFragmentationModelling.chkPhosphateLoss = lngSettingInFile + Case "FRAGMODELDOUBLECHARGE": frmFragmentationModelling.chkDoubleCharge = lngSettingInFile + Case "FRAGMODELDOUBLECHARGETHRESHOLD": frmFragmentationModelling.cboDoubleCharge.ListIndex = lngSettingInFile + Case "FRAGMODELPRECURSORIONREMOVE": frmFragmentationModelling.chkRemovePrecursorIon = lngSettingInFile + Case "FRAGMODELPRECURSORIONMASS": frmFragmentationModelling.txtPrecursorIonMass = strSettingInFile + Case "FRAGMODELPRECURSORIONMASSWINDOW": frmFragmentationModelling.txtPrecursorMassWindow = strSettingInFile + Case "FRAGMODELIONMATCHWINDOW": frmFragmentationModelling.txtIonMatchingWindow = strSettingInFile + Case "FRAGMODELIONINTENSITY0": frmIonMatchOptions.txtIonIntensity(0) = strSettingInFile + Case "FRAGMODELIONINTENSITY1": frmIonMatchOptions.txtIonIntensity(1) = strSettingInFile + Case "FRAGMODELIONINTENSITY2": frmIonMatchOptions.txtIonIntensity(2) = strSettingInFile + Case "FRAGMODELSHOULDERINTENSITY": frmIonMatchOptions.txtBYIonShoulders = strSettingInFile + Case "FRAGMODELNEUTRALLOSSINTENSITY": frmIonMatchOptions.txtNeutralLosses = strSettingInFile + Case "FRAGMODELGROUPIONS": frmIonMatchOptions.chkGroupSimilarIons = lngSettingInFile + Case "FRAGMODELGROUPIONSMASSWINDOW": frmIonMatchOptions.txtGroupIonMassWindow = strSettingInFile + Case "FRAGMODELNORMALIZEDINTENSITY": frmIonMatchOptions.txtNormalizedIntensity = strSettingInFile + Case "FRAGMODELNORMALIZATIONIONSUSECOUNT": frmIonMatchOptions.txtIonCountToUse = strSettingInFile + Case "FRAGMODELNORMALIZATIONMASSREGIONS": frmIonMatchOptions.txtMassRegions = strSettingInFile + Case "FRAGMODELLABELMAINIONS": frmIonMatchOptions.chkFragSpecLabelMainIons = strSettingInFile + Case "FRAGMODELLABELOTHERIONS": frmIonMatchOptions.chkFragSpecLabelOtherIons = strSettingInFile + Case "FRAGMODELEMPHASIZEPROLINEYIONS": frmIonMatchOptions.chkFragSpecEmphasizeProlineYIons = strSettingInFile + Case "FRAGMODELPLOTPREDICTEDSPECTRUMINVERTED": frmIonMatchOptions.chkPlotSpectrumInverted.value = lngSettingInFile + Case "FRAGMODELAUTOLABELMASS": frmIonMatchOptions.chkAutoLabelMass.value = lngSettingInFile + Case "FRAGMODELFRAGSPECTRUMCOLOR": frmIonMatchOptions.lblFragSpectrumColor.BackColor = lngSettingInFile + Case "FRAGMODELMATCHINGIONDATACOLOR": frmIonMatchOptions.lblMatchingIonDataColor.BackColor = lngSettingInFile + Case "FRAGMODELIONMATCHLIST" + ' An ion match list is present in the column + ' Read numbers in list until FragModelIonMatchListEnd is found (or a non-numeric line is found) + ' Store results in IonMatchList + blnSuccess = frmFragmentationModelling.LoadIonListToMatch(SeqFileNum, CLngSafe(strSettingInFile)) + If blnSuccess Then + frmFragmentationModelling.UpdateIonMatchListWrapper + End If + Case "FRAGMODELIONMATCHLISTCAPTION": frmFragmentationModelling.SetIonMatchListCaption strSettingInFile + + Case "FRAGMODELIONALIGNMENT": frmFragmentationModelling.txtAlignment = strSettingInFile + Case Else + If Left(strIDStringInFile, Len(MODIFICATION_SYMBOL_KEY)) = MODIFICATION_SYMBOL_KEY Then + lngModSymbolIndex = CLngSafe(Mid(strIDStringInFile, Len(MODIFICATION_SYMBOL_KEY) + 1)) + If lngModSymbolIndex > 0 Then + lngParseCount = ParseString(strSettingInFile, strParsedVals(), MAX_PARSE_COUNT, ",") + + If lngParseCount >= 3 Then + strSymbol = strParsedVals(1) + dblMass = CDblSafe(strParsedVals(2)) + blnIndicatesPhosphorylation = CBoolSafe(strParsedVals(3)) + If lngParseCount >= 4 Then + strComment = strParsedVals(4) + Else + strComment = "" + End If + + If Len(strSymbol) > 0 Then + If lngModSymbolIndex = 1 Then + ' Clear any existing modification symbols + objMwtWin.Peptide.RemoveAllModificationSymbols + End If + + objMwtWin.Peptide.SetModificationSymbol strSymbol, dblMass, blnIndicatesPhosphorylation, strComment + End If + End If + End If + Else + blnSettingFound = False + End If + End Select + + ParseFragModelSetting = blnSettingFound + + Exit Function + +ParseFragModelSettingErrorHandler: + GeneralErrorHandler "FileIOFunctions|ParseFragModelSetting", Err.Number, Err.Description + +End Function + +Private Function PossiblySkipCWSpectrumSection(ByRef strCurrentLine As String, ByVal InFileNum As Integer, ByRef blnSkipNextLineRead As Boolean) As Boolean + ' If strCurrentLine is a valid section header from CWSpectrum Options, then + ' reads all of the subsequent lines belonging to the section + ' Returns True if a valid section header was found, false otherwise + + Dim blnValidHeaderFound As Boolean + + blnSkipNextLineRead = False + + If InFileNum < 0 Then + PossiblySkipCWSpectrumSection = False + Exit Function + End If + + If UCase(Left(strCurrentLine, 19)) = "[PLOTOPTIONS_SERIES" Or _ + UCase(strCurrentLine) = "[GLOBALPLOTOPTIONS]" Then + + blnValidHeaderFound = True + + ' Ignore this entire section + Do + Line Input #InFileNum, strCurrentLine + strCurrentLine = Trim(strCurrentLine) + If Len(strCurrentLine) = 0 Then + Exit Do + ElseIf Left(strCurrentLine, 1) = "[" Or InStr(strCurrentLine, "=") <= 0 Then + blnSkipNextLineRead = True + Exit Do + End If + Loop Until EOF(InFileNum) + End If + + PossiblySkipCWSpectrumSection = blnValidHeaderFound + +End Function + +Public Sub SaveAbbreviations(Optional blnSortAbbreviations As Boolean = True, Optional blnUseMessageBoxForErrors As Boolean = False, Optional ByRef strBackupFilePath As String) + + Dim lngIndex As Long + Dim strSymbol As String, strFormula As String, strOneLetterSymbol As String, strComment As String + Dim blnIsAminoAcid As Boolean + Dim sngCharge As Single + Dim lngError As Long + + Dim strFilePath As String + Dim OutFileNum As Integer + +On Error GoTo SaveAbbreviationsErrorHandler + + If blnSortAbbreviations Then + ' Sort the abbreviations before we save them + objMwtWin.SortAbbreviations + End If + + If gBlnWriteFilesOnDrive Then + + strFilePath = BuildPath(gCurrentPath, ABBREVIATIONS_FILENAME) + strBackupFilePath = BackupFile(strFilePath) + + OutFileNum = FreeFile() + Open strFilePath For Output As #OutFileNum + + ' Intro + Print #OutFileNum, COMMENT_CHAR & " Abbreviations File for MWTWIN program (v" & PROGRAM_VERSION & ")" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, COMMENT_CHAR & " Comments may be added by preceding with a semicolon" + Print #OutFileNum, COMMENT_CHAR & " Two group headings must exist: [AMINO ACIDS] and [ABBREVIATIONS]" + Print #OutFileNum, COMMENT_CHAR & " Abbreviations may be added; simply type the abbreviation and molecular" + Print #OutFileNum, COMMENT_CHAR & " formula under the appropriate column in either section" + Print #OutFileNum, COMMENT_CHAR & " Note: Only the first letter of an abbreviation is allowed to be capitalized" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, COMMENT_CHAR & " The abbreviations in the Amino Acid section are treated as extended level" + Print #OutFileNum, COMMENT_CHAR & " abbreviations: they are only recognized when extended abbreviations are on" + Print #OutFileNum, COMMENT_CHAR & " If this file becomes corrupted, the MWTWIN program will inform the user" + Print #OutFileNum, COMMENT_CHAR & " and ignore incorrect lines" + Print #OutFileNum, COMMENT_CHAR & " If this file becomes deleted, the MWTWIN program will create a new file" + Print #OutFileNum, COMMENT_CHAR & " with the default abbreviations" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, COMMENT_CHAR & " Default Amino Acids are in their ionic form" + Print #OutFileNum, COMMENT_CHAR & " Amino Acid abbreviation names may be up to 6 characters long" + + ' Amino Acids + Print #OutFileNum, "[AMINO ACIDS]" + + For lngIndex = 1 To objMwtWin.GetAbbreviationCount + lngError = objMwtWin.GetAbbreviation(lngIndex, strSymbol, strFormula, sngCharge, blnIsAminoAcid, strOneLetterSymbol, strComment) + If blnIsAminoAcid Then + OutputToFile OutFileNum, strSymbol, strFormula, CStr(sngCharge), strOneLetterSymbol, COMMENT_CHAR & " " & strComment + End If + Next lngIndex + + ' Other Abbreviations + Print #OutFileNum, "" + Print #OutFileNum, COMMENT_CHAR & " Normal abbreviation names may be up to 6 characters long" + Print #OutFileNum, "[ABBREVIATIONS]" + + For lngIndex = 1 To objMwtWin.GetAbbreviationCount + lngError = objMwtWin.GetAbbreviation(lngIndex, strSymbol, strFormula, sngCharge, blnIsAminoAcid, strOneLetterSymbol, strComment) + If Not blnIsAminoAcid Then + OutputToFile OutFileNum, strSymbol, strFormula, CStr(sngCharge), strOneLetterSymbol, COMMENT_CHAR & " " & strComment + End If + Next lngIndex + + Close #OutFileNum + End If + + Exit Sub + +SaveAbbreviationsErrorHandler: + Debug.Assert False + Debug.Print "Error in SaveAbbreviations: " & Err.Description + AddToIntro LookupMessage(100) & ": " & Err.Description, blnUseMessageBoxForErrors, True + +End Sub + +Public Sub SaveCapillaryFlowInfo(Optional intCurrentFileNumber As Integer = 0) + ' Saves capillary flow info to a file + ' Can also save the loaded ion list to the .Seq file + ' + ' If intCurrentFileNumber is not specified then creates a new file + ' Otherwise, saves to the file given by intCurrentFileNumber + + Dim strInfoFilePath As String, strMessage As String + Dim lngIndex As Long, strLineOut As String + Dim InfoFileNum As Integer + + If intCurrentFileNumber = 0 Then + ' 1550 = Capillary Flow Info Files, 1555 = .cap + strInfoFilePath = SelectFile(frmCapillaryCalcs.hwnd, "Save File", gLastFileOpenSaveFolder, True, "", ConstructFileDialogFilterMask(LookupMessage(1550), LookupMessage(1555)), 1) + If Len(strInfoFilePath) = 0 Then + ' No file selected (or other error) + Exit Sub + End If + End If + + On Error GoTo SaveFlowProblem + + If intCurrentFileNumber = 0 Then + ' Open the file for output + InfoFileNum = FreeFile() + Open strInfoFilePath For Output As #InfoFileNum + Else + InfoFileNum = intCurrentFileNumber + End If + + With frmCapillaryCalcs + If intCurrentFileNumber = 0 Then + Print #InfoFileNum, COMMENT_CHAR & " Molecular Weight Calculator Capillary Flow Information File" + End If + Print #InfoFileNum, "CapillaryFlowFileFormatVersion=" & Trim(CAP_FLOW_FILE_VERSIONTWO) + Print #InfoFileNum, "CapillaryFlowMode=" & Trim(frmCapillaryCalcs.cboCapillaryType.ListIndex) + Print #InfoFileNum, "CapillaryFlowComputationType=" & CStr(gCapFlowComputationTypeSave) + Print #InfoFileNum, "CapillaryFlowLinkFlowRate=" & CStr(gCapFlowLinkMassRateFlowRateSave) + Print #InfoFileNum, "CapillaryFlowLinkLinearVelocity=" & CStr(gCapFlowLinkBdLinearVelocitySave) + Print #InfoFileNum, "CapillaryFlowShowPeakBroadeningSave=" & CStr(gCapFlowShowPeakBroadeningSave) + + strLineOut = "CapillaryFlowWeightSource=" + If frmCapillaryCalcs.optWeightSource(0) = True Then + strLineOut = strLineOut & "0" + Else + strLineOut = strLineOut & "1" + End If + Print #InfoFileNum, strLineOut + + Print #InfoFileNum, "CapillaryFlowCustomMass=" & Trim(frmCapillaryCalcs.txtCustomMass) + + For lngIndex = 0 To CapTextBoxMaxIndex + Print #InfoFileNum, "CapillaryFlowOpenText" & CStr(lngIndex) & "=" & CStr(OpenCapVals.TextValues(lngIndex)) + Print #InfoFileNum, "CapillaryFlowPackedText" & CStr(lngIndex) & "=" & CStr(PackedCapVals.TextValues(lngIndex)) + Next lngIndex + + For lngIndex = 0 To CapComboBoxMaxIndex + Print #InfoFileNum, "CapillaryFlowOpenCombo" & CStr(lngIndex) & "=" & CStr(OpenCapVals.ComboValues(lngIndex)) + Print #InfoFileNum, "CapillaryFlowPackedCombo" & CStr(lngIndex) & "=" & CStr(PackedCapVals.ComboValues(lngIndex)) + Next lngIndex + End With + + If intCurrentFileNumber = 0 Then + Close InfoFileNum + End If + + Exit Sub + +SaveFlowProblem: + Close + strMessage = LookupMessage(330) & ": " & strInfoFilePath + strMessage = strMessage & vbCrLf & Err.Description + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub SaveDefaultOptions() + Dim strMessage As String, strLineOut As String, strFilePath As String + Dim FinderWeightModeWarn As Integer + Dim OutFileNum As Integer + +On Error GoTo SaveDefaultOptionsErrorHandler + + If gBlnWriteFilesOnDrive Then + strFilePath = BuildPath(gCurrentPath, INI_FILENAME) + + OutFileNum = FreeFile() + Open strFilePath For Output As #OutFileNum + + ' Intro + Print #OutFileNum, COMMENT_CHAR & " Options File for MWTWIN Program (v" & PROGRAM_VERSION & ")" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, COMMENT_CHAR & " File Automatically Created -- Select Save Options As Defaults in Preferences under the Options Menu" + Print #OutFileNum, COMMENT_CHAR + + strLineOut = "View=" + If frmMain.GetViewMode() = vmdMultiView Then + strLineOut = strLineOut & "0" + Else + strLineOut = strLineOut & "1" + End If + + Print #OutFileNum, strLineOut + + With frmProgramPreferences + strLineOut = "Convert=" + If .optConvertType(0).value = True Then + strLineOut = strLineOut & "0" + ElseIf .optConvertType(1).value = True Then + strLineOut = strLineOut & "1" + Else + strLineOut = strLineOut & "2" + End If + Print #OutFileNum, strLineOut + + strLineOut = "Abbrev=" + If .optAbbrevType(0).value = True Then + strLineOut = strLineOut & "0" + ElseIf .optAbbrevType(1).value = True Then + strLineOut = strLineOut & "1" + Else + strLineOut = strLineOut & "2" + End If + Print #OutFileNum, strLineOut + + strLineOut = "StdDev=" + If .optStdDevType(0).value = True Then + strLineOut = strLineOut & "0" + ElseIf .optStdDevType(1).value = True Then + strLineOut = strLineOut & "1" + ElseIf .optStdDevType(2).value = True Then + strLineOut = strLineOut & "2" + Else + strLineOut = strLineOut & "3" + End If + Print #OutFileNum, strLineOut + + Print #OutFileNum, "Caution=" & CheckBoxToIntegerString(.chkShowCaution) + + Print #OutFileNum, "Advance=" & CheckBoxToIntegerString(.chkAdvanceOnCalculate) + + Print #OutFileNum, "Charge=" & CheckBoxToIntegerString(.chkComputeCharge) + + Print #OutFileNum, "QuickSwitch=" & CheckBoxToIntegerString(.chkShowQuickSwitch) + + Print #OutFileNum, "Font=" & objMwtWin.RtfFontName + Print #OutFileNum, "FontSize=" & objMwtWin.RtfFontSize + + strLineOut = "ExitConfirm=" + If .optExitConfirmation(exmEscapeKeyConfirmExit).value = True Then + strLineOut = strLineOut & "0" + ElseIf .optExitConfirmation(exmEscapeKeyDoNotConfirmExit).value = True Then + strLineOut = strLineOut & "1" + ElseIf .optExitConfirmation(exmIgnoreEscapeKeyConfirmExit).value = True Then + strLineOut = strLineOut & "2" + Else + strLineOut = strLineOut & "3" + End If + Print #OutFileNum, strLineOut + + Print #OutFileNum, "ToolTips=" & CheckBoxToIntegerString(.chkShowToolTips) + + Print #OutFileNum, "HideInactiveForms=" & CheckBoxToIntegerString(.chkHideInactiveForms) + + Print #OutFileNum, "AutoSaveValues=" & CheckBoxToIntegerString(.chkAutosaveValues) + + Print #OutFileNum, "BracketsAsParentheses=" & CheckBoxToIntegerString(.chkBracketsAsParentheses) + + Print #OutFileNum, "AutoCopyCurrentMWT=" & CheckBoxToIntegerString(.chkAutoCopyCurrentMWT) + + ' It is important that this line be present after the Hide Inactive program windows and Exit Program behavior options + Print #OutFileNum, "StartupModule=" & frmProgramPreferences.cboStartupModule.ListIndex + + strLineOut = "MaximumFormulasToShow=" + strLineOut = strLineOut & FormatMaximumFormulasToShowString() + Print #OutFileNum, strLineOut + + If cChkBox(.chkAlwaysSwitchToIsotopic) Then + FinderWeightModeWarn = 1 + ElseIf cChkBox(.chkNeverShowFormulaFinderWarning) Then + FinderWeightModeWarn = -1 + Else + FinderWeightModeWarn = 0 + End If + + Print #OutFileNum, "FinderWeightModeWarn=" & FinderWeightModeWarn + Print #OutFileNum, "FinderBoundedSearch=" & frmFinderOptions.cboSearchType.ListIndex + Print #OutFileNum, "Language=" & gCurrentLanguage + Print #OutFileNum, "LanguageFile=" & gCurrentLanguageFileName + Print #OutFileNum, "LastOpenSaveFolder=" & gLastFileOpenSaveFolder + End With + + Close OutFileNum + + frmMain.lblStatus.ForeColor = vbWindowText + frmMain.lblStatus.Caption = LookupLanguageCaption(11930, "Default options saved.") + Else + frmMain.lblStatus.ForeColor = vbWindowText + frmMain.lblStatus.Caption = LookupLanguageCaption(11935, "Default options NOT saved since /X command line option was used.") + End If + + Exit Sub + +SaveDefaultOptionsErrorHandler: + Close OutFileNum + strMessage = LookupMessage(360) & " (" & strFilePath & "): " & Err.Description + strMessage = strMessage & vbCrLf & LookupMessage(345) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub SaveElements(Optional ByRef strBackupFilePath As String) + ' Saves the elements to the default element file + ' Returns the backup file path byref in strBackupFilePath + + Dim strFilePath As String + Dim OutFileNum As Integer + +On Error GoTo SaveElementsErrorHandler + + If gBlnWriteFilesOnDrive Then + strFilePath = BuildPath(gCurrentPath, ELEMENTS_FILENAME) + strBackupFilePath = BackupFile(strFilePath) + + OutFileNum = FreeFile() + Open strFilePath For Output As #OutFileNum + + SaveElementsWork OutFileNum + gElementWeightTypeInFile = objMwtWin.GetElementMode + + Close OutFileNum + End If + + Exit Sub + +SaveElementsErrorHandler: + Close OutFileNum + AddToIntro LookupMessage(320) & " (" & strFilePath & "): " & Err.Description + +End Sub + +Private Sub SaveElementsWork(OutFileNum As Integer) + Dim intIndex As Integer + Dim strSymbol As String, dblMass As Double, dblUncertainty As Double + Dim sngCharge As Single, intIsotopeCount As Integer + Dim lngError As Long + + ' Intro + Print #OutFileNum, COMMENT_CHAR & " Elements File for MWTWIN program (v" & PROGRAM_VERSION & ")" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, COMMENT_CHAR & " Comments may be added by preceding with a semicolon" + Print #OutFileNum, COMMENT_CHAR & " The heading [ELEMENTWEIGHTTYPE] 1 signifies that Average Elemental Weights are" + Print #OutFileNum, COMMENT_CHAR & " being used while [ELEMENTWEIGHTTYPE] 2 signifies the use of Isotopic Weights" + Print #OutFileNum, COMMENT_CHAR & " and [ELEMENTWEIGHTTYPE] 3 signifies the use of Integer Weights" + Print #OutFileNum, COMMENT_CHAR & " The group heading [ELEMENTS] must exist to signify the start of the elements" + Print #OutFileNum, COMMENT_CHAR & " Elemental values may be changed, but new elements may not be added" + Print #OutFileNum, COMMENT_CHAR & " If you wish to add new elements, simply add them as abbreviations" + Print #OutFileNum, COMMENT_CHAR & " If this file becomes deleted, the MWTWIN program will create a new file" + Print #OutFileNum, COMMENT_CHAR & " with the default values" + Print #OutFileNum, COMMENT_CHAR & " Uncertainties from CRC Handbook of Chemistry and Physics" + Print #OutFileNum, COMMENT_CHAR & " For Radioactive elements, the most stable isotope is NOT used;" + Print #OutFileNum, COMMENT_CHAR & " instead, an average Mol. Weight is used, just like with other elements." + Print #OutFileNum, COMMENT_CHAR & " Data obtained from the Perma-Chart Science Series periodic table, 1993." + Print #OutFileNum, COMMENT_CHAR & " Uncertainties from CRC Handoobk of Chemistry and Physics, except for" + Print #OutFileNum, COMMENT_CHAR & " Radioactive elements, where uncertainty was estimated to be .n5 where" + Print #OutFileNum, COMMENT_CHAR & " n represents the number digits after the decimal point but before the last" + Print #OutFileNum, COMMENT_CHAR & " number of the molecular weight." + Print #OutFileNum, COMMENT_CHAR & " For example, for No, MW = 259.1009 (±0.0005)" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, "[ELEMENTWEIGHTTYPE] " & objMwtWin.GetElementMode + Print #OutFileNum, COMMENT_CHAR & " The values signify:" + Print #OutFileNum, COMMENT_CHAR & " Weight Uncertainty Charge" + + ' The Elements + Print #OutFileNum, "[ELEMENTS]" + + For intIndex = 1 To objMwtWin.GetElementCount + lngError = objMwtWin.GetElement(intIndex, strSymbol, dblMass, dblUncertainty, sngCharge, intIsotopeCount) + Debug.Assert lngError = 0 + + Print #OutFileNum, strSymbol; Tab(8); dblMass; Tab(25); dblUncertainty; Tab(45); sngCharge + Next intIndex + +End Sub + +Public Sub SaveSequenceInfo(IonMatchList() As Double, IonMatchListCount As Long, strIonMatchListCaption As String, Optional intCurrentFileNumber As Integer = 0) + ' Saves Fragmentation Modelling sequence info to a file + ' Can also save the loaded ion list to the .Seq file + ' + ' If intCurrentFileNumber is not specified then creates a new file + ' Otherwise, saves to the file given by intCurrentFileNumber + + Dim strSequenceFilePath As String, strMessage As String + Dim lngIndex As Long + Dim SeqFileNum As Integer + Dim lngModificationSymbolCount As Long + Dim lngErrorID As Long + Dim strModSymbol As String, strComment As String + Dim dblModMass As Double + Dim blnIndicatesPhosphorylation As Boolean + + If intCurrentFileNumber = 0 Then + ' 1530 = Sequence Files, 1535 = .seq + strSequenceFilePath = SelectFile(frmFragmentationModelling.hwnd, "Select File", gLastFileOpenSaveFolder, True, "", ConstructFileDialogFilterMask(LookupMessage(1530), LookupMessage(1535)), 1) + If Len(strSequenceFilePath) = 0 Then + ' No file selected (or other error) + Exit Sub + End If + End If + +On Error GoTo SaveSequenceInfoErrorHandler + + If intCurrentFileNumber = 0 Then + ' Open the file for output + SeqFileNum = FreeFile() + Open strSequenceFilePath For Output As #SeqFileNum + Print #SeqFileNum, COMMENT_CHAR & " Molecular Weight Calculator Sequence Information File" + Else + SeqFileNum = intCurrentFileNumber + End If + + ' Save the currently defined modification symbols + lngModificationSymbolCount = objMwtWin.Peptide.GetModificationSymbolCount + Print #SeqFileNum, "FragModelModificationSymbolsCount=" & lngModificationSymbolCount + For lngIndex = 1 To lngModificationSymbolCount + lngErrorID = objMwtWin.Peptide.GetModificationSymbol(lngIndex, strModSymbol, dblModMass, blnIndicatesPhosphorylation, strComment) + Debug.Assert lngErrorID = 0 + + Print #SeqFileNum, "FragModelModificationSymbol" & Trim(lngIndex) & "=" & strModSymbol & "," & CStr(dblModMass) & "," & CStr(blnIndicatesPhosphorylation) & "," & strComment + Next lngIndex + + With frmFragmentationModelling + Print #SeqFileNum, "FragModelNotationMode=" & .cboNotation.ListIndex + ' Make sure no carriage returns are present in .txtSequence + Print #SeqFileNum, "FragModelSequence=" & Trim(Replace(.txtSequence, vbCrLf, " ")) + Print #SeqFileNum, "FragModelNTerminus=" & .cboNTerminus.ListIndex + Print #SeqFileNum, "FragModelCTerminus=" & .cboCTerminus.ListIndex + Print #SeqFileNum, "FragModelIonType0=" & CheckBoxToIntegerString(.chkIonType(0)) + Print #SeqFileNum, "FragModelIonType1=" & CheckBoxToIntegerString(.chkIonType(1)) + Print #SeqFileNum, "FragModelIonType2=" & CheckBoxToIntegerString(.chkIonType(2)) + Print #SeqFileNum, "FragModelIonsToModify0=" & Abs(CIntSafe(.lstIonsToModify.Selected(0))) + Print #SeqFileNum, "FragModelIonsToModify1=" & Abs(CIntSafe(.lstIonsToModify.Selected(1))) + Print #SeqFileNum, "FragModelIonsToModify2=" & Abs(CIntSafe(.lstIonsToModify.Selected(2))) + Print #SeqFileNum, "FragModelWaterLoss=" & CheckBoxToIntegerString(.chkWaterLoss) + Print #SeqFileNum, "FragModelAmmoniaLoss=" & CheckBoxToIntegerString(.chkAmmoniaLoss) + Print #SeqFileNum, "FragModelPhosphateLoss=" & CheckBoxToIntegerString(.chkPhosphateLoss) + Print #SeqFileNum, "FragModelDoubleCharge=" & CheckBoxToIntegerString(.chkDoubleCharge) + Print #SeqFileNum, "FragModelDoubleChargeThreshold=" & .cboDoubleCharge.ListIndex + Print #SeqFileNum, "FragModelPrecursorIonRemove=" & CheckBoxToIntegerString(.chkRemovePrecursorIon) + Print #SeqFileNum, "FragModelPrecursorIonMass=" & .txtPrecursorIonMass + Print #SeqFileNum, "FragModelPrecursorIonMassWindow=" & .txtPrecursorMassWindow + Print #SeqFileNum, "FragModelIonMatchWindow=" & .txtIonMatchingWindow + End With + + With frmIonMatchOptions + Print #SeqFileNum, "FragModelIonIntensity0=" & .txtIonIntensity(0) + Print #SeqFileNum, "FragModelIonIntensity1=" & .txtIonIntensity(1) + Print #SeqFileNum, "FragModelIonIntensity2=" & .txtIonIntensity(2) + Print #SeqFileNum, "FragModelShoulderIntensity=" & .txtBYIonShoulders + Print #SeqFileNum, "FragModelNeutralLossIntensity=" & .txtNeutralLosses + Print #SeqFileNum, "FragModelGroupIons=" & CheckBoxToIntegerString(.chkGroupSimilarIons) + Print #SeqFileNum, "FragModelGroupIonsMassWindow=" & .txtGroupIonMassWindow + Print #SeqFileNum, "FragModelNormalizedIntensity=" & .txtNormalizedIntensity + Print #SeqFileNum, "FragModelNormalizationIonsUseCount=" & .txtIonCountToUse + Print #SeqFileNum, "FragModelNormalizationMassRegions=" & .txtMassRegions + Print #SeqFileNum, "FragModelLabelMainIons=" & CheckBoxToIntegerString(.chkFragSpecLabelMainIons) + Print #SeqFileNum, "FragModelLabelOtherIons=" & CheckBoxToIntegerString(.chkFragSpecLabelOtherIons) + Print #SeqFileNum, "FragModelEmphasizeProlineYIons=" & CheckBoxToIntegerString(.chkFragSpecEmphasizeProlineYIons) + Print #SeqFileNum, "FragModelPlotPredictedSpectrumInverted=" & CheckBoxToIntegerString(.chkPlotSpectrumInverted) + Print #SeqFileNum, "FragModelAutoLabelMass=" & CheckBoxToIntegerString(.chkAutoLabelMass) + Print #SeqFileNum, "FragModelFragSpectrumColor=" & .lblFragSpectrumColor.BackColor + Print #SeqFileNum, "FragModelMatchingIonDataColor=" & .lblMatchingIonDataColor.BackColor + End With + + If IonMatchListCount > 0 Then + Print #SeqFileNum, "FragModelIonMatchList=" & Trim(Str(IonMatchListCount)) + For lngIndex = 1 To IonMatchListCount + Print #SeqFileNum, CStr(IonMatchList(lngIndex, 0)) & "," & CStr(IonMatchList(lngIndex, 1)) + Next lngIndex + Print #SeqFileNum, "FragModelIonMatchListEnd" + Print #SeqFileNum, "FragModelIonMatchListCaption=" & strIonMatchListCaption + End If + + ' Note: Must save/load the Ion Alignment value after the IonMatchList since the loading of the list sets the value to 0 + Print #SeqFileNum, "FragModelIonAlignment=" & frmFragmentationModelling.txtAlignment + + If intCurrentFileNumber = 0 Then + Close SeqFileNum + + ' Wait 100 msec, then call .SaveCWSpectrumOptions + Sleep 100 + frmFragmentationModelling.SaveCWSpectrumOptions strSequenceFilePath + End If + + Exit Sub + +SaveSequenceInfoErrorHandler: + Close SeqFileNum + strMessage = LookupMessage(900) & ": " & strSequenceFilePath + strMessage = strMessage & vbCrLf & Err.Description + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub SaveSingleDefaultOption(strOptionName As String, strOptionSetting As String) + ' Code from Sub SaveDefaultOptions + + Const MAX_INI_FILENAME_LINES = 50 + Dim strFilePath As String, strLinesRead(MAX_INI_FILENAME_LINES) As String, intCharLoc As Integer + Dim lngLineCount As Long + Dim strLineIn As String, strMessage As String + Dim blnReplaced As Boolean + Dim InFileNum As Integer, OutFileNum As Integer + + ' Exit sub if program is loading + If frmMain.lblHiddenFormStatus = "Loading" Then Exit Sub + +On Error GoTo SaveSingleDefaultOptionsErrorHandler + + If gBlnWriteFilesOnDrive Then + strFilePath = BuildPath(gCurrentPath, INI_FILENAME) + + InFileNum = FreeFile() + Open strFilePath For Input As #InFileNum + + ' Code from LoadDefaultOptions subroutine + lngLineCount = 0 + blnReplaced = False + Do + lngLineCount = lngLineCount + 1 + Line Input #InFileNum, strLinesRead(lngLineCount) + strLineIn = Trim(strLinesRead(lngLineCount)) + + If strLineIn <> "" And Not IsComment(strLineIn) Then + intCharLoc = InStr(strLineIn, "=") + If intCharLoc > 0 Then + If UCase(Left(strLineIn, intCharLoc - 1)) = UCase(strOptionName) Then + strLineIn = strOptionName & "=" & strOptionSetting + strLinesRead(lngLineCount) = strLineIn + blnReplaced = True + End If + End If + End If + Loop Until EOF(InFileNum) Or lngLineCount > MAX_INI_FILENAME_LINES + Close InFileNum + + If Not blnReplaced Then + ' The desired line wasn't found, add it to the end + + lngLineCount = lngLineCount + 1 + strMessage = strOptionName & "=" & strOptionSetting + strLinesRead(lngLineCount) = strLineIn + End If + + OutFileNum = FreeFile + Open strFilePath For Output As #OutFileNum + For intCharLoc = 1 To lngLineCount + Print #OutFileNum, strLinesRead(intCharLoc) + Next intCharLoc + Close OutFileNum + + End If + + Exit Sub + +SaveSingleDefaultOptionsErrorHandler: + Close + strMessage = LookupMessage(360) & " (" & strFilePath & "): " & Err.Description + strMessage = strMessage & vbCrLf & LookupMessage(345) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Public Sub SaveValuesAndFormulas() + Dim strMessage As String, strLineOut As String, strFilePath As String + Dim intIndex As Integer + + Dim ThisIonMatchListCount As Long + Dim ThisIonMatchList() As Double ' 1 based in the first dimension and 0-based in the second, using columns 0, 1, and 2 + Dim ThisIonMatchListCaption As String + + Dim OutFileNum As Integer + + ReDim ThisIonMatchList(1, 3) + +On Error GoTo SaveValuesErrorHandler + + If gBlnWriteFilesOnDrive Then + strFilePath = BuildPath(gCurrentPath, VALUES_FILENAME) + BackupFile strFilePath + + OutFileNum = FreeFile() + Open strFilePath For Output As OutFileNum + ' Intro + Print #OutFileNum, COMMENT_CHAR & " Values File for MWTWIN Program (v" & PROGRAM_VERSION & ")" + Print #OutFileNum, COMMENT_CHAR + Print #OutFileNum, COMMENT_CHAR & " File Automatically Created -- Select Save Values and Formulas under the Options Menu" + Print #OutFileNum, COMMENT_CHAR + + For intIndex = 0 To frmMain.GetTopFormulaIndex + strLineOut = "Formula" & CStr(intIndex) & "=" + If frmMain.rtfFormula(intIndex).Text <> "" Then + strLineOut = strLineOut & frmMain.rtfFormula(intIndex).Text + Else + ' nothing, just print the label string + End If + RemoveHeightAdjustChar strLineOut + Print #OutFileNum, strLineOut + Next intIndex + + With frmAminoAcidConverter + Print #OutFileNum, "AminoAcidConvertOneLetter=" & Trim(.txt1LetterSequence) + Print #OutFileNum, "AminoAcidConvertThreeLetter=" & Trim(.txt3LetterSequence) + Print #OutFileNum, "AminoAcidConvertSpaceOneLetter=" & CheckBoxToIntegerString(.chkSpaceEvery10) + Print #OutFileNum, "AminoAcidConvertDashThreeLetter=" & CheckBoxToIntegerString(.chkSeparateWithDash) + End With + + With frmMMConvert + + strLineOut = "Mole/MassWeightSource=" + If .optWeightSource(0) = True Then + strLineOut = strLineOut & "0" + Else + strLineOut = strLineOut & "1" + End If + Print #OutFileNum, strLineOut + + Print #OutFileNum, "Mole/MassCustomMass=" & Trim(.txtCustomMass) + Print #OutFileNum, "Mole/MassAction=" & Trim(.cboAction.ListIndex) + Print #OutFileNum, "Mole/MassFrom=" & Trim(.txtFromNum.Text) + Print #OutFileNum, "Mole/MassFromUnits=" & Trim(.cboFrom.ListIndex) + Print #OutFileNum, "Mole/MassDensity=" & Trim(.txtDensity.Text) + Print #OutFileNum, "Mole/MassToUnits=" & Trim(.cboTo.ListIndex) + Print #OutFileNum, "Mole/MassVolume=" & Trim(.txtVolume.Text) + Print #OutFileNum, "Mole/MassVolumeUnits=" & Trim(.cboVolume.ListIndex) + Print #OutFileNum, "Mole/MassMolarity=" & Trim(.txtConcentration.Text) + Print #OutFileNum, "Mole/MassMolarityUnits=" & Trim(.cboConcentration.ListIndex) + + Print #OutFileNum, "Mole/MassDilutionMode=" & Trim(.cboDilutionMode.ListIndex) + Print #OutFileNum, "Mole/MassMolarityInitial=" & Trim(.txtDilutionConcentrationInitial.Text) + Print #OutFileNum, "Mole/MassMolarityInitialUnits=" & Trim(.cboDilutionConcentrationInitial.ListIndex) + Print #OutFileNum, "Mole/MassVolumeInitial=" & Trim(.txtStockSolutionVolume.Text) + Print #OutFileNum, "Mole/MassVolumeInitialUnits=" & Trim(.cboStockSolutionVolume.ListIndex) + Print #OutFileNum, "Mole/MassMolarityFinal=" & Trim(.txtDilutionConcentrationFinal.Text) + Print #OutFileNum, "Mole/MassMolarityFinalUnits=" & Trim(.cboDilutionConcentrationFinal.ListIndex) + Print #OutFileNum, "Mole/MassVolumeSolvent=" & Trim(.txtDilutingSolventVolume.Text) + Print #OutFileNum, "Mole/MassVolumeSolventUnits=" & Trim(.cboDilutingSolventVolume.ListIndex) + Print #OutFileNum, "Mole/MassVolumeTotal=" & Trim(.txtTotalVolume.Text) + Print #OutFileNum, "Mole/MassVolumeTotalUnits=" & Trim(.cboTotalVolume.ListIndex) + + Print #OutFileNum, "Mole/MassLinkConcentrations=" & CheckBoxToIntegerString(.chkLinkMolarities) + Print #OutFileNum, "Mole/MassLinkDilutionVolumeUnits=" & CheckBoxToIntegerString(.chkLinkDilutionVolumeUnits) + End With + + SaveCapillaryFlowInfo OutFileNum + + With frmViscosityForMeCN + Print #OutFileNum, "ViscosityMeCNPercentAcetontrile=" & Trim(.txtPercentAcetonitrile) + Print #OutFileNum, "ViscosityMeCNTemperature=" & Trim(.txtTemperature) + Print #OutFileNum, "ViscosityMeCNTemperatureUnits=" & Trim(.cboTemperatureUnits.ListIndex) + End With + + strLineOut = Trim(frmCalculator.rtfExpression.Text) + RemoveHeightAdjustChar strLineOut + Print #OutFileNum, "Calculator=" & strLineOut + + With frmIsotopicDistribution + Print #OutFileNum, "IonPlotColor=" & Trim(.lblPlotColor.BackColor) + Print #OutFileNum, "IonPlotShowPlot=" & CheckBoxToIntegerString(.chkPlotResults) + Print #OutFileNum, "IonPlotType=" & Trim(.cboPlotType.ListIndex) + Print #OutFileNum, "IonPlotResolution=" & Trim(.txtEffectiveResolution.Text) + Print #OutFileNum, "IonPlotResolutionMass=" & Trim(.txtEffectiveResolutionMass.Text) + Print #OutFileNum, "IonPlotGaussianQuality=" & Trim(.txtGaussianQualityFactor.Text) + Print #OutFileNum, "IonComparisonPlotColor=" & Trim(.lblComparisonListPlotColor.BackColor) + Print #OutFileNum, "IonComparisonPlotType=" & Trim(.cboComparisonListPlotType.ListIndex) + Print #OutFileNum, "IonComparisonPlotNormalize=" & CheckBoxToIntegerString(.chkComparisonListNormalize) + End With + + With frmFinder + strLineOut = "FinderAction=" + If .optType(0) = True Then + strLineOut = strLineOut & "0" + Else + strLineOut = strLineOut & "1" + End If + Print #OutFileNum, strLineOut + + Print #OutFileNum, "FinderMWT=" & Trim(.txtMWT.Text) + Print #OutFileNum, "FinderPercentMaxWeight=" & Trim(.txtPercentMaxWeight.Text) + Print #OutFileNum, "FinderPPM=" & CheckBoxToIntegerString(.chkPpmMode) + Print #OutFileNum, "FinderShowDeltaMass=" & CheckBoxToIntegerString(.chkShowDeltaMass) + Print #OutFileNum, "FinderWtTolerance=" & Trim(.txtWeightTolerance.Text) + Print #OutFileNum, "FinderPercentTolerance=" & Trim(.txtPercentTolerance.Text) + Print #OutFileNum, "FinderMaxHits=" & Trim(.txtHits.Text) + End With + + With frmFinderOptions + Print #OutFileNum, "FinderSortResults=" & CheckBoxToIntegerString(.chkSort) + Print #OutFileNum, "FinderSmartH=" & CheckBoxToIntegerString(.chkVerifyHydrogens) + Print #OutFileNum, "FinderFindCharge=" & CheckBoxToIntegerString(.chkFindCharge) + Print #OutFileNum, "FinderFindMtoZ=" & CheckBoxToIntegerString(.chkFindMtoZ) + Print #OutFileNum, "FinderLimitChargeRange=" & CheckBoxToIntegerString(.chkLimitChargeRange) + Print #OutFileNum, "FinderChargeRangeMin=" & Trim(.txtChargeMin.Text) + Print #OutFileNum, "FinderChargeRangeMax=" & Trim(.txtChargeMax.Text) + Print #OutFileNum, "FinderFindTargetMtoZ=" & CheckBoxToIntegerString(.chkFindTargetMtoZ) + Print #OutFileNum, "FinderHighlightText=" & CheckBoxToIntegerString(frmProgramPreferences.chkHighlightTextFields) + Print #OutFileNum, "FinderAutoBoundsSet=" & CheckBoxToIntegerString(.chkAutoSetBounds) + Print #OutFileNum, "FinderSortMode=" & Trim(.cboSortResults.ListIndex) + End With + + With frmFinder + For intIndex = 0 To 9 + Print #OutFileNum, "FinderMin" & CStr(intIndex) & "=" & Trim(.txtMin(intIndex).Text) + Print #OutFileNum, "FinderMax" & CStr(intIndex) & "=" & Trim(.txtMax(intIndex).Text) + Print #OutFileNum, "FinderCheckElements" & CStr(intIndex) & "=" & CheckBoxToIntegerString(.chkElements(intIndex)) + Print #OutFileNum, "FinderPercentValue" & CStr(intIndex) & "=" & Trim(.txtPercent(intIndex).Text) + If intIndex >= 4 Then + Print #OutFileNum, "FinderCustomWeight" & CStr(intIndex - 3) & "=" & .txtWeight(intIndex).Text + End If + Next intIndex + End With + + ThisIonMatchListCount = frmFragmentationModelling.GetIonMatchList(ThisIonMatchList(), ThisIonMatchListCaption) + SaveSequenceInfo ThisIonMatchList(), ThisIonMatchListCount, ThisIonMatchListCaption, OutFileNum + + Close OutFileNum + + ' Wait 100 msec, then call frmFragmentationModelling.SaveCWSpectrumOptions + Sleep 100 + frmFragmentationModelling.SaveCWSpectrumOptions strFilePath + + frmMain.lblStatus.ForeColor = vbWindowText + frmMain.lblStatus.Caption = LookupLanguageCaption(11920, "Values and formulas saved.") + Else + frmMain.lblStatus.ForeColor = vbWindowText + frmMain.lblStatus.Caption = LookupLanguageCaption(11925, "Values and formulas NOT saved since /X command line option was used.") + End If + + Exit Sub + +SaveValuesErrorHandler: + Close OutFileNum + strMessage = LookupMessage(380) & " (" & strFilePath & "): " & Err.Description + strMessage = strMessage & vbCrLf & LookupMessage(345) + MsgBox strMessage, vbOKOnly + vbExclamation, LookupMessage(350) + +End Sub + +Private Sub SetCheckBoxValue(chkThisCheckBox As CheckBox, intValue As Integer) + If intValue <> 0 Then + chkThisCheckBox.value = vbChecked + Else + chkThisCheckBox.value = vbUnchecked + End If +End Sub + +Public Sub SetDualOptionGroup(optThisOptionGroup As Variant, intButtonToSet As Integer) + ' Note: optThisOptionGroup is an array of OptionButtons + ' Due to constraints in VB, I cannot declare as optThisOptionGroup() as OptionButton + ' Instead, I must declare as a Variant + If intButtonToSet >= 0 And intButtonToSet <= 1 Then + optThisOptionGroup(intButtonToSet).value = True + End If +End Sub + +Private Function StripComment(ByRef strWork As String) As String + ' Looks for a comment at the end of strWork + ' If found, removes the comment from strWork and returns the comment + ' If not found, returns "" and leaves strWork untouched + + Dim strComment As String + Dim lngCharLoc As Long + + lngCharLoc = InStr(strWork, COMMENT_CHAR) + If lngCharLoc > 0 Then + strComment = Trim(Mid(strWork, lngCharLoc + 1)) + strWork = Trim(Left(strWork, lngCharLoc - 1)) + Else + lngCharLoc = InStr(strWork, "'") + If lngCharLoc > 0 Then + strComment = Trim(Mid(strWork, lngCharLoc + 1)) + strWork = Trim(Left(strWork, lngCharLoc - 1)) + End If + End If + + StripComment = strComment +End Function diff --git a/FontCh.frm b/FontCh.frm new file mode 100644 index 0000000..de64fd4 --- /dev/null +++ b/FontCh.frm @@ -0,0 +1,233 @@ +VERSION 5.00 +Begin VB.Form frmChangeFont + BorderStyle = 1 'Fixed Single + Caption = "Change Formula Font" + ClientHeight = 1440 + ClientLeft = 3090 + ClientTop = 1305 + ClientWidth = 5025 + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 4060 + Icon = "FONTCH.frx":0000 + LinkTopic = "Form2" + MaxButton = 0 'False + PaletteMode = 1 'UseZOrder + ScaleHeight = 1440 + ScaleWidth = 5025 + Tag = "8000" + Begin VB.ComboBox cboFontSize + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 315 + Left = 1680 + Style = 2 'Dropdown List + TabIndex = 1 + Tag = "8020" + Top = 960 + Width = 1335 + End + Begin VB.ComboBox cboFonts + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 315 + Left = 240 + Sorted = -1 'True + Style = 2 'Dropdown List + TabIndex = 0 + Tag = "8010" + Top = 480 + Width = 4575 + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "Cl&ose" + Default = -1 'True + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 360 + Left = 3600 + TabIndex = 2 + Tag = "4000" + Top = 960 + Width = 1155 + End + Begin VB.Label lblFontSize + Caption = "Font Size:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 240 + TabIndex = 4 + Tag = "8070" + Top = 960 + Width = 1335 + End + Begin VB.Label lblFonts + Caption = "Change Formula Font to:" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 240 + TabIndex = 3 + Tag = "8060" + Top = 120 + Width = 4695 + End +End +Attribute VB_Name = "frmChangeFont" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Const MIN_FONT_SIZE = 6 + +Private Sub LoadFontsIntoComboBox() + Dim intIndex As Integer, intFontCount As Integer + + intFontCount = Screen.FontCount - 1 + + 'If intFontCount > 25 Then frmMain.lblStatus.Caption = "Building font list 0%" + ' Load Fonts in the Combo Box + For intIndex = 0 To intFontCount + cboFonts.AddItem Screen.Fonts(intIndex) + If intIndex Mod 25 = 0 Then + frmMain.lblStatus.Caption = "Building font list " & _ + Trim(Str(CIntSafeDbl(intIndex / intFontCount * 100))) & "%" + DoEvents + End If + Next intIndex + + With cboFontSize + For intIndex = MIN_FONT_SIZE To 14 + .AddItem intIndex + If intIndex = objMwtWin.RtfFontSize Then .ListIndex = .ListCount - 1 + Next intIndex + +'' ' In order to use larger fonts, I need to make rtfFormula().Height be dependent on a variable +'' ' This variable would also have to be used by the frmMain.PositionFormControls() function +'' For intIndex = 16 To 32 Step 2 +'' .AddItem intIndex +'' If intIndex = objMwtWin.RtfFontSize Then .ListIndex = .ListCount - 1 +'' Next intIndex + End With + +End Sub + +Private Sub PositionFormControls() + Me.Caption = LookupLanguageCaption(8000, "Change Formula Font") + CmdOK.Caption = LookupLanguageCaption(4000, "Cl&ose") + + lblFonts.Top = 120 + lblFonts.Left = 240 + lblFonts.Caption = LookupLanguageCaption(8060, "Change Formula Font to:") + cboFonts.Top = 480 + cboFonts.Left = lblFonts.Left + + lblFontSize.Top = 960 + lblFontSize.Left = lblFonts.Left + lblFontSize.Caption = LookupLanguageCaption(8070, "Font Size:") + + cboFontSize.Top = lblFontSize.Top + cboFontSize.Left = (frmChangeFont.ScaleWidth - CmdOK.Width) / 4 + cboFontSize.Left = (frmChangeFont.ScaleWidth - CmdOK.Width) / 4 + + CmdOK.Top = lblFontSize.Top + CmdOK.Left = (frmChangeFont.ScaleWidth - CmdOK.Width) * 3 / 4 + +End Sub + +Private Sub cboFonts_Click() + SetFonts cboFonts.Text, objMwtWin.RtfFontSize +End Sub + +Private Sub cboFontSize_Click() + SetFonts cboFonts.Text, Val(cboFontSize.Text) +End Sub + +Private Sub cmdOK_Click() + frmChangeFont.Hide +End Sub + +Private Sub Form_Activate() + ' Put window in center of screen + SizeAndCenterWindow Me, cWindowExactCenter, 5200, 1850 + + Dim intIndex As Integer + + ' Display the current font in the combo box + For intIndex = 0 To Screen.FontCount - 1 + If cboFonts.List(intIndex) = objMwtWin.RtfFontName Then + cboFonts.ListIndex = intIndex + Exit For + End If + Next intIndex + +End Sub + +Private Sub Form_Load() + + ' Position Form Controls + PositionFormControls + + ' Change mouse pointer to hourglass + MousePointer = vbHourglass + + ' Load fonts + LoadFontsIntoComboBox + + frmMain.LabelStatus + + ' Change mouse pointer back to default + MousePointer = vbDefault + +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + QueryUnloadFormHandler Me, Cancel, UnloadMode +End Sub diff --git a/FontCh.frx b/FontCh.frx new file mode 100644 index 0000000000000000000000000000000000000000..03ffc39b1198f79e65f16ea4fbb52736b6fa2c2b GIT binary patch literal 2250 zcmeHJF>b>!3_Mw}(lJwKk9|fT)G-gpkjL~D9sMo!j+AXUkc12w3ebv+FDN*>2i6)no>Ic3-LYJZ) z-*_uzcU69wrapzgjulDmt%Pggd%ChZzoD(treEhnA^lFBYtT#5vrg~lpqsy%&lSI@ KN;COi!|WGquOTx4 literal 0 HcmV?d00001 diff --git a/GaussianConversionRoutines.bas b/GaussianConversionRoutines.bas new file mode 100644 index 0000000..2cc82a1 --- /dev/null +++ b/GaussianConversionRoutines.bas @@ -0,0 +1,294 @@ +Attribute VB_Name = "GaussianConversionRoutines" +Option Explicit + +Public Type usrXYData + XVal As Double ' Note: Single data type is -3.402823E38 to 3.402823E38 + YVal As Double +End Type + +Public Type usrXYDataSet + XYDataList() As usrXYData ' Index 1 to XYDataListCount + XYDataListCount As Long + XYDataListCountDimmed As Long +End Type + +Private Sub CheckDynamicXYData(ByRef ThisXYDataList() As usrXYData, ThisXYDataListCount As Long, ByRef ThisXYDataListCountDimmed As Long, Optional lngIncrement As Long = 100) + If ThisXYDataListCount > ThisXYDataListCountDimmed Then + ThisXYDataListCountDimmed = ThisXYDataListCountDimmed + lngIncrement + If ThisXYDataListCountDimmed < ThisXYDataListCount Then + ThisXYDataListCountDimmed = ThisXYDataListCount + End If + ReDim Preserve ThisXYDataList(ThisXYDataListCountDimmed) + End If +End Sub + +Private Sub CheckForLongOperation(ThisForm As VB.Form, ByRef blnLongOperationsRequired As Boolean, lngSecondsElapsedAtStart As Long, lngCurrentIteration As Long, lngTotalIterations As Long, strCurrentTask As String) + ' Checks to see if the current value of Timer() is greater than lngSecondsElapsedAtStart + 1 + ' If it is then blnLongOperationsRequired is turned on and the pointer is changed to an hourglass + ' Furthermore, if over 2 seconds have elapsed, then a progress box is shown + Dim lngSecElapsedSinceOperationStart As Long + + lngSecElapsedSinceOperationStart = Timer() - lngSecondsElapsedAtStart + + If lngSecElapsedSinceOperationStart >= 1 Or blnLongOperationsRequired Then + If ThisForm.MousePointer <> vbHourglass Then + ThisForm.MousePointer = vbHourglass + End If + + If lngSecElapsedSinceOperationStart >= 2 Then + ' Process has taken over 2 seconds + ' Show the progress form if not shown yet + If frmProgress.Visible = False Then + frmProgress.InitializeForm strCurrentTask, 0, lngTotalIterations + frmProgress.ToggleAlwaysOnTop True + End If + frmProgress.UpdateProgressBar lngCurrentIteration + 1 + End If + End If + +End Sub + +Public Sub ConvertStickDataToGaussian2DArray(ThisForm As VB.Form, ByRef dblXVals() As Double, ByRef dblYVals() As Double, ByRef lngDataCount As Long, ByVal lngResolution As Long, ByVal lngResolutionMass As Long, ByVal intQualityFactor As Integer) + ' dblXVals() and dblYVals() are parallel arrays, 0-based (thus ranging from 0 to lngDataCount-1) + ' The arrays should contain stick data + ' The original data in the arrays will be replaced with Gaussian peaks in place of each "stick" + ' Note: Assumes dblXVals() is sorted in the x direction + + Const MAX_DATA_POINTS = 100000 + Const MASS_PRECISION = 7 + + Dim lngDataIndex As Long, lngMidPointIndex As Long + Dim lngStickIndex As Long, DeltaX As Double + + Dim dblXValRange As Double, dblXValWindowRange As Double, dblRangeWork As Double + Dim dblMinimalXValOfWindow As Double, dblMinimalXValSpacing As Double + Dim blnSearchForMinimumXVal As Boolean + + Dim dblXOffSet As Double, dblSigma As Double + Dim lngExponentValue As Long + Dim lngSecondsElapsedAtStart As Long, strCurrentTask As String + + Dim XYSummation() As usrXYData ' 0-based array + Dim XYSummationCount As Long, XYSummationCountDimmed As Long + Dim lngSummationIndex As Long, lngMinimalSummationIndex As Long + + Dim DataToAdd() As usrXYData ' 0-based array + Dim lngDataToAddCount As Long, blnAppendNewData As Boolean + Dim ThisDataPoint As usrXYData + + Static blnLongOperationsRequired As Boolean + +On Error GoTo ConvertStickDataToGaussianErrorHandler + + If lngDataCount <= 0 Then Exit Sub + + lngSecondsElapsedAtStart = Timer() + + ' Initialize XYSummation + XYSummationCount = 0 + XYSummationCountDimmed = 100 + ReDim XYSummation(XYSummationCountDimmed) + + ' Determine the data range for dblXVals() and dblYVals() + dblXValRange = dblXVals(lngDataCount - 1) - dblXVals(0) + + If lngResolution < 1 Then lngResolution = 1 + If intQualityFactor < 1 Or intQualityFactor > 75 Then intQualityFactor = 50 + + ' Compute DeltaX using .lngResolution and .lngResolutionMass + ' Do not allow the DeltaX to be so small that the total points required > MAX_DATA_POINTS + DeltaX = lngResolutionMass / lngResolution / intQualityFactor + ' Make sure DeltaX is a reasonable number + DeltaX = RoundToMultipleOf10(DeltaX) + + If DeltaX = 0 Then DeltaX = 1 + + ' Set the Window Range to 1/10 the magnitude of the midpoint x value + dblRangeWork = dblXVals(0) + dblXValRange / 2 + dblRangeWork = RoundToMultipleOf10(dblRangeWork, lngExponentValue) + + dblSigma = (lngResolutionMass / lngResolution) / Sqr(5.54) + + ' Set the window range (the xvalue window width range) to calculate the Gaussian representation for each data point + ' The width at the base of a peak is 4 dblSigma + ' Use a width of 2 * 6 dblSigma + dblXValWindowRange = 2 * 6 * dblSigma + + If dblXValRange / DeltaX > MAX_DATA_POINTS Then + ' Delta x is too small; change to a reasonable value + ' This isn't a bug, but it may mean one of the default settings is inappropriate + Debug.Assert False + DeltaX = dblXValRange / MAX_DATA_POINTS + End If + + lngDataToAddCount = CLng(dblXValWindowRange / DeltaX) + + ' Make sure lngDataToAddCount is odd + If CSng(lngDataToAddCount) / 2! = Round(CSng(lngDataToAddCount) / 2!, 0) Then + lngDataToAddCount = lngDataToAddCount + 1 + End If + + ReDim DataToAdd(lngDataToAddCount) + lngMidPointIndex = (lngDataToAddCount + 1) / 2 - 1 ' Note that DataToAdd() is 0-based + + ' Compute the Gaussian data for each point in dblXVals() + strCurrentTask = LookupMessage(1130) + + For lngStickIndex = 0 To lngDataCount - 1 + If lngStickIndex Mod 25 = 0 Then + CheckForLongOperation ThisForm, blnLongOperationsRequired, lngSecondsElapsedAtStart, lngStickIndex, lngDataCount, strCurrentTask + If KeyPressAbortProcess > 1 Then Exit For + End If + + ' Search through XYSummation to determine the index of the smallest XValue with which + ' data in DataToAdd could be combined + lngMinimalSummationIndex = 0 + + dblMinimalXValOfWindow = dblXVals(lngStickIndex) - (lngMidPointIndex) * DeltaX + + blnSearchForMinimumXVal = True + If XYSummationCount > 0 Then + If dblMinimalXValOfWindow > XYSummation(XYSummationCount - 1).XVal Then + lngMinimalSummationIndex = XYSummationCount - 1 + blnSearchForMinimumXVal = False + End If + End If + + If blnSearchForMinimumXVal Then + If XYSummationCount <= 0 Then + lngMinimalSummationIndex = 0 + Else + For lngSummationIndex = 0 To XYSummationCount - 1 + If XYSummation(lngSummationIndex).XVal >= dblMinimalXValOfWindow Then + lngMinimalSummationIndex = lngSummationIndex - 1 + If lngMinimalSummationIndex < 0 Then lngMinimalSummationIndex = 0 + Exit For + End If + Next lngSummationIndex + If lngSummationIndex >= XYSummationCount Then + lngMinimalSummationIndex = XYSummationCount - 1 + End If + End If + End If + + ' Construct the Gaussian representation for this Data Point + ThisDataPoint.XVal = dblXVals(lngStickIndex) + ThisDataPoint.YVal = dblYVals(lngStickIndex) + + ' Round ThisDataPoint.XVal to the nearest DeltaX + ' If .XVal is not an even multiple of DeltaX then bump up .XVal until it is + ThisDataPoint.XVal = RoundToEvenMultiple(ThisDataPoint.XVal, DeltaX, True) + + For lngDataIndex = 0 To lngDataToAddCount - 1 + ' Equation for Gaussian is: Amplitude * Exp[ -(x - mu)^2 / (2*dblSigma^2) ] + ' Use lngDataIndex, .YVal, and DeltaX + dblXOffSet = (lngMidPointIndex - lngDataIndex) * DeltaX + DataToAdd(lngDataIndex).XVal = ThisDataPoint.XVal - dblXOffSet + DataToAdd(lngDataIndex).YVal = ThisDataPoint.YVal * Exp(-(dblXOffSet) ^ 2 / (2 * dblSigma ^ 2)) + Next lngDataIndex + + ' Now merge DataToAdd into XYSummation + ' XValues in DataToAdd and those in XYSummation have the same DeltaX value + ' The XValues in DataToAdd might overlap partially with those in XYSummation + + lngDataIndex = 0 + ' First, see if the first XValue in DataToAdd is larger than the last XValue in XYSummation + If XYSummationCount <= 0 Then + blnAppendNewData = True + ElseIf DataToAdd(lngDataIndex).XVal > XYSummation(XYSummationCount - 1).XVal Then + blnAppendNewData = True + Else + blnAppendNewData = False + ' Step through XYSummation() starting at lngMinimalSummationIndex, looking for + ' the index to start combining data at + For lngSummationIndex = lngMinimalSummationIndex To XYSummationCount - 1 + If Round(DataToAdd(lngDataIndex).XVal, MASS_PRECISION) <= Round(XYSummation(lngSummationIndex).XVal, MASS_PRECISION) Then + + ' The following assertion may not be appropriate + Debug.Assert Round(XYSummation(lngSummationIndex).XVal, MASS_PRECISION) = Round(DataToAdd(lngDataIndex).XVal, MASS_PRECISION) + + ' Within Tolerance; start combining the values here + Do While lngSummationIndex <= XYSummationCount - 1 + XYSummation(lngSummationIndex).YVal = XYSummation(lngSummationIndex).YVal + DataToAdd(lngDataIndex).YVal + lngSummationIndex = lngSummationIndex + 1 + lngDataIndex = lngDataIndex + 1 + If lngDataIndex >= lngDataToAddCount Then + ' Successfully combined all of the data + Exit Do + End If + Loop + If lngDataIndex < lngDataToAddCount Then + ' Data still remains to be added + blnAppendNewData = True + End If + Exit For + End If + Next lngSummationIndex + End If + + If blnAppendNewData = True Then + CheckDynamicXYData XYSummation(), XYSummationCount + lngDataToAddCount - lngDataIndex, XYSummationCountDimmed + Do While lngDataIndex < lngDataToAddCount + ThisDataPoint = DataToAdd(lngDataIndex) + XYSummation(XYSummationCount) = ThisDataPoint + XYSummationCount = XYSummationCount + 1 + lngDataIndex = lngDataIndex + 1 + Loop + End If + + Next lngStickIndex + + + ' Assure there is a data point at each 1% point along x range (do give better looking plots) + ' Probably need to add data, but may need to remove some + dblMinimalXValSpacing = dblXValRange / 100 + + lngSummationIndex = 0 + Do While lngSummationIndex < XYSummationCount - 1 + If XYSummation(lngSummationIndex).XVal + dblMinimalXValSpacing < XYSummation(lngSummationIndex + 1).XVal Then + ' Need to insert a data point + + XYSummationCount = XYSummationCount + 1 + CheckDynamicXYData XYSummation, XYSummationCount, XYSummationCountDimmed + For lngDataIndex = XYSummationCount - 1 To lngSummationIndex + 2 Step -1 + XYSummation(lngDataIndex) = XYSummation(lngDataIndex - 1) + Next lngDataIndex + + ' Choose the appropriate new .XVal + dblRangeWork = XYSummation(lngSummationIndex + 1).XVal - XYSummation(lngSummationIndex).XVal + If dblRangeWork < dblMinimalXValSpacing * 2 Then + dblRangeWork = dblRangeWork / 2 + Else + dblRangeWork = dblMinimalXValSpacing + End If + XYSummation(lngSummationIndex + 1).XVal = XYSummation(lngSummationIndex).XVal + dblRangeWork + + ' The new .YVal is the average of that at lngSummationIndex and that at lngSummationIndex + 1 + XYSummation(lngSummationIndex + 1).YVal = (XYSummation(lngSummationIndex).YVal + XYSummation(lngSummationIndex + 1).YVal) / 2 + End If + lngSummationIndex = lngSummationIndex + 1 + Loop + + frmProgress.HideForm + ThisForm.MousePointer = vbDefault + + ' Reset the blnLongOperationsRequired bit + blnLongOperationsRequired = False + + ' Replace the data in dblXVals() and dblYVals() with the XYSummation() data + ReDim dblXVals(XYSummationCount) + ReDim dblYVals(XYSummationCount) + lngDataCount = XYSummationCount + + For lngDataIndex = 0 To XYSummationCount - 1 + dblXVals(lngDataIndex) = XYSummation(lngDataIndex).XVal + dblYVals(lngDataIndex) = XYSummation(lngDataIndex).YVal + Next lngDataIndex + + Exit Sub + +ConvertStickDataToGaussianErrorHandler: + GeneralErrorHandler "ConvertStickDataToGaussian", Err.Number, Err.Description + +End Sub + diff --git a/GlyLeuTyr.seq b/GlyLeuTyr.seq new file mode 100644 index 0000000..836a4f6 --- /dev/null +++ b/GlyLeuTyr.seq @@ -0,0 +1,40 @@ +; Molecular Weight Calculator Sequence Information File +FragModelNotationMode=1 +FragModelSequence=Gly-Leu-Tyr +FragModelNTerminus=0 +FragModelCTerminus=0 +FragModelIonType0=0 +FragModelIonType1=1 +FragModelIonType2=1 +FragModelIonsToModify0=0 +FragModelIonsToModify1=1 +FragModelIonsToModify2=1 +FragModelWaterLoss=1 +FragModelAmmoniaLoss=1 +FragModelDoubleCharge=0 +FragModelDoubleChargeThreshold=8 +FragModelPrecursorIonRemove=1 +FragModelPrecursorIonMass=480.63 +FragModelPrecursorIonMassWindow=0.5 +FragModelIonMatchWindow=0.5 +FragModelIonIntensity0=50 +FragModelIonIntensity1=50 +FragModelIonIntensity2=50 +FragModelShoulderIntensity=0 +FragModelNeutralLossIntensity=10 +FragModelGroupIons=0 +FragModelGroupIonsMassWindow=0.5 +FragModelNormalizedIntensity=100 +FragModelNormalizationIonsUseCount=100 +FragModelNormalizationMassRegions=10 +IonPlotType=1 +IonPlotResolution=5000 +IonPlotResolutionXVal=500 +IonPlotGridlinesX=0 +IonPlotGridlinesY=0 +IonPlotTicksX=5 +IonPlotTicksY=5 +IonPlotGaussianQuality=20 +IonPlotApproximationFactor=10 +IonPlotAutoscaleY=1 +IonPlotShowPosition=1 diff --git a/HugeBatch.txt b/HugeBatch.txt new file mode 100644 index 0000000..238ed58 --- /dev/null +++ b/HugeBatch.txt @@ -0,0 +1,809 @@ +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +WEIGHTMODE=INTEGER +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +WEIGHTMODE=ISOTOPIC +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +WEIGHTMODE=AVERAGE +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +STDDEVMODE=SHORT +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +STDDEVMODE=SCIENTIFIC +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +STDDEVMODE=DECIMAL +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +STDDEVMODE=OFF +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +MWSHOWSOURCEFORMULA=OFF +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +STDDEVMODE=DECIMAL +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +EXPANDABBREVIATIONS=ON +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +EMPIRICAL=ON +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +MWSHOWSOURCEFORMULA=ON +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +SHOWMASS=OFF +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +MWSHOWSOURCEFORMULA=OFF +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +MW= +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +MWSHOWSOURCEFORMULA=ON +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +AACONVERT3TO1=ON +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +AASPACEEVERY10=ON +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +AASHOWSEQUENCEBEINGCONVERTED=OFF +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +AACONVERT1TO3=ON +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCDEFGHIJKLMNOPQRSTUVWXYZ +AASHOWSEQUENCEBEINGCONVERTED=ON +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCDEFGHIJKLMNOPQRSTUVWXYZ +AA1TO3USEDASH=ON +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCDEFGHIJKLMNOPQRSTUVWXYZ +AASPACEEVERY10=OFF +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCDEFGHIJKLMNOPQRSTUVWXYZ +MW= +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +MWSHOWSOURCEFORMULA=ON +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +CAPITALIZED=ON +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +MWSHOWSOURCEFORMULA=OFF +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +MWSHOWSOURCEFORMULA=ON +CAPITALIZED=OFF +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +c5nacl2(bpy)2na4 +; My comment -- does it get echoed? +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 + +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +VERBOSEMODE=OFF +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +AACONVERT3TO1=ON +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +AASPACEEVERY10=ON +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +AASHOWSEQUENCEBEINGCONVERTED=OFF +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +GluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArgGluGlaPheLueIleMetTyrCysHisArg +VERBOSEMODE=ON +MW= +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +ECHOCOMMENTS=ON +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +; Here's a comment + +' and another (space above) +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 + +' Two formulas, and one space above +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 +C5NaCl2(Bpy)2Na4 diff --git a/Intro.frm b/Intro.frm new file mode 100644 index 0000000..5bd9627 --- /dev/null +++ b/Intro.frm @@ -0,0 +1,247 @@ +VERSION 5.00 +Begin VB.Form frmIntro + Caption = "Loading" + ClientHeight = 2475 + ClientLeft = 2505 + ClientTop = 930 + ClientWidth = 5925 + ClipControls = 0 'False + ControlBox = 0 'False + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + ForeColor = &H80000008& + HelpContextID = 500 + Icon = "INTRO.frx":0000 + LinkTopic = "Form1" + PaletteMode = 1 'UseZOrder + ScaleHeight = 2475 + ScaleWidth = 5925 + Tag = "5700" + Begin VB.CommandButton cmdExit + Caption = "E&xit" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 4560 + TabIndex = 1 + Tag = "4030" + Top = 1200 + Visible = 0 'False + Width = 1035 + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "&OK" + Default = -1 'True + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 480 + Left = 4080 + TabIndex = 0 + Tag = "4010" + Top = 1200 + Width = 1035 + End + Begin VB.Label lblBuild + BackStyle = 0 'Transparent + Caption = "(Build 35)" + BeginProperty Font + Name = "Times New Roman" + Size = 9 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 240 + Left = 3840 + TabIndex = 7 + Top = 840 + Width = 2055 + End + Begin VB.Label lblLoadStatus + AutoSize = -1 'True + Height = 315 + Left = 120 + TabIndex = 6 + Top = 1695 + Width = 3675 + End + Begin VB.Label lblVersion + BackStyle = 0 'Transparent + Caption = "Version 5.07" + BeginProperty Font + Name = "Times New Roman" + Size = 12 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 240 + Left = 3840 + TabIndex = 5 + Top = 600 + Width = 2055 + End + Begin VB.Label lblMWT + Caption = "Molecular Weight Calculator" + BeginProperty Font + Name = "Times New Roman" + Size = 18 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 450 + Left = 120 + TabIndex = 4 + Top = 120 + Width = 5145 + End + Begin VB.Label LblMWT2 + Caption = "for Windows 9x/ME/NT/00/XP" + BeginProperty Font + Name = "Times New Roman" + Size = 12 + Charset = 0 + Weight = 700 + Underline = 0 'False + Italic = -1 'True + Strikethrough = 0 'False + EndProperty + Height = 255 + Left = 240 + TabIndex = 3 + Top = 600 + Width = 3375 + End + Begin VB.Label lblAuthor + Caption = "by Matthew Monroe" + BeginProperty Font + Name = "MS Sans Serif" + Size = 8.25 + Charset = 0 + Weight = 400 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Height = 375 + Left = 120 + TabIndex = 2 + Top = 1200 + Width = 3615 + End +End +Attribute VB_Name = "frmIntro" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Const FORM_MIN_WIDTH = 6100 +Private Const FORM_MIN_HEIGHT = 2850 + +Private Sub CheckLoadStatusLabelWidth() + + Dim lngLoadStatusWidth As Long + + ' Note that lblLoadStatus.AutoSize = True, and thus it automatically sets its width and height + lngLoadStatusWidth = TextWidth(lblLoadStatus.Caption) + + If lngLoadStatusWidth < 3650 Then lngLoadStatusWidth = 3650 + If lngLoadStatusWidth > 15000 Then lngLoadStatusWidth = 15000 + + lblLoadStatus.Width = lngLoadStatusWidth + + If lblLoadStatus.Width + 120 >= FORM_MIN_WIDTH Then Me.Width = lblLoadStatus.Width + 360 + If lblLoadStatus.Height > 675 Then Me.Height = lblLoadStatus.Top + lblLoadStatus.Height + 520 + + If Me.Height + Me.Top > Screen.Height Then + Me.Top = 0 + End If + +End Sub + +Private Sub cmdExit_Click() + ' Unloading frmMain will result in all forms being unloaded and the program ending + Unload frmMain +End Sub + +Private Sub cmdOK_Click() + gBlnLoadStatusOK = True + frmMain.SetFocusToFormulaByIndex + + Unload Me +End Sub + +Private Sub Form_Load() + + ' Put intro window in upper third of screen + SizeAndCenterWindow Me, cWindowUpperThird, FORM_MIN_WIDTH, FORM_MIN_HEIGHT, False + + ' Position Objects + lblMWT.Left = 120 + lblMWT.Top = 120 + LblMWT2.Left = 240 + LblMWT2.Top = 600 + lblVersion.Left = 3840 + lblVersion.Top = LblMWT2.Top + lblBuild.Left = lblVersion.Left + lblBuild.Top = lblVersion.Top + 300 + lblAuthor.Left = lblMWT.Left + lblAuthor.Top = 1200 + lblLoadStatus.Left = lblMWT.Left + lblLoadStatus.Top = 1600 + lblVersion.Caption = "Version " & PROGRAM_VERSION + lblBuild.Caption = "(Build " & App.Revision & ")" + + ' Note that cmdOK and cmdExit are positioned on top of one another since only one is shown at a time + With CmdOK + .Left = lblVersion.Left + .Top = lblAuthor.Top + .Visible = False + .Default = True + .Cancel = True + End With + + With cmdExit + .Left = CmdOK.Left + .Top = CmdOK.Top + .Visible = False + .Default = False + .Cancel = False + End With + +End Sub + +Private Sub lblLoadStatus_Change() + CheckLoadStatusLabelWidth +End Sub diff --git a/Intro.frx b/Intro.frx new file mode 100644 index 0000000000000000000000000000000000000000..03ffc39b1198f79e65f16ea4fbb52736b6fa2c2b GIT binary patch literal 2250 zcmeHJF>b>!3_Mw}(lJwKk9|fT)G-gpkjL~D9sMo!j+AXUkc12w3ebv+FDN*>2i6)no>Ic3-LYJZ) z-*_uzcU69wrapzgjulDmt%Pggd%ChZzoD(treEhnA^lFBYtT#5vrg~lpqsy%&lSI@ KN;COi!|WGquOTx4 literal 0 HcmV?d00001 diff --git a/MMCONV.FRM b/MMCONV.FRM new file mode 100644 index 0000000..2674434 --- /dev/null +++ b/MMCONV.FRM @@ -0,0 +1,1518 @@ +VERSION 5.00 +Object = "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "richtx32.ocx" +Begin VB.Form frmMMConvert + Caption = "Mole/Mass Converter and Dilution Calculator" + ClientHeight = 5145 + ClientLeft = 540 + ClientTop = 1395 + ClientWidth = 10470 + ForeColor = &H80000008& + HelpContextID = 3040 + Icon = "MMCONV.frx":0000 + LinkTopic = "Form1" + MaxButton = 0 'False + PaletteMode = 1 'UseZOrder + ScaleHeight = 5145 + ScaleWidth = 10470 + Tag = "11000" + Begin VB.TextBox txtDensity + Height = 285 + Left = 3240 + TabIndex = 43 + Tag = "11110" + Text = "1" + ToolTipText = "Density of compound" + Top = 1680 + Width = 1095 + End + Begin VB.CheckBox chkLinkDilutionVolumeUnits + Caption = "Link Dilution Volume Units" + Height = 405 + HelpContextID = 4092 + Left = 6240 + TabIndex = 14 + Tag = "11230" + Top = 1080 + Width = 4095 + End + Begin VB.CheckBox chkLinkMolarities + Caption = "&Link Initial Dilution Concentration and Convert Amounts Concentration" + Height = 405 + HelpContextID = 4092 + Left = 6240 + TabIndex = 13 + Tag = "11220" + Top = 600 + Width = 3975 + End + Begin VB.Frame fraConvertAmounts + Height = 2450 + Left = 120 + TabIndex = 1 + Top = 2040 + Width = 4935 + Begin VB.TextBox txtConcentration + Height = 315 + Left = 120 + TabIndex = 10 + Tag = "11130" + Text = "1" + ToolTipText = "Molarity of compound in the solvent" + Top = 1920 + Width = 1095 + End + Begin VB.ComboBox cboVolume + Height = 315 + Left = 1320 + Style = 2 'Dropdown List + TabIndex = 8 + Tag = "11030" + ToolTipText = "Units of volume" + Top = 1320 + Width = 1600 + End + Begin VB.TextBox txtVolume + Height = 315 + Left = 120 + TabIndex = 7 + Tag = "11120" + Text = "100" + ToolTipText = "Volume of solvent the compound is dissolved in" + Top = 1320 + Width = 1095 + End + Begin VB.ComboBox cboTo + Height = 315 + Left = 1320 + Style = 2 'Dropdown List + TabIndex = 5 + Tag = "11020" + Top = 720 + Width = 1600 + End + Begin VB.ComboBox cboFrom + Height = 315 + Left = 1320 + Style = 2 'Dropdown List + TabIndex = 3 + Tag = "11020" + Top = 240 + Width = 1600 + End + Begin VB.TextBox txtFromNum + Height = 315 + Left = 120 + TabIndex = 2 + Tag = "11100" + Text = "1" + ToolTipText = "Amount of compound to convert from or to be dissolved in solvent" + Top = 240 + Width = 1095 + End + Begin VB.CommandButton cmdFindVolume + Caption = "Find &Volume" + Height = 480 + Left = 3075 + TabIndex = 9 + Tag = "11160" + ToolTipText = "Calculate the volume using the amount and molarity" + Top = 1200 + Width = 1515 + End + Begin VB.CommandButton cmdFindConcentration + Caption = "Find &Concentration" + Height = 480 + Left = 3075 + TabIndex = 12 + Tag = "11170" + ToolTipText = "Calculate the concentration using the amount and volume" + Top = 1800 + Width = 1515 + End + Begin VB.ComboBox cboConcentration + Height = 315 + Left = 1320 + Style = 2 'Dropdown List + TabIndex = 11 + Tag = "7090" + Top = 1920 + Width = 1600 + End + Begin VB.CommandButton cmdFindAmount + Caption = "Find &Amount" + Height = 480 + Left = 3075 + TabIndex = 6 + Tag = "11150" + ToolTipText = "Calculate the amount using the volume and molarity" + Top = 240 + Width = 1515 + End + Begin VB.Label lblToNum + Caption = "Label1" + Height = 255 + Left = 120 + TabIndex = 4 + Top = 720 + Width = 1095 + End + End + Begin VB.Frame fraDilutionCalcs + Caption = "Dilution Calculations" + Height = 3375 + Left = 5160 + TabIndex = 15 + Tag = "11200" + Top = 1560 + Width = 5175 + Begin VB.ComboBox cboDilutionMode + Height = 315 + Left = 120 + Style = 2 'Dropdown List + TabIndex = 16 + Tag = "11210" + ToolTipText = "Quantity to find for dilution calculations" + Top = 240 + Width = 3675 + End + Begin VB.ComboBox cboDilutingSolventVolume + Height = 315 + Left = 3360 + Style = 2 'Dropdown List + TabIndex = 28 + Tag = "11030" + Top = 2280 + Width = 1600 + End + Begin VB.TextBox txtDilutingSolventVolume + Height = 315 + Left = 2160 + TabIndex = 27 + Tag = "11285" + Text = "12" + ToolTipText = "Volume of solvent the compound is dissolved in" + Top = 2280 + Width = 1015 + End + Begin VB.ComboBox cboStockSolutionVolume + Height = 315 + Left = 3360 + Style = 2 'Dropdown List + TabIndex = 22 + Tag = "11030" + Top = 1200 + Width = 1600 + End + Begin VB.TextBox txtStockSolutionVolume + Height = 315 + Left = 2160 + TabIndex = 21 + Tag = "11265" + Text = "3" + ToolTipText = "Volume of solvent the compound is dissolved in" + Top = 1200 + Width = 1015 + End + Begin VB.TextBox txtDilutionConcentrationInitial + Height = 315 + Left = 2160 + TabIndex = 18 + Tag = "11255" + Text = "10" + ToolTipText = "Molarity of compound in the solvent" + Top = 720 + Width = 1015 + End + Begin VB.ComboBox cboDilutionConcentrationInitial + Height = 315 + Left = 3360 + Style = 2 'Dropdown List + TabIndex = 19 + Tag = "7090" + Top = 720 + Width = 1600 + End + Begin VB.ComboBox cboDilutionConcentrationFinal + Height = 315 + Left = 3360 + Style = 2 'Dropdown List + TabIndex = 25 + Tag = "7090" + Top = 1800 + Width = 1600 + End + Begin VB.TextBox txtTotalVolume + Height = 315 + Left = 2160 + TabIndex = 30 + Tag = "11295" + Text = "15" + ToolTipText = "Volume of solvent the compound is dissolved in" + Top = 2880 + Width = 1015 + End + Begin VB.ComboBox cboTotalVolume + Height = 315 + Left = 3360 + Style = 2 'Dropdown List + TabIndex = 31 + Tag = "11030" + Top = 2880 + Width = 1600 + End + Begin VB.TextBox txtDilutionConcentrationFinal + Height = 315 + Left = 2160 + TabIndex = 24 + Tag = "11275" + Text = "2" + ToolTipText = "Molarity of compound in the solvent" + Top = 1800 + Width = 1015 + End + Begin VB.Label lblDilutingSolventVolume + Caption = "Volume of Solvent used for &Dilution" + Height = 405 + Left = 120 + TabIndex = 26 + Tag = "11280" + Top = 2265 + Width = 1905 + End + Begin VB.Label lblTotalVolume + Caption = "&Total Final Volume" + Height = 405 + Left = 120 + TabIndex = 29 + Tag = "11290" + Top = 2865 + Width = 1905 + End + Begin VB.Label lblDilutionConcentrationFinal + Caption = "&Final Concentration" + Height = 405 + Left = 120 + TabIndex = 23 + Tag = "11270" + Top = 1785 + Width = 1905 + End + Begin VB.Label lblStockSolutionVolume + Caption = "Volume of &Stock Solution" + Height = 405 + Left = 120 + TabIndex = 20 + Tag = "11260" + Top = 1185 + Width = 1905 + End + Begin VB.Label lblDilutionConcentrationInitial + Caption = "&Initial Concentration" + Height = 405 + Left = 120 + TabIndex = 17 + Tag = "11250" + Top = 705 + Width = 1905 + End + End + Begin VB.ComboBox cboAction + Height = 315 + Left = 120 + Style = 2 'Dropdown List + TabIndex = 0 + Tag = "11010" + ToolTipText = "Perform conversions between different amounts of compound or perform molarity-related calculations" + Top = 1680 + Width = 2955 + End + Begin VB.Frame fraWeightSource + BorderStyle = 0 'None + Caption = "Weight Source" + Height = 1575 + Left = 240 + TabIndex = 33 + Top = 0 + Width = 5655 + Begin VB.TextBox txtCustomMass + Height = 285 + Left = 3120 + TabIndex = 36 + Tag = "7600" + Text = "100" + ToolTipText = "Enter custom numerical mass for use in computations" + Top = 1200 + Width = 1575 + End + Begin VB.OptionButton optWeightSource + Caption = "&Enter custom numerical mass" + Height = 255 + HelpContextID = 4010 + Index = 1 + Left = 0 + TabIndex = 35 + Tag = "7760" + Top = 240 + Width = 5475 + End + Begin VB.OptionButton optWeightSource + Caption = "&Use mass of compound in current formula" + Height = 255 + HelpContextID = 4010 + Index = 0 + Left = 0 + TabIndex = 34 + Tag = "7750" + Top = 0 + Value = -1 'True + Width = 5475 + End + Begin RichTextLib.RichTextBox rtfCurrentFormula + Height = 495 + Left = 2040 + TabIndex = 37 + TabStop = 0 'False + Top = 600 + Width = 3615 + _ExtentX = 6376 + _ExtentY = 873 + _Version = 393217 + Enabled = 0 'False + MultiLine = 0 'False + Appearance = 0 + TextRTF = $"MMCONV.frx":08CA + End + Begin VB.Label lblCustomMass + Caption = "Custom Mass:" + Height = 255 + Left = 2040 + TabIndex = 38 + Tag = "7480" + Top = 1200 + Width = 2175 + End + Begin VB.Label lblMWTValue + Caption = "1" + Height = 255 + Left = 960 + TabIndex = 39 + Top = 1200 + Width = 1455 + End + Begin VB.Label lblFormula + Caption = "Current Formula is" + Height = 255 + Left = 120 + TabIndex = 42 + Tag = "7460" + Top = 720 + Width = 1815 + End + Begin VB.Label lblMWT + Caption = "MW =" + Height = 255 + Left = 120 + TabIndex = 41 + Tag = "7470" + Top = 1200 + Width = 1335 + End + Begin VB.Label lblCustomMassUnits + Caption = "g/mole" + Height = 255 + Left = 4800 + TabIndex = 40 + Tag = "7570" + Top = 1200 + Width = 1095 + End + End + Begin VB.CommandButton cmdOK + Cancel = -1 'True + Caption = "Cl&ose" + Height = 360 + Left = 1680 + TabIndex = 32 + Tag = "4000" + Top = 4680 + Width = 1035 + End + Begin VB.Label lblDensity + Caption = "g/mL" + Height = 255 + Left = 4365 + TabIndex = 44 + Tag = "11080" + Top = 1680 + Width = 615 + End +End +Attribute VB_Name = "frmMMConvert" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +Option Explicit + +Private Enum mmaMoleMassActionConstants + mmaConvertAmounts = 0 + mmaFindConcentration + mmaDilutionCalculations +End Enum + +' Constants for cboDilutionMode Combo Box on frmMMConvert +Private Enum dmDilutionModeConstants + dmFindRequiredDilutionVolumes = 0 + dmFindRequiredTotalVolume = 1 + dmFindFinalMolarity = 2 + dmFindInitialMolarity = 3 +End Enum + +Private Const TextBoxIDMaxIndex = 10 +Private Enum mmtTextBoxIDConstants + mmtNone = 0 + mmtSampleMass = 1 + mmtSampleDensity = 2 + mmtQuantityAmount = 3 + mmtQuantityVolume = 4 + mmtQuantityConcentration = 5 + mmtDilutionInitialConcentration = 6 + mmtDilutionVolumeStock = 7 + mmtDilutionFinalConcentration = 8 + mmtDilutionVolumeDilutingSolvent = 9 + mmtDilutionTotalVolume = 10 +End Enum + +' Note: Other forms access this variable +Public eMassMode As mmcMassModeConstants + +Private mDelayUpdateAll As Boolean ' When true, the values will not auto-update + +Private mDelayUpdatingDilutionVolumes As Boolean +Private mUpdatingDilutingSolventVolume As Boolean +Private mUpdatingTotalSolventVolume As Boolean +Private mUpdatingLinkedMolarities As Boolean + +Private mLastControlChanged As mmtTextBoxIDConstants ' Records the last box a key was pressed in +Private mVolumeIndexStart As Integer +Private mVolumeIndexEnd As Integer + +Private objMMConverter As New MWMoleMassDilutionClass + +Private Sub ComputeTargetConcentration() + Dim dblFromNum As Double + Dim dblToNum As Double + + dblFromNum = CDblSafe(txtFromNum.Text) + dblToNum = objMMConverter.ConvertAmount(dblFromNum, cboFrom.ListIndex, cboTo.ListIndex) + + If dblToNum < 0 Then + lblToNum.Caption = "" + Else + FormatLabel lblToNum, dblToNum + End If + +End Sub + +Private Sub FindDilutionValues(Optional blnUpdateDilutingSolventVolume As Boolean = True) + + Dim dblVolumeStock As Double + Dim dblDilutingSolventVolume As Double + Dim dblTotalVolume As Double + Dim dblConcentration As Double + + Static intCallLevel As Integer + + ' The intCallLevel variable and the following assertion are here to make sure + ' we don't accidentally get into redundant loop with calling this Sub + intCallLevel = intCallLevel + 1 + Debug.Assert intCallLevel = 1 + + ' Find the desired item + ' After finding the item, need to update the variable for the item just found + Select Case cboDilutionMode.ListIndex + Case dmFindRequiredDilutionVolumes + dblVolumeStock = objMMConverter.ComputeDilutionRequiredStockAndDilutingSolventVolumes(cboStockSolutionVolume.ListIndex, dblDilutingSolventVolume, cboDilutingSolventVolume.ListIndex) + + If dblDilutingSolventVolume < 0 Then + txtStockSolutionVolume = "" + txtDilutingSolventVolume = "" + Else + FormatTextBox txtStockSolutionVolume, dblVolumeStock + FormatTextBox txtDilutingSolventVolume, dblDilutingSolventVolume + End If + + Case dmFindFinalMolarity + dblConcentration = objMMConverter.ComputeDilutionFinalConcentration(cboDilutionConcentrationFinal.ListIndex) + FormatTextBox txtDilutionConcentrationFinal, dblConcentration + If blnUpdateDilutingSolventVolume Then UpdateDilutingSolventVolume + + Case dmFindInitialMolarity + dblConcentration = objMMConverter.ComputeDilutionInitialConcentration(cboDilutionConcentrationInitial.ListIndex) + FormatTextBox txtDilutionConcentrationInitial, dblConcentration + If blnUpdateDilutingSolventVolume Then UpdateDilutingSolventVolume + + Case Else ' Includes dmFindRequiredTotalVolume + dblTotalVolume = objMMConverter.ComputeDilutionTotalVolume(cboTotalVolume.ListIndex, dblDilutingSolventVolume, cboDilutingSolventVolume.ListIndex) + If dblDilutingSolventVolume <= 0 Then + txtDilutingSolventVolume = "" + Else + FormatTextBox txtDilutingSolventVolume, dblDilutingSolventVolume + End If + FormatTextBox txtTotalVolume, dblTotalVolume + End Select + + UpdateDynamicDilutionFrameLabel + + intCallLevel = intCallLevel - 1 + mLastControlChanged = mmtNone +End Sub + +Private Sub FindQuantityAmount() + Dim dblAmount As Double + + dblAmount = objMMConverter.ComputeQuantityAmount(cboFrom.ListIndex) + FormatTextBox txtFromNum, dblAmount + + mLastControlChanged = mmtNone +End Sub + +Private Sub FindQuantityConcentration() + Dim dblConcentration As Double + + dblConcentration = objMMConverter.ComputeQuantityConcentration(cboConcentration.ListIndex) + FormatTextBox txtConcentration, dblConcentration + + mLastControlChanged = mmtNone +End Sub + +Private Sub FindQuantityVolume() + Dim dblVolume As Double + + dblVolume = objMMConverter.ComputeQuantityVolume(cboVolume.ListIndex) + FormatTextBox txtVolume, dblVolume + + mLastControlChanged = mmtNone + +End Sub + +Private Function GetWorkingMass() As Double + If eMassMode = mmcComputedMass Then + GetWorkingMass = CDblSafe(lblMWTValue.Caption) + Else + GetWorkingMass = CDblSafe(txtCustomMass.Text) + End If + +End Function + +Private Sub HandleDilutingSolventVolumeChange() + + If cboDilutionMode.ListIndex = dmFindRequiredDilutionVolumes Or _ + cboDilutionMode.ListIndex = dmFindRequiredTotalVolume Then + Exit Sub + End If + + SynchronizeQuantitiesWithDLL mmtDilutionVolumeDilutingSolvent + + If mUpdatingDilutingSolventVolume Then Exit Sub + + UpdateTotalSolventVolume + + FindDilutionValues False + +End Sub + +Private Sub HighlightTargetBoxes() + ' Change background color of text boxes to indicate which is being found + + Dim ctlThisControl As Control, strControlType As String + Dim lngHighlightedColor As Long + + For Each ctlThisControl In Me.Controls + strControlType = TypeName(ctlThisControl) + If strControlType = "TextBox" Then + ctlThisControl.BackColor = QBColor(COLOR_WHITE) + End If + Next + + ' 7, 10, and 14 are good colors for QBColor() + lngHighlightedColor = QBColor(COLOR_COMPUTEDQUANTITY) + Select Case cboDilutionMode.ListIndex + Case dmFindRequiredTotalVolume ' Find Required Total Volume + txtDilutingSolventVolume.BackColor = lngHighlightedColor + txtTotalVolume.BackColor = lngHighlightedColor + Case dmFindFinalMolarity ' Find Final Molarity + txtDilutionConcentrationFinal.BackColor = lngHighlightedColor + Case dmFindInitialMolarity ' Find Initial Molarity + txtDilutionConcentrationInitial.BackColor = lngHighlightedColor + Case Else + ' Includes case 0 ' Find Required Dilution Volumes + txtStockSolutionVolume.BackColor = lngHighlightedColor + txtDilutingSolventVolume.BackColor = lngHighlightedColor + End Select + +End Sub + +Private Sub UpdateDilutingSolventVolume() + Dim dblDilutingSolventVolume As Double + + mUpdatingDilutingSolventVolume = True + + dblDilutingSolventVolume = objMMConverter.GetDilutionVolumeDilutingSolvent(cboDilutingSolventVolume.ListIndex) + + If dblDilutingSolventVolume < 0 Then + txtDilutingSolventVolume = "" + ElseIf dblDilutingSolventVolume = 0 Then + txtDilutingSolventVolume = "0" + Else + FormatTextBox txtDilutingSolventVolume, dblDilutingSolventVolume + End If + + mUpdatingDilutingSolventVolume = False + +End Sub + +Private Sub UpdateTotalSolventVolume() + Dim dblStockSolutionVolume As Double + Dim dblDilutingSolventVolume As Double + Dim dblFinalTotalVolume As Double + + mUpdatingTotalSolventVolume = True + + With objMMConverter + dblStockSolutionVolume = .GetDilutionVolumeStockSolution(uevML) + dblDilutingSolventVolume = .GetDilutionVolumeDilutingSolvent(uevML) + + dblFinalTotalVolume = .ConvertVolumeExtended(dblStockSolutionVolume + dblDilutingSolventVolume, uevML, cboTotalVolume.ListIndex) + + If dblFinalTotalVolume < 0 Then + txtTotalVolume.Text = "" + Else + FormatTextBox txtTotalVolume, dblFinalTotalVolume + End If + End With + + mUpdatingTotalSolventVolume = False + +End Sub + +Private Sub PopulateComboBoxes() + Dim strAmountString As String, strVolumeString As String, strMolarString As String + + ' Load Amount types in the Combo Boxes + + SetDelayUpdate True + + PopulateComboBox cboAction, True, "Convert Amounts|Find Concentration|Dilution Calculations", 1 + PopulateComboBox cboDilutionMode, True, "Find Required Dilution Volumes|Find Required Total Volume|Find Final Concentration|Find Initial Concentration", 0 + + strAmountString = "Moles|Millimoles|microMoles|nanoMoles|picoMoles|femtoMoles|attoMoles|Kilograms|Grams|Milligrams|Micrograms|Pounds|Ounces|Liters|Deciliters|Milliliters|Microliters|Nanoliters|Picoliters|Gallons|Quarts|Pints" + PopulateComboBox cboFrom, True, strAmountString, uamGrams + PopulateComboBox cboTo, True, strAmountString, uamMoles + + Debug.Assert cboFrom.ListCount = Val(objMMConverter.AmountsUnitListCount) + + strVolumeString = "Liters|Deciliters|Milliliters|Microliters|Nanoliters|Picoliters|Gallons|Quarts|Pints" + PopulateComboBox cboVolume, True, strVolumeString, uevML + PopulateComboBox cboStockSolutionVolume, True, strVolumeString, uevML + PopulateComboBox cboDilutingSolventVolume, True, strVolumeString, uevML + PopulateComboBox cboTotalVolume, True, strVolumeString, uevML + + strMolarString = "Molar|milliMolar|microMolar|nanoMolar|picoMolar|femtoMolar|attoMolar|mg/dL|mg/mL|ug/mL|ng/mL|ug/uL|ng/uL" + PopulateComboBox cboConcentration, True, strMolarString, ummcMolar + PopulateComboBox cboDilutionConcentrationInitial, True, strMolarString, ummcMolar + PopulateComboBox cboDilutionConcentrationFinal, True, strMolarString, ummcMolar + + SetDelayUpdate False +End Sub + +Private Sub PositionFormControls() + + fraWeightSource.Top = 100 + fraWeightSource.Left = 240 + PositionWeightSourceframeControls Me + + cboAction.Top = 1680 + cboAction.Left = lblFormula.Left + + txtDensity.Top = cboAction.Top + 20 + txtDensity.Left = 3240 + lblDensity.Top = txtDensity.Top + lblDensity.Left = 4365 + + fraConvertAmounts.Top = 2040 + fraConvertAmounts.Left = 120 + + txtFromNum.Top = 300 + txtFromNum.Left = 120 + cboFrom.Top = txtFromNum.Top + cboFrom.Left = 1320 + cmdFindAmount.Top = txtFromNum.Top - 40 + cmdFindAmount.Left = 3075 + + lblToNum.Top = 820 + lblToNum.Left = txtFromNum.Left + 40 + cboTo.Top = lblToNum.Top - 40 + cboTo.Left = cboFrom.Left + + txtVolume.Top = 900 + txtVolume.Left = txtFromNum.Left + cboVolume.Top = txtVolume.Top + cboVolume.Left = cboFrom.Left + cmdFindVolume.Left = cmdFindAmount.Left + cmdFindVolume.Top = txtVolume.Top - 40 + txtConcentration.Top = 1500 + txtConcentration.Left = txtFromNum.Left + cboConcentration.Top = txtConcentration.Top + cboConcentration.Left = cboFrom.Left + cmdFindConcentration.Left = cmdFindAmount.Left + cmdFindConcentration.Top = txtConcentration.Top - 40 + + fraDilutionCalcs.Top = 1560 + fraDilutionCalcs.Left = 5160 + + txtDilutionConcentrationInitial.Top = 720 + txtDilutionConcentrationInitial.Left = 2160 + lblDilutionConcentrationInitial.Top = txtDilutionConcentrationInitial.Top - 15 + lblDilutionConcentrationInitial.Left = 120 + cboDilutionConcentrationInitial.Top = txtDilutionConcentrationInitial.Top + cboDilutionConcentrationInitial.Left = 3360 + + txtStockSolutionVolume.Top = 1200 + txtStockSolutionVolume.Left = txtDilutionConcentrationInitial.Left + lblStockSolutionVolume.Top = txtStockSolutionVolume.Top - 15 + lblStockSolutionVolume.Left = lblDilutionConcentrationInitial.Left + cboStockSolutionVolume.Top = txtStockSolutionVolume.Top + cboStockSolutionVolume.Left = cboDilutionConcentrationInitial.Left + + txtDilutionConcentrationFinal.Top = 1800 + txtDilutionConcentrationFinal.Left = txtDilutionConcentrationInitial.Left + lblDilutionConcentrationFinal.Top = txtDilutionConcentrationFinal.Top - 15 + lblDilutionConcentrationFinal.Left = lblDilutionConcentrationInitial.Left + cboDilutionConcentrationFinal.Top = txtDilutionConcentrationFinal.Top + cboDilutionConcentrationFinal.Left = cboDilutionConcentrationInitial.Left + + txtDilutingSolventVolume.Top = 2280 + txtDilutingSolventVolume.Left = txtDilutionConcentrationInitial.Left + lblDilutingSolventVolume.Top = txtDilutingSolventVolume.Top - 15 + lblDilutingSolventVolume.Left = lblDilutionConcentrationInitial.Left + cboDilutingSolventVolume.Top = txtDilutingSolventVolume.Top + cboDilutingSolventVolume.Left = cboDilutionConcentrationInitial.Left + + txtTotalVolume.Top = 2880 + txtTotalVolume.Left = txtDilutionConcentrationInitial.Left + lblTotalVolume.Top = txtTotalVolume.Top - 15 + lblTotalVolume.Left = lblDilutionConcentrationInitial.Left + cboTotalVolume.Top = txtTotalVolume.Top + cboTotalVolume.Left = cboDilutionConcentrationInitial.Left + + ShowHideFormControls True + +End Sub + +Private Sub RemoveNegativeValue(txtThisTextBox As TextBox) + If IsNumeric(txtThisTextBox.Text) Then + If CDbl(txtThisTextBox) < 0 Then + txtThisTextBox = 0 + End If + Else + txtThisTextBox.Text = "" + End If +End Sub + +Public Sub SetDelayUpdate(blnTurnOnDelay As Boolean) + mDelayUpdateAll = blnTurnOnDelay + + If Not mDelayUpdateAll Then + ' Just turned off delaying + ' Make sure the values are correct + + SynchronizeAllQuantitiesWithDLL + + FindQuantityConcentration + + HighlightTargetBoxes + FindDilutionValues + End If + +End Sub + +Public Sub SetDynamicToolTips() + Select Case cboAction.ListIndex + Case mmaConvertAmounts + txtFromNum.ToolTipText = LookupToolTipLanguageCaption(11100, "Amount of compound to convert from") + cboFrom.ToolTipText = LookupToolTipLanguageCaption(11020, "Units of amount to convert from") + Case Else + txtFromNum.ToolTipText = LookupToolTipLanguageCaption(11105, "Amount of compound to be dissolved in solvent") + cboFrom.ToolTipText = LookupToolTipLanguageCaption(11025, "Units of amount to use for concentration calculation") + End Select +End Sub + +Private Sub ShowHideDensity() + Dim blnShowDensity As Boolean + + If (cboFrom.ListIndex >= mVolumeIndexStart And cboFrom.ListIndex <= mVolumeIndexEnd) Then + blnShowDensity = True + ElseIf cboAction.ListIndex = mmaConvertAmounts And (cboTo.ListIndex >= mVolumeIndexStart And cboTo.ListIndex <= mVolumeIndexEnd) Then + blnShowDensity = True + Else + blnShowDensity = False + End If + + txtDensity.Visible = blnShowDensity + lblDensity.Visible = blnShowDensity + +End Sub + +Private Sub ShowHideFormControls(Optional blnForceResize As Boolean = True) + Dim blnVolAndMolarVisible As Boolean, blnDilutionFrameVisible As Boolean + Dim intFindAmountsFrameHeight As Integer, intFindAmountsFrameWidth As Integer + Dim lngPreferredWidth As Long, lngPreferredHeight As Long + + If cboAction.ListIndex = mmaConvertAmounts Then + ' Set Molarity related objects to invisible + blnVolAndMolarVisible = False + blnDilutionFrameVisible = False + intFindAmountsFrameHeight = 1300 + intFindAmountsFrameWidth = 3200 + Else + If cboAction.ListIndex = mmaDilutionCalculations Then + blnDilutionFrameVisible = True + Else + blnDilutionFrameVisible = False + End If + + blnVolAndMolarVisible = True + intFindAmountsFrameHeight = 2120 + intFindAmountsFrameWidth = 4935 + End If + + fraConvertAmounts.Height = intFindAmountsFrameHeight + fraConvertAmounts.Width = intFindAmountsFrameWidth + + lblToNum.Visible = Not blnVolAndMolarVisible + cboTo.Visible = Not blnVolAndMolarVisible + + cmdFindAmount.Visible = blnVolAndMolarVisible + txtVolume.Visible = blnVolAndMolarVisible + cboVolume.Visible = blnVolAndMolarVisible + cmdFindVolume.Visible = blnVolAndMolarVisible + + txtConcentration.Visible = blnVolAndMolarVisible + cboConcentration.Visible = blnVolAndMolarVisible + cmdFindConcentration.Visible = blnVolAndMolarVisible + + fraDilutionCalcs.Visible = blnDilutionFrameVisible + chkLinkMolarities.Visible = blnDilutionFrameVisible + chkLinkDilutionVolumeUnits.Visible = blnDilutionFrameVisible + + If cChkBox(frmProgramPreferences.chkShowToolTips) Then SetDynamicToolTips + + With fraConvertAmounts + cmdOK.Left = .Left + .Width / 2 - (cmdOK.Width / 2) + End With + + cmdOK.Top = fraConvertAmounts.Top + fraConvertAmounts.Height + 150 + + If Me.WindowState <> vbMinimized Then + lngPreferredHeight = cmdOK.Top + 950 + + If blnDilutionFrameVisible Then + lngPreferredWidth = 10550 + lngPreferredHeight = 5510 + Else + lngPreferredWidth = 6150 + End If + Else + ' Cannot change form height or width when minimized + ' Does not generate an error in the VB IDE but does once compiled to a .Exe + End If + + If Me.WindowState = vbNormal Then + If Me.Height > lngPreferredHeight Or blnForceResize Then + Me.Height = lngPreferredHeight + End If + + If Me.Width > lngPreferredWidth Or blnForceResize Then + Me.Width = lngPreferredWidth + End If + End If +End Sub + +Private Sub ShowHideMassInputControls() + Dim blnCustomVisible As Boolean + + If optWeightSource(0).value = True Then + eMassMode = mmcComputedMass + Else + eMassMode = mmcCustomMass + End If + + If eMassMode = mmcComputedMass Then + blnCustomVisible = False + Else + blnCustomVisible = True + End If + + lblFormula.Visible = Not blnCustomVisible + rtfCurrentFormula.Visible = Not blnCustomVisible + lblMWT.Visible = Not blnCustomVisible + lblMWTValue.Visible = Not blnCustomVisible + + lblCustomMass.Visible = blnCustomVisible + txtCustomMass.Visible = blnCustomVisible +End Sub + +Private Sub SynchronizeAllQuantitiesWithDLL() + Dim intIndex As Integer + + For intIndex = 0 To TextBoxIDMaxIndex + SynchronizeQuantitiesWithDLL CInt(intIndex) + Next intIndex +End Sub + +Private Sub SynchronizeDilutionVolumes(cboThisComboBox As ComboBox) + + ' The following is necessary because when the form is loading, the cboStockSolutionVolume combobox + ' gets populated and has its .ListIndex value set, but the other two volume comboboxes have + ' no items yet, so an error occurs when trying to set their .ListIndex value + On Error Resume Next + + If cChkBox(chkLinkDilutionVolumeUnits) Then + mDelayUpdatingDilutionVolumes = True + With cboThisComboBox + ' Note: The order of updating the ComboBoxes is important -- do not change + If cboStockSolutionVolume.Name <> .Name Then cboStockSolutionVolume.ListIndex = .ListIndex + If cboTotalVolume.Name <> .Name Then cboTotalVolume.ListIndex = .ListIndex + If cboDilutingSolventVolume.Name <> .Name Then cboDilutingSolventVolume.ListIndex = .ListIndex + End With + mDelayUpdatingDilutionVolumes = False + + SynchronizeQuantitiesWithDLL mmtDilutionVolumeStock + SynchronizeQuantitiesWithDLL mmtDilutionVolumeDilutingSolvent + SynchronizeQuantitiesWithDLL mmtDilutionTotalVolume + + FindDilutionValues + End If +End Sub + +Private Sub SynchronizeLinkedMolarities(blnFavorDilutionMolarity As Boolean) + + If mUpdatingLinkedMolarities Then Exit Sub + + If cChkBox(chkLinkMolarities) Then + mUpdatingLinkedMolarities = True + + If blnFavorDilutionMolarity Then + If IsNumeric(txtDilutionConcentrationInitial.Text) Then + txtConcentration.Text = txtDilutionConcentrationInitial.Text + mLastControlChanged = mmtQuantityConcentration + cboConcentration.ListIndex = cboDilutionConcentrationInitial.ListIndex + mLastControlChanged = mmtQuantityConcentration + End If + Else + If IsNumeric(txtConcentration.Text) And cboDilutionMode.ListIndex <> dmFindInitialMolarity Then + txtDilutionConcentrationInitial.Text = txtConcentration.Text + mLastControlChanged = mmtQuantityConcentration + cboDilutionConcentrationInitial.ListIndex = cboConcentration.ListIndex + mLastControlChanged = mmtQuantityConcentration + End If + End If + + mUpdatingLinkedMolarities = False + End If + +End Sub + +Private Sub SynchronizeQuantitiesWithDLL(eTextBoxID As mmtTextBoxIDConstants) + + If mDelayUpdateAll Then Exit Sub + + With objMMConverter + Select Case eTextBoxID + Case mmtSampleMass + .SetSampleMass GetWorkingMass() + + Case mmtSampleDensity + .SetSampleDensity CDblSafe(txtDensity.Text) + + Case mmtQuantityAmount + .SetQuantityAmount CDblSafe(txtFromNum.Text), cboFrom.ListIndex + + Case mmtQuantityVolume + .SetQuantityVolume CDblSafe(txtVolume.Text), cboVolume.ListIndex + + Case mmtQuantityConcentration + .SetQuantityConcentration CDblSafe(txtConcentration.Text), cboConcentration.ListIndex + + Case mmtDilutionInitialConcentration + .SetDilutionInitialConcentration CDblSafe(txtDilutionConcentrationInitial.Text), cboDilutionConcentrationInitial.ListIndex + + Case mmtDilutionVolumeStock + .SetDilutionVolumeStockSolution CDblSafe(txtStockSolutionVolume.Text), cboStockSolutionVolume.ListIndex + + Case mmtDilutionFinalConcentration + .SetDilutionFinalConcentration CDblSafe(txtDilutionConcentrationFinal.Text), cboDilutionConcentrationFinal.ListIndex + + Case mmtDilutionVolumeDilutingSolvent + .SetDilutionVolumeDilutingSolvent CDblSafe(txtDilutingSolventVolume.Text), cboDilutingSolventVolume.ListIndex + + Case mmtDilutionTotalVolume + .SetDilutionTotalFinalVolume CDblSafe(txtTotalVolume.Text), cboTotalVolume.ListIndex + + Case Else + If eTextBoxID <> 0 Then + ' This shouldn't happen + Debug.Assert False + End If + End Select + End With + +End Sub + +Private Sub UpdateDynamicDilutionFrameLabel() + Dim blnDilutionMode As Boolean + + blnDilutionMode = True + If IsNumeric(txtDilutionConcentrationInitial) And IsNumeric(txtDilutionConcentrationFinal) Then + If CDblSafe(txtDilutionConcentrationInitial) < CDblSafe(txtDilutionConcentrationFinal) Then + blnDilutionMode = False + End If + End If + + If blnDilutionMode Then + fraDilutionCalcs.Caption = LookupLanguageCaption(11200, "Dilution Calculations") + Else + fraDilutionCalcs.Caption = LookupLanguageCaption(11205, "Evaporation or Sublimation Calculations") + End If +End Sub + +Private Sub cboAction_Click() + ShowHideFormControls True + ShowHideDensity + ComputeTargetConcentration +End Sub + +Private Sub cboDilutionMode_Click() + HighlightTargetBoxes + FindDilutionValues +End Sub + +Private Sub cboFrom_Click() + + ShowHideDensity + + If cboAction.ListIndex > mmaConvertAmounts And mLastControlChanged <> mmtQuantityAmount Then + If Not mDelayUpdateAll Then FindQuantityAmount + Else + SynchronizeQuantitiesWithDLL mmtQuantityAmount + End If + + ComputeTargetConcentration + +End Sub + +Private Sub cboConcentration_Click() + If mLastControlChanged <> mmtQuantityConcentration And Not cChkBox(chkLinkMolarities.value) Then + ' Auto-find the concentration for the new units, but only if user did not just + ' enter a custom value and if not linking molarities + If Not mDelayUpdateAll Then FindQuantityConcentration + Else + SynchronizeQuantitiesWithDLL mmtQuantityConcentration + End If + + SynchronizeLinkedMolarities False +End Sub + +Private Sub cboDilutionConcentrationFinal_Click() + If mDelayUpdateAll Then Exit Sub + + SynchronizeQuantitiesWithDLL mmtDilutionFinalConcentration + + FindDilutionValues +End Sub + +Private Sub cboDilutionConcentrationInitial_Click() + If mDelayUpdateAll Then Exit Sub + + SynchronizeQuantitiesWithDLL mmtDilutionInitialConcentration + + FindDilutionValues + SynchronizeLinkedMolarities True +End Sub + +Private Sub cboTo_Click() + + ShowHideDensity + ComputeTargetConcentration + +End Sub + +Private Sub cboVolume_Click() + If mLastControlChanged <> mmtQuantityVolume Then + If Not mDelayUpdateAll Then FindQuantityVolume + Else + SynchronizeQuantitiesWithDLL mmtQuantityVolume + End If +End Sub + +Private Sub cboDilutingSolventVolume_Click() + If mDelayUpdateAll Or mDelayUpdatingDilutionVolumes Then Exit Sub + + SynchronizeDilutionVolumes cboDilutingSolventVolume + SynchronizeQuantitiesWithDLL mmtDilutionVolumeDilutingSolvent + + If IsNumeric(txtDilutingSolventVolume) Then + HandleDilutingSolventVolumeChange + End If + +End Sub + +Private Sub cboStockSolutionVolume_Click() + If mDelayUpdateAll Or mDelayUpdatingDilutionVolumes Then Exit Sub + + SynchronizeDilutionVolumes cboStockSolutionVolume + SynchronizeQuantitiesWithDLL mmtDilutionVolumeStock + + FindDilutionValues + +End Sub + +Private Sub cboTotalVolume_Click() + If mDelayUpdateAll Or mDelayUpdatingDilutionVolumes Then Exit Sub + + SynchronizeDilutionVolumes cboTotalVolume + SynchronizeQuantitiesWithDLL mmtDilutionTotalVolume + + FindDilutionValues + +End Sub + +Private Sub chkLinkDilutionVolumeUnits_Click() + cboStockSolutionVolume_Click +End Sub + +Private Sub chkLinkMolarities_Click() + SynchronizeLinkedMolarities False +End Sub + +Private Sub cmdFindAmount_Click() + FindQuantityAmount +End Sub + +Private Sub cmdFindConcentration_Click() + FindQuantityConcentration +End Sub + +Private Sub cmdFindVolume_Click() + FindQuantityVolume +End Sub + +Private Sub cmdOK_Click() + HideFormShowMain Me +End Sub + +Private Sub Form_Activate() + ' Put window in center of screen (upper fourth vertically) + SizeAndCenterWindow Me, cWindowExactCenter, 10500, 6000, True + + DisplayCurrentFormulaOnSubForm Me + + ' Make sure the values are sync'd up with the Dll + SynchronizeAllQuantitiesWithDLL + + PossiblyHideMainWindow + + ShowHideMassInputControls + ShowHideFormControls False + + ComputeTargetConcentration + mLastControlChanged = mmtNone +End Sub + +Private Sub Form_Load() + + ' Turn off auto-compute + objMMConverter.SetAutoComputeDilutionEnabled False + objMMConverter.SetAutoComputeQuantityEnabled False + + mVolumeIndexStart = objMMConverter.AmountsUnitListVolumeIndexStart + mVolumeIndexEnd = objMMConverter.AmountsUnitListVolumeIndexEnd + + PositionFormControls + + PopulateComboBoxes + + ShowHideDensity + +End Sub + +Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) + QueryUnloadFormHandler Me, Cancel, UnloadMode +End Sub + +Private Sub Form_Resize() + ShowHideFormControls False +End Sub + +Private Sub lblCustomMass_DblClick() + ' This is sort of an Easter Egg function that will show frmStrings if + ' lblCustomMass is double-clicked 3 times in a row, with a maximum of + ' two seconds betwen clicks + + Static intDblClickCount As Integer + Static lngLastClickTime As Long + + If Timer() < lngLastClickTime + 2 Then + intDblClickCount = intDblClickCount + 1 + If intDblClickCount > 2 Then + frmStrings.Show + intDblClickCount = 0 + End If + Else + intDblClickCount = 1 + End If + lngLastClickTime = Timer() +End Sub + +Private Sub optWeightSource_Click(Index As Integer) + ShowHideMassInputControlsGlobal Me + + SynchronizeQuantitiesWithDLL mmtSampleMass + SynchronizeQuantitiesWithDLL mmtQuantityAmount + + ComputeTargetConcentration +End Sub + +Private Sub txtCustomMass_Change() + SynchronizeQuantitiesWithDLL mmtSampleMass + SynchronizeQuantitiesWithDLL mmtQuantityAmount + SynchronizeQuantitiesWithDLL mmtDilutionInitialConcentration + + If cboDilutionMode.ListIndex <> dmFindFinalMolarity Then + SynchronizeQuantitiesWithDLL mmtDilutionFinalConcentration + End If + + ComputeTargetConcentration + FindDilutionValues + + mLastControlChanged = mmtNone +End Sub + +Private Sub txtCustomMass_GotFocus() + HighlightOnFocus txtCustomMass +End Sub + +Private Sub txtCustomMass_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtCustomMass, KeyAscii, True, True, True, False, True, False, False, False, False, True +End Sub + +Private Sub txtDensity_Change() + SynchronizeQuantitiesWithDLL mmtSampleDensity + + ComputeTargetConcentration + mLastControlChanged = mmtQuantityVolume +End Sub + +Private Sub txtDensity_GotFocus() + HighlightOnFocus txtDensity +End Sub + +Private Sub txtDensity_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtDensity, KeyAscii, True, True, True, False, True, False, False, False, False, True +End Sub + +Private Sub txtFromNum_Change() + SynchronizeQuantitiesWithDLL mmtQuantityAmount + + ComputeTargetConcentration + mLastControlChanged = mmtQuantityAmount +End Sub + +Private Sub txtFromNum_GotFocus() + HighlightOnFocus txtFromNum +End Sub + +Private Sub txtFromNum_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtFromNum, KeyAscii, True, True, True, False, True, False, False, False, False, True +End Sub + +Private Sub txtConcentration_Change() + SynchronizeQuantitiesWithDLL mmtQuantityConcentration + mLastControlChanged = mmtQuantityConcentration + + SynchronizeLinkedMolarities False +End Sub + +Private Sub txtConcentration_GotFocus() + HighlightOnFocus txtConcentration +End Sub + +Private Sub txtConcentration_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtConcentration, KeyAscii, True, True, True, False, True, False, False, False, False, True +End Sub + +Private Sub txtDilutionConcentrationFinal_Change() + If cboDilutionMode.ListIndex = dmFindFinalMolarity Then Exit Sub + + SynchronizeQuantitiesWithDLL mmtDilutionFinalConcentration + FindDilutionValues +End Sub + +Private Sub txtDilutionConcentrationFinal_GotFocus() + HighlightOnFocus txtDilutionConcentrationFinal +End Sub + +Private Sub txtDilutionConcentrationFinal_KeyPress(KeyAscii As Integer) + If cboDilutionMode.ListIndex = dmFindFinalMolarity Then + ' Check for Ctrl+C (copy) + ' Other keystrokes are not allowed + If KeyAscii <> 3 And KeyAscii <> 1 And KeyAscii <> 1 Then + KeyAscii = 0 + Exit Sub + End If + End If + + TextBoxKeyPressHandler txtDilutionConcentrationFinal, KeyAscii, True, True, True, False, True, False, False, False, False, True + +End Sub + +Private Sub txtDilutionConcentrationFinal_Validate(Cancel As Boolean) + RemoveNegativeValue txtDilutionConcentrationFinal +End Sub + +Private Sub txtDilutionConcentrationInitial_Change() + + SynchronizeLinkedMolarities True + + If cboDilutionMode.ListIndex = dmFindInitialMolarity Then Exit Sub + + SynchronizeQuantitiesWithDLL mmtDilutionInitialConcentration + + FindDilutionValues +End Sub + +Private Sub txtDilutionConcentrationInitial_GotFocus() + HighlightOnFocus txtDilutionConcentrationInitial +End Sub + +Private Sub txtDilutionConcentrationInitial_KeyPress(KeyAscii As Integer) + If cboDilutionMode.ListIndex = dmFindInitialMolarity Then + ' Check for Ctrl+C (copy) + ' Other keystrokes are not allowed + If KeyAscii <> 3 And KeyAscii <> 1 Then + KeyAscii = 0 + Exit Sub + End If + End If + + TextBoxKeyPressHandler txtDilutionConcentrationInitial, KeyAscii, True, True, True, False, True, False, False, False, False, True + +End Sub + +Private Sub txtDilutionConcentrationInitial_Validate(Cancel As Boolean) + RemoveNegativeValue txtDilutionConcentrationInitial +End Sub + +Private Sub txtVolume_Change() + SynchronizeQuantitiesWithDLL mmtQuantityVolume + mLastControlChanged = mmtQuantityVolume +End Sub + +Private Sub txtVolume_GotFocus() + HighlightOnFocus txtVolume +End Sub + +Private Sub txtVolume_KeyPress(KeyAscii As Integer) + TextBoxKeyPressHandler txtVolume, KeyAscii, True, True, True, False, True, False, False, False, False, True +End Sub + +Private Sub txtDilutingSolventVolume_Change() + HandleDilutingSolventVolumeChange +End Sub + +Private Sub txtDilutingSolventVolume_GotFocus() + HighlightOnFocus txtDilutingSolventVolume +End Sub + +Private Sub txtDilutingSolventVolume_KeyPress(KeyAscii As Integer) + If cboDilutionMode.ListIndex = dmFindRequiredDilutionVolumes Or _ + cboDilutionMode.ListIndex = dmFindRequiredTotalVolume Then + ' Check for Ctrl+C (copy) + ' Other keystrokes are not allowed + If KeyAscii <> 3 And KeyAscii <> 1 Then + KeyAscii = 0 + Exit Sub + End If + End If + + TextBoxKeyPressHandler txtDilutingSolventVolume, KeyAscii, True, True, True, False, True, False, False, False, False, True + +End Sub + +Private Sub txtDilutingSolventVolume_Validate(Cancel As Boolean) + RemoveNegativeValue txtDilutingSolventVolume +End Sub + +Private Sub txtStockSolutionVolume_Change() + If cboDilutionMode.ListIndex = dmFindRequiredDilutionVolumes Then Exit Sub + + SynchronizeQuantitiesWithDLL mmtDilutionVolumeStock + + FindDilutionValues + +End Sub + +Private Sub txtStockSolutionVolume_GotFocus() + HighlightOnFocus txtStockSolutionVolume +End Sub + +Private Sub txtStockSolutionVolume_KeyPress(KeyAscii As Integer) + If cboDilutionMode.ListIndex = dmFindRequiredDilutionVolumes Then + ' Check for Ctrl+C (copy) + If KeyAscii <> 3 And KeyAscii <> 1 Then + KeyAscii = 0 + Exit Sub + End If + End If + + TextBoxKeyPressHandler txtStockSolutionVolume, KeyAscii, True, True, True, False, True, False, False, False, False, True + +End Sub + +Private Sub txtStockSolutionVolume_Validate(Cancel As Boolean) + RemoveNegativeValue txtStockSolutionVolume +End Sub + +Private Sub txtTotalVolume_Change() + + If cboDilutionMode.ListIndex = dmFindRequiredTotalVolume Then Exit Sub + + SynchronizeQuantitiesWithDLL mmtDilutionTotalVolume + + If mUpdatingTotalSolventVolume Then Exit Sub + FindDilutionValues + +End Sub + +Private Sub txtTotalVolume_GotFocus() + HighlightOnFocus txtTotalVolume +End Sub + +Private Sub txtTotalVolume_KeyPress(KeyAscii As Integer) + If cboDilutionMode.ListIndex = dmFindRequiredTotalVolume Then + ' Check for Ctrl+C (copy) + ' Other keystrokes are not allowed + If KeyAscii <> 3 And KeyAscii <> 1 Then + KeyAscii = 0 + Exit Sub + End If + End If + + TextBoxKeyPressHandler txtTotalVolume, KeyAscii, True, True, True, False, True, False, False, False, False, True + +End Sub + +Private Sub txtTotalVolume_Validate(Cancel As Boolean) + RemoveNegativeValue txtTotalVolume +End Sub diff --git a/MMConv.frx b/MMConv.frx new file mode 100644 index 0000000000000000000000000000000000000000..9dd946638f4b22d024464a3e733868cc15b83ef8 GIT binary patch literal 2380 zcmeHJ!A`4Mz$0bBTlzxg3hOmo!XMy*Oc{2~w%ropLq$=* ziSj%r?p9nj*PpT{1x^b54+Vtibr}gqbXbo>A26gkbXE_&E#Dbn-SYv=;>>p(;Ct@C zcKp^Gw9hy9X`gTJ!+7(2d!LH`r{@!E*}+NA0pCE3Rz-V!!>b{4YUG#GxKGKi$1;iAn-av5Z_^FY z@>{g!w9&8Qhl2I%cRW3QNxH0~_i@mteKn6O{-r9OiT@hLKG1Wm(oFj*NLG;v)8*VB z-Hy~O)Y{`12g%&`#^bfpFG-d?#n^aCCsC~QbP=ShF!SW&L{88`PQo