From 7301a2415adab88038b291fc54caeeb3a5a47a44 Mon Sep 17 00:00:00 2001
From: hansonr
Date: Fri, 24 Jul 2015 10:27:35 +0100
Subject: [PATCH] JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
---
.j2s | 16 +-
bin/.gitignore | 9 +
bin/MCview/Atom.js | 110 +-
bin/MCview/Bond.js | 68 +-
bin/MCview/PDBChain.class | Bin 12367 -> 12365 bytes
bin/MCview/PDBChain.js | 572 +-
bin/MCview/PDBfile.class | Bin 13881 -> 13876 bytes
bin/MCview/PDBfile.js | 640 +-
bin/MCview/Residue.js | 42 +-
bin/awt2swing/Button.js | 8 +-
bin/awt2swing/Canvas.js | 8 +-
bin/awt2swing/Checkbox.js | 24 +-
bin/awt2swing/CheckboxMenuItem.js | 32 +-
bin/awt2swing/Choice.js | 16 +-
bin/awt2swing/Frame.js | 42 +-
bin/awt2swing/Label.js | 16 +-
bin/awt2swing/Menu.js | 28 +-
bin/awt2swing/MenuBar.js | 8 +-
bin/awt2swing/MenuItem.js | 8 +-
bin/awt2swing/Panel.js | 18 +-
bin/awt2swing/PopupMenu.js | 8 +-
bin/awt2swing/ScrollPane.js | 8 +-
bin/awt2swing/Scrollbar.js | 8 +-
bin/awt2swing/TextArea.js | 8 +-
bin/awt2swing/TextField.js | 46 +-
bin/com/stevesoft/pat/AmpersandRule.js | 32 +-
bin/com/stevesoft/pat/Any.js | 60 +-
bin/com/stevesoft/pat/BackG.js | 68 +-
bin/com/stevesoft/pat/BackMatch.js | 72 +-
bin/com/stevesoft/pat/BackRefRule.js | 50 +-
bin/com/stevesoft/pat/Backup.js | 68 +-
bin/com/stevesoft/pat/BasicStringBufferLike.js | 4 +-
bin/com/stevesoft/pat/Bits.js | 5916 +--
bin/com/stevesoft/pat/Boundary.js | 104 +-
bin/com/stevesoft/pat/Bracket.js | 120 +-
bin/com/stevesoft/pat/CaseMgr.js | 188 +-
bin/com/stevesoft/pat/ChangeRule.js | 70 +-
bin/com/stevesoft/pat/CodeRule.js | 48 +-
bin/com/stevesoft/pat/Ctrl.js | 8 +-
bin/com/stevesoft/pat/Custom.js | 82 +-
bin/com/stevesoft/pat/CustomEndpoint.js | 54 +-
bin/com/stevesoft/pat/DirFileRegex.js | 8 +-
bin/com/stevesoft/pat/DotMulti.class | Bin 3105 -> 3082 bytes
bin/com/stevesoft/pat/DotMulti.js | 258 +-
bin/com/stevesoft/pat/End.js | 76 +-
bin/com/stevesoft/pat/FastBracket.js | 312 +-
bin/com/stevesoft/pat/FastMulti.class | Bin 3480 -> 3453 bytes
bin/com/stevesoft/pat/FastMulti.js | 216 +-
bin/com/stevesoft/pat/FileRegex.js | 8 +-
bin/com/stevesoft/pat/Group.js | 96 +-
bin/com/stevesoft/pat/LeftRule.js | 32 +-
bin/com/stevesoft/pat/MessageManager.js | 24 +-
bin/com/stevesoft/pat/Multi.js | 124 +-
bin/com/stevesoft/pat/MultiMin.js | 18 +-
bin/com/stevesoft/pat/Multi_stage2.js | 190 +-
bin/com/stevesoft/pat/NoPattern.js | 32 +-
bin/com/stevesoft/pat/NonDirFileRegex.js | 8 +-
bin/com/stevesoft/pat/NotImplementedError.js | 8 +-
bin/com/stevesoft/pat/NullPattern.js | 40 +-
bin/com/stevesoft/pat/NullRule.js | 30 +-
bin/com/stevesoft/pat/Or.js | 184 +-
bin/com/stevesoft/pat/OrMark.js | 108 +-
bin/com/stevesoft/pat/PartialBuffer.js | 100 +-
bin/com/stevesoft/pat/Pattern.js | 306 +-
bin/com/stevesoft/pat/PatternSub.js | 14 +-
bin/com/stevesoft/pat/PopRule.js | 24 +-
bin/com/stevesoft/pat/Prop.js | 80 +-
bin/com/stevesoft/pat/Pthings.js | 26 +-
bin/com/stevesoft/pat/PushRule.js | 70 +-
bin/com/stevesoft/pat/RBuffer.js | 64 +-
bin/com/stevesoft/pat/Range.js | 130 +-
bin/com/stevesoft/pat/RegOpt.class | Bin 4112 -> 4111 bytes
bin/com/stevesoft/pat/RegOpt.js | 508 +-
bin/com/stevesoft/pat/RegRes.js | 310 +-
bin/com/stevesoft/pat/RegSyntax.js | 16 +-
bin/com/stevesoft/pat/RegSyntaxError.js | 32 +-
bin/com/stevesoft/pat/Regex.class | Bin 27436 -> 27425 bytes
bin/com/stevesoft/pat/Regex.js | 2052 +-
bin/com/stevesoft/pat/RegexReader.class | Bin 5183 -> 5182 bytes
bin/com/stevesoft/pat/RegexReader.js | 328 +-
bin/com/stevesoft/pat/RegexTokenizer.js | 208 +-
bin/com/stevesoft/pat/RegexWriter.class | Bin 4599 -> 4597 bytes
bin/com/stevesoft/pat/RegexWriter.js | 268 +-
bin/com/stevesoft/pat/ReplaceRule.class | Bin 7171 -> 7164 bytes
bin/com/stevesoft/pat/ReplaceRule.js | 406 +-
bin/com/stevesoft/pat/Replacer.class | Bin 7103 -> 7102 bytes
bin/com/stevesoft/pat/Replacer.js | 460 +-
bin/com/stevesoft/pat/RightRule.js | 32 +-
bin/com/stevesoft/pat/Rthings.js | 70 +-
bin/com/stevesoft/pat/RuleHolder.js | 64 +-
bin/com/stevesoft/pat/Skip.js | 216 +-
bin/com/stevesoft/pat/Skip2.js | 62 +-
bin/com/stevesoft/pat/SkipBMH.js | 308 +-
bin/com/stevesoft/pat/Skipped.js | 68 +-
bin/com/stevesoft/pat/SpecialRule.js | 22 +-
bin/com/stevesoft/pat/Start.js | 70 +-
bin/com/stevesoft/pat/StrPos.class | Bin 2499 -> 2498 bytes
bin/com/stevesoft/pat/StrPos.js | 218 +-
bin/com/stevesoft/pat/StringBufferLike.class | Bin 1770 -> 1769 bytes
bin/com/stevesoft/pat/StringBufferLike.js | 124 +-
bin/com/stevesoft/pat/StringLike.js | 4 +-
bin/com/stevesoft/pat/StringRule.js | 48 +-
bin/com/stevesoft/pat/SubMark.js | 42 +-
bin/com/stevesoft/pat/TransPat.js | 70 +-
bin/com/stevesoft/pat/Transformer.js | 260 +-
bin/com/stevesoft/pat/UniValidator.js | 24 +-
bin/com/stevesoft/pat/Util.js | 4 +-
bin/com/stevesoft/pat/Validator.js | 48 +-
bin/com/stevesoft/pat/WantMoreTextReplaceRule.js | 30 +-
bin/com/stevesoft/pat/lookAhead.js | 124 +-
bin/com/stevesoft/pat/oneChar.js | 110 +-
bin/com/stevesoft/pat/package.js | 68 +-
bin/com/stevesoft/pat/parsePerl.class | Bin 5344 -> 5368 bytes
bin/com/stevesoft/pat/parsePerl.js | 534 +-
bin/com/stevesoft/pat/patInf.js | 18 +-
bin/com/stevesoft/pat/patInt.js | 188 +-
bin/com/stevesoft/pat/wrap/CharArrayBufferWrap.js | 76 +-
bin/com/stevesoft/pat/wrap/CharArrayWrap.js | 102 +-
bin/com/stevesoft/pat/wrap/RandomAccessFileWrap.js | 4 +-
bin/com/stevesoft/pat/wrap/StringBufferWrap.js | 68 +-
bin/com/stevesoft/pat/wrap/StringWrap.js | 78 +-
bin/com/stevesoft/pat/wrap/WriterWrap.js | 82 +-
bin/fr/orsay/lri/varna/models/rna/RNA.js | 20 +-
bin/jalview/analysis/AAFrequency.class | Bin 12621 -> 12618 bytes
bin/jalview/analysis/AAFrequency.js | 616 +-
bin/jalview/analysis/AlignSeq.class | Bin 20989 -> 20964 bytes
bin/jalview/analysis/AlignSeq.js | 1172 +-
.../analysis/AlignmentAnnotationUtils.class | Bin 5384 -> 5381 bytes
bin/jalview/analysis/AlignmentAnnotationUtils.js | 146 +-
bin/jalview/analysis/AlignmentSorter.class | Bin 15128 -> 15127 bytes
bin/jalview/analysis/AlignmentSorter.js | 766 +-
bin/jalview/analysis/AlignmentUtils.class | Bin 28010 -> 28007 bytes
bin/jalview/analysis/AlignmentUtils.js | 1064 +-
bin/jalview/analysis/AnnotationSorter.js | 342 +-
bin/jalview/analysis/CodingUtils.js | 128 +-
bin/jalview/analysis/CodonComparator.js | 42 +-
bin/jalview/analysis/Conservation.class | Bin 11919 -> 11933 bytes
bin/jalview/analysis/Conservation.js | 741 +-
bin/jalview/analysis/Dna.class | Bin 14855 -> 14853 bytes
bin/jalview/analysis/Dna.js | 654 +-
bin/jalview/analysis/Finder.class | Bin 6101 -> 6100 bytes
bin/jalview/analysis/Finder.js | 364 +-
bin/jalview/analysis/Grouping.js | 176 +-
bin/jalview/analysis/NJTree.class | Bin 16357 -> 16353 bytes
bin/jalview/analysis/NJTree.js | 1154 +-
bin/jalview/analysis/PCA.js | 326 +-
bin/jalview/analysis/ParseProperties.js | 150 +-
bin/jalview/analysis/Rna.js | 212 +-
bin/jalview/analysis/SecStrConsensus.class | Bin 5370 -> 5369 bytes
bin/jalview/analysis/SecStrConsensus.js | 278 +-
bin/jalview/analysis/SeqsetUtils.js | 248 +-
.../analysis/SequenceIdMatcher$SeqIdName.class | Bin 1883 -> 1875 bytes
bin/jalview/analysis/SequenceIdMatcher.js | 334 +-
bin/jalview/analysis/StructureFrequency.class | Bin 9031 -> 9030 bytes
bin/jalview/analysis/StructureFrequency.js | 520 +-
bin/jalview/analysis/WUSSParseException.js | 40 +-
bin/jalview/analysis/package.js | 10 +-
.../analysis/scoremodels/FeatureScoreModel.js | 172 +-
bin/jalview/analysis/scoremodels/PIDScoreModel.js | 64 +-
.../analysis/scoremodels/PairwiseSeqScoreModel.js | 78 +-
bin/jalview/analysis/scoremodels/SWScoreModel.js | 90 +-
bin/jalview/api/AlignCalcManagerI.js | 4 +-
bin/jalview/api/AlignCalcWorkerI.js | 4 +-
bin/jalview/api/AlignExportSettingI.js | 4 +-
bin/jalview/api/AlignViewControllerGuiI.js | 4 +-
bin/jalview/api/AlignViewControllerI.js | 4 +-
bin/jalview/api/AlignViewportI.js | 8 +-
bin/jalview/api/AlignmentViewPanel.js | 8 +-
bin/jalview/api/ComplexAlignFile.js | 4 +-
bin/jalview/api/FeatureRenderer.js | 4 +-
bin/jalview/api/FeatureSettingsControllerI.js | 4 +-
bin/jalview/api/FeatureSettingsModelI.js | 4 +-
bin/jalview/api/FeaturesDisplayedI.js | 4 +-
bin/jalview/api/OOMHandlerI.js | 4 +-
bin/jalview/api/RotatableCanvasI.js | 4 +-
bin/jalview/api/SequenceRenderer.js | 4 +-
bin/jalview/api/SequenceStructureBinding.js | 4 +-
bin/jalview/api/SplitContainerI.js | 4 +-
.../api/StructureSelectionManagerProvider.js | 4 +-
bin/jalview/api/ViewStyleI.js | 4 +-
bin/jalview/api/analysis/ScoreModelI.js | 4 +-
bin/jalview/api/analysis/ViewBasedAnalysisI.js | 4 +-
.../api/structures/JalviewStructureDisplayI.js | 4 +-
bin/jalview/appletgui/APopupMenu.class | Bin 33298 -> 33291 bytes
bin/jalview/appletgui/APopupMenu.js | 1594 +-
bin/jalview/appletgui/AlignFrame.class | Bin 80437 -> 80413 bytes
bin/jalview/appletgui/AlignFrame.js | 4780 +-
bin/jalview/appletgui/AlignViewport.js | 458 +-
bin/jalview/appletgui/AlignmentPanel.class | Bin 21305 -> 21282 bytes
bin/jalview/appletgui/AlignmentPanel.js | 1220 +-
.../appletgui/AnnotationColourChooser.class | Bin 13452 -> 13451 bytes
bin/jalview/appletgui/AnnotationColourChooser.js | 696 +-
.../appletgui/AnnotationColumnChooser.class | Bin 16700 -> 16698 bytes
bin/jalview/appletgui/AnnotationColumnChooser.js | 1244 +-
bin/jalview/appletgui/AnnotationLabels.class | Bin 18071 -> 18068 bytes
bin/jalview/appletgui/AnnotationLabels.js | 932 +-
bin/jalview/appletgui/AnnotationPanel.class | Bin 13891 -> 13890 bytes
bin/jalview/appletgui/AnnotationPanel.js | 728 +-
bin/jalview/appletgui/AnnotationRowFilter.js | 262 +-
bin/jalview/appletgui/AppletJmol.js | 96 +-
bin/jalview/appletgui/AppletJmolBinding.js | 4 +-
bin/jalview/appletgui/CutAndPasteTransfer.class | Bin 12941 -> 12939 bytes
bin/jalview/appletgui/CutAndPasteTransfer.js | 528 +-
bin/jalview/appletgui/EditNameDialog.js | 88 +-
bin/jalview/appletgui/EmbmenuFrame.js | 220 +-
bin/jalview/appletgui/ExtJmol.js | 34 +-
bin/jalview/appletgui/FeatureColourChooser.class | Bin 11646 -> 11645 bytes
bin/jalview/appletgui/FeatureColourChooser.js | 584 +-
bin/jalview/appletgui/FeatureRenderer.class | Bin 8664 -> 8663 bytes
bin/jalview/appletgui/FeatureRenderer.js | 544 +-
bin/jalview/appletgui/FeatureSettings.js | 888 +-
bin/jalview/appletgui/Finder.js | 368 +-
bin/jalview/appletgui/FontChooser.js | 518 +-
bin/jalview/appletgui/IdCanvas.class | Bin 8177 -> 8175 bytes
bin/jalview/appletgui/IdCanvas.js | 382 +-
bin/jalview/appletgui/IdPanel.js | 570 +-
bin/jalview/appletgui/IdwidthAdjuster.js | 132 +-
bin/jalview/appletgui/JVDialog.js | 80 +-
bin/jalview/appletgui/OverviewPanel.class | Bin 10000 -> 9997 bytes
bin/jalview/appletgui/OverviewPanel.js | 524 +-
bin/jalview/appletgui/PCAPanel.class | Bin 10507 -> 10506 bytes
bin/jalview/appletgui/PCAPanel.js | 506 +-
bin/jalview/appletgui/PaintRefresher.class | Bin 4754 -> 4753 bytes
bin/jalview/appletgui/PaintRefresher.js | 252 +-
bin/jalview/appletgui/PairwiseAlignPanel.class | Bin 5835 -> 5834 bytes
bin/jalview/appletgui/PairwiseAlignPanel.js | 200 +-
bin/jalview/appletgui/RedundancyPanel.js | 330 +-
bin/jalview/appletgui/RotatableCanvas.js | 742 +-
bin/jalview/appletgui/ScalePanel.class | Bin 8976 -> 8974 bytes
bin/jalview/appletgui/ScalePanel.js | 496 +-
bin/jalview/appletgui/SeqCanvas.class | Bin 14498 -> 14493 bytes
bin/jalview/appletgui/SeqCanvas.js | 822 +-
bin/jalview/appletgui/SeqPanel.class | Bin 31615 -> 31601 bytes
bin/jalview/appletgui/SeqPanel.js | 1924 +-
bin/jalview/appletgui/SequenceRenderer.class | Bin 7516 -> 7513 bytes
bin/jalview/appletgui/SequenceRenderer.js | 392 +-
bin/jalview/appletgui/SliderPanel.class | Bin 9217 -> 9215 bytes
bin/jalview/appletgui/SliderPanel.js | 540 +-
bin/jalview/appletgui/SplitFrame.js | 216 +-
bin/jalview/appletgui/TitledPanel.js | 86 +-
bin/jalview/appletgui/Tooltip.js | 134 +-
bin/jalview/appletgui/TreeCanvas.class | Bin 16085 -> 16082 bytes
bin/jalview/appletgui/TreeCanvas.js | 750 +-
bin/jalview/appletgui/TreePanel$TreeLoader.class | Bin 4901 -> 4900 bytes
bin/jalview/appletgui/TreePanel.class | Bin 8600 -> 8599 bytes
bin/jalview/appletgui/TreePanel.js | 522 +-
bin/jalview/appletgui/UserDefinedColours.class | Bin 17293 -> 17291 bytes
bin/jalview/appletgui/UserDefinedColours.js | 962 +-
bin/jalview/bin/Cache.js | 58 +-
bin/jalview/bin/JalviewLite$4.class | Bin 1978 -> 1977 bytes
bin/jalview/bin/JalviewLite$LoadJmolThread.class | Bin 1682 -> 1680 bytes
bin/jalview/bin/JalviewLite$LoadingThread.class | Bin 15453 -> 15460 bytes
bin/jalview/bin/JalviewLite.class | Bin 39237 -> 39228 bytes
bin/jalview/bin/JalviewLite.js | 3234 +-
bin/jalview/commands/ChangeCaseCommand.js | 148 +-
bin/jalview/commands/CommandI.js | 4 +-
bin/jalview/commands/EditCommand.class | Bin 20593 -> 20580 bytes
bin/jalview/commands/EditCommand.js | 1322 +-
bin/jalview/commands/OrderCommand.js | 76 +-
bin/jalview/commands/RemoveGapColCommand.js | 90 +-
bin/jalview/commands/RemoveGapsCommand.js | 112 +-
bin/jalview/commands/SlideSequencesCommand.js | 96 +-
bin/jalview/commands/TrimRegionCommand.class | Bin 3917 -> 3916 bytes
bin/jalview/commands/TrimRegionCommand.js | 182 +-
bin/jalview/controller/AlignViewController.class | Bin 11025 -> 11020 bytes
bin/jalview/controller/AlignViewController.js | 438 +-
.../controller/FeatureSettingsController.js | 14 +-
.../controller/FeatureSettingsControllerGuiI.js | 4 +-
bin/jalview/datamodel/ASequence.js | 8 +-
bin/jalview/datamodel/ASequenceI.js | 4 +-
bin/jalview/datamodel/AlignedCodon.js | 84 +-
bin/jalview/datamodel/AlignedCodonFrame.class | Bin 7101 -> 7098 bytes
bin/jalview/datamodel/AlignedCodonFrame.js | 396 +-
bin/jalview/datamodel/Alignment.class | Bin 28118 -> 28115 bytes
bin/jalview/datamodel/Alignment.js | 1630 +-
bin/jalview/datamodel/AlignmentAnnotation.class | Bin 19214 -> 19217 bytes
bin/jalview/datamodel/AlignmentAnnotation.js | 1246 +-
bin/jalview/datamodel/AlignmentI.js | 8 +-
bin/jalview/datamodel/AlignmentOrder.js | 236 +-
bin/jalview/datamodel/AlignmentView.class | Bin 20040 -> 20024 bytes
bin/jalview/datamodel/AlignmentView.js | 1250 +-
bin/jalview/datamodel/AnnotatedCollectionI.js | 8 +-
bin/jalview/datamodel/Annotation.class | Bin 2497 -> 2539 bytes
bin/jalview/datamodel/Annotation.js | 144 +-
bin/jalview/datamodel/BinaryNode.js | 224 +-
bin/jalview/datamodel/BinarySequence.js | 198 +-
bin/jalview/datamodel/CigarArray.class | Bin 6709 -> 6708 bytes
bin/jalview/datamodel/CigarArray.js | 376 +-
bin/jalview/datamodel/CigarBase.class | Bin 7756 -> 7753 bytes
bin/jalview/datamodel/CigarBase.js | 620 +-
bin/jalview/datamodel/CigarCigar.js | 44 +-
bin/jalview/datamodel/CigarSimple.js | 8 +-
bin/jalview/datamodel/ColumnSelection.class | Bin 20097 -> 20107 bytes
bin/jalview/datamodel/ColumnSelection.js | 1364 +-
bin/jalview/datamodel/DBRefEntry.js | 186 +-
bin/jalview/datamodel/DBRefSource.js | 58 +-
bin/jalview/datamodel/FeatureProperties.js | 40 +-
bin/jalview/datamodel/GraphLine.js | 72 +-
bin/jalview/datamodel/HiddenSequences.class | Bin 6278 -> 6277 bytes
bin/jalview/datamodel/HiddenSequences.js | 324 +-
bin/jalview/datamodel/IncompleteCodonException.js | 8 +-
bin/jalview/datamodel/Mapping.js | 608 +-
bin/jalview/datamodel/NodeTransformI.js | 4 +-
bin/jalview/datamodel/PDBEntry.js | 176 +-
bin/jalview/datamodel/Provenance.js | 50 +-
bin/jalview/datamodel/ProvenanceEntry.js | 62 +-
bin/jalview/datamodel/RnaViewerModel.js | 42 +-
bin/jalview/datamodel/SearchResults.js | 274 +-
.../datamodel/SecondaryStructureAnnotation.js | 46 +-
bin/jalview/datamodel/SeqCigar.class | Bin 10229 -> 10227 bytes
bin/jalview/datamodel/SeqCigar.js | 518 +-
bin/jalview/datamodel/Sequence.class | Bin 18984 -> 18983 bytes
bin/jalview/datamodel/Sequence.js | 1316 +-
bin/jalview/datamodel/SequenceCollectionI.js | 4 +-
bin/jalview/datamodel/SequenceDummy.js | 40 +-
bin/jalview/datamodel/SequenceFeature.js | 340 +-
bin/jalview/datamodel/SequenceGroup.class | Bin 21295 -> 21296 bytes
bin/jalview/datamodel/SequenceGroup.js | 1202 +-
bin/jalview/datamodel/SequenceI.js | 8 +-
bin/jalview/datamodel/SequenceNode.js | 128 +-
bin/jalview/datamodel/SequencePoint.js | 24 +-
bin/jalview/datamodel/StructureViewerModel.js | 312 +-
bin/jalview/datamodel/UniprotEntry.js | 116 +-
bin/jalview/datamodel/UniprotFile.js | 26 +-
bin/jalview/datamodel/UniprotProteinName.js | 26 +-
bin/jalview/datamodel/UniprotSequence.js | 42 +-
bin/jalview/ext/jmol/JmolCommands.class | Bin 5225 -> 5223 bytes
bin/jalview/ext/jmol/JmolCommands.js | 138 +-
bin/jalview/ext/varna/JalviewVarnaBinding.js | 8 +-
bin/jalview/ext/varna/RnaModel.js | 34 +-
bin/jalview/ext/varna/VarnaCommands.class | Bin 4789 -> 4787 bytes
bin/jalview/ext/varna/VarnaCommands.js | 132 +-
bin/jalview/io/AlignFile.js | 316 +-
bin/jalview/io/AlignmentProperties.js | 156 +-
bin/jalview/io/AnnotationFile.class | Bin 36134 -> 36157 bytes
bin/jalview/io/AnnotationFile.js | 2006 +-
bin/jalview/io/AppletFormatAdapter.class | Bin 16230 -> 16239 bytes
bin/jalview/io/AppletFormatAdapter.js | 778 +-
bin/jalview/io/FastaFile.class | Bin 4722 -> 4720 bytes
bin/jalview/io/FastaFile.js | 188 +-
bin/jalview/io/FeaturesFile.class | Bin 30520 -> 30386 bytes
bin/jalview/io/FeaturesFile.js | 1544 +-
bin/jalview/io/FileParse.class | Bin 9190 -> 9187 bytes
bin/jalview/io/FileParse.js | 500 +-
bin/jalview/io/IdentifyFile.class | Bin 4982 -> 4956 bytes
bin/jalview/io/IdentifyFile.js | 314 +-
bin/jalview/io/JPredFile.class | Bin 7157 -> 7157 bytes
bin/jalview/io/JPredFile.js | 370 +-
bin/jalview/io/JnetAnnotationMaker.class | Bin 5784 -> 5782 bytes
bin/jalview/io/JnetAnnotationMaker.js | 180 +-
bin/jalview/io/MSFfile.class | Bin 7530 -> 7525 bytes
bin/jalview/io/MSFfile.js | 380 +-
bin/jalview/io/ModellerDescription.class | Bin 8332 -> 8330 bytes
bin/jalview/io/ModellerDescription.js | 472 +-
bin/jalview/io/NewickFile.class | Bin 16004 -> 15963 bytes
bin/jalview/io/NewickFile.js | 816 +-
bin/jalview/io/PIRFile.class | Bin 4310 -> 4308 bytes
bin/jalview/io/PIRFile.js | 202 +-
bin/jalview/io/PfamFile.js | 152 +-
bin/jalview/io/PhylipFile.js | 206 +-
bin/jalview/io/PileUpfile.class | Bin 3335 -> 3334 bytes
bin/jalview/io/PileUpfile.js | 164 +-
bin/jalview/io/SequenceAnnotationReport.class | Bin 9279 -> 9255 bytes
bin/jalview/io/SequenceAnnotationReport.js | 362 +-
bin/jalview/io/TCoffeeScoreFile.class | Bin 12222 -> 12230 bytes
bin/jalview/io/TCoffeeScoreFile.js | 548 +-
bin/jalview/javascript/JSFunctionExec$1.class | Bin 3133 -> 3139 bytes
bin/jalview/javascript/JSFunctionExec.class | Bin 3701 -> 3700 bytes
bin/jalview/javascript/JSFunctionExec.js | 332 +-
bin/jalview/javascript/JalviewLiteJsApi.js | 4 +-
bin/jalview/javascript/JsCallBack.js | 4 +-
bin/jalview/javascript/JsSelectionSender.js | 140 +-
bin/jalview/javascript/MouseOverListener.js | 92 +-
.../javascript/MouseOverStructureListener.js | 286 +-
bin/jalview/jsdev/Constants.js | 26 +-
bin/jalview/jsdev/GenericFileAdapter.js | 170 +-
bin/jalview/jsdev/JSRegex.js | 110 +-
bin/jalview/jsdev/JavaScriptRegExp.js | 4 +-
bin/jalview/jsdev/RegExp.js | 30 +-
bin/jalview/jsdev/api/RegExpInterface.js | 4 +-
bin/jalview/jsdev/api/VarnaRNA.js | 4 +-
bin/jalview/math/AlignmentDimension.js | 54 +-
bin/jalview/math/Matrix.class | Bin 9779 -> 9741 bytes
bin/jalview/math/Matrix.js | 846 +-
bin/jalview/math/RotatableMatrix.js | 228 +-
bin/jalview/renderer/AnnotationRenderer.class | Bin 23751 -> 23745 bytes
bin/jalview/renderer/AnnotationRenderer.js | 1610 +-
bin/jalview/renderer/AwtRenderPanelI.js | 8 +-
.../renderer/seqfeatures/FeatureRenderer.class | Bin 7512 -> 7505 bytes
.../renderer/seqfeatures/FeatureRenderer.js | 374 +-
bin/jalview/schemes/AnnotationColourGradient.class | Bin 8212 -> 8210 bytes
bin/jalview/schemes/AnnotationColourGradient.js | 400 +-
bin/jalview/schemes/Blosum62ColourScheme.class | Bin 2366 -> 2363 bytes
bin/jalview/schemes/Blosum62ColourScheme.js | 74 +-
bin/jalview/schemes/BuriedColourScheme.js | 24 +-
bin/jalview/schemes/ClustalxColourScheme.js | 474 +-
bin/jalview/schemes/ColourSchemeI.js | 4 +-
bin/jalview/schemes/ColourSchemeProperty.js | 584 +-
bin/jalview/schemes/Consensus.js | 90 +-
bin/jalview/schemes/CovariationColourScheme.js | 82 +-
bin/jalview/schemes/FollowerColourScheme.js | 52 +-
bin/jalview/schemes/GraduatedColor.js | 320 +-
bin/jalview/schemes/HelixColourScheme.js | 24 +-
bin/jalview/schemes/HydrophobicColourScheme.js | 24 +-
bin/jalview/schemes/NucleotideColourScheme.js | 62 +-
bin/jalview/schemes/PIDColourScheme.js | 78 +-
.../schemes/PurinePyrimidineColourScheme.js | 62 +-
bin/jalview/schemes/RNAHelicesColour.js | 136 +-
bin/jalview/schemes/RNAHelicesColourChooser.js | 126 +-
bin/jalview/schemes/RNAInteractionColourScheme.js | 54 +-
bin/jalview/schemes/ResidueColourScheme.js | 292 +-
bin/jalview/schemes/ResidueProperties.class | Bin 39973 -> 39971 bytes
bin/jalview/schemes/ResidueProperties.js | 2180 +-
bin/jalview/schemes/ScoreColourScheme.js | 86 +-
bin/jalview/schemes/ScoreMatrix.js | 172 +-
bin/jalview/schemes/StrandColourScheme.js | 24 +-
bin/jalview/schemes/TCoffeeColourScheme.js | 90 +-
bin/jalview/schemes/TaylorColourScheme.js | 16 +-
bin/jalview/schemes/TurnColourScheme.js | 24 +-
bin/jalview/schemes/UserColourScheme.class | Bin 5830 -> 5795 bytes
bin/jalview/schemes/UserColourScheme.js | 330 +-
bin/jalview/schemes/ZappoColourScheme.js | 16 +-
bin/jalview/schemes/package.js | 10 +-
.../structure/AlignmentViewPanelListener.js | 4 +-
bin/jalview/structure/AtomSpec.js | 70 +-
bin/jalview/structure/CommandListener.js | 4 +-
.../structure/SecondaryStructureListener.js | 4 +-
bin/jalview/structure/SelectionListener.js | 4 +-
bin/jalview/structure/SelectionSource.js | 4 +-
bin/jalview/structure/SequenceListener.js | 4 +-
bin/jalview/structure/StructureListener.js | 4 +-
bin/jalview/structure/StructureMapping.js | 138 +-
.../structure/StructureMappingcommandSet.js | 26 +-
.../structure/StructureSelectionManager.class | Bin 24238 -> 24256 bytes
bin/jalview/structure/StructureSelectionManager.js | 1022 +-
bin/jalview/structure/VamsasListener.js | 4 +-
bin/jalview/structure/VamsasSource.js | 4 +-
.../models/AAStructureBindingModel.class | Bin 11991 -> 12013 bytes
.../structures/models/AAStructureBindingModel.js | 612 +-
.../models/SequenceStructureBindingModel.js | 48 +-
bin/jalview/util/AWTConsole.js | 187 -
bin/jalview/util/BrowserLauncher.js | 487 -
bin/jalview/util/ColorUtils.js | 60 +-
bin/jalview/util/Comparison.class | Bin 4549 -> 4548 bytes
bin/jalview/util/Comparison.js | 262 +-
bin/jalview/util/DBRefUtils.class | Bin 6392 -> 6391 bytes
bin/jalview/util/DBRefUtils.js | 368 +-
bin/jalview/util/Format.class | Bin 9260 -> 9228 bytes
bin/jalview/util/Format.js | 778 +-
bin/jalview/util/GroupUrlLink.class | Bin 14688 -> 14684 bytes
bin/jalview/util/GroupUrlLink.js | 726 +-
bin/jalview/util/MapList.class | Bin 10604 -> 10600 bytes
bin/jalview/util/MapList.js | 818 +-
bin/jalview/util/MappingUtils.js | 490 +-
bin/jalview/util/MessageManager.class | Bin 3363 -> 3362 bytes
bin/jalview/util/MessageManager.js | 146 +-
bin/jalview/util/ParseHtmlBodyAndLinks.class | Bin 3530 -> 3529 bytes
bin/jalview/util/ParseHtmlBodyAndLinks.js | 156 +-
bin/jalview/util/Platform.js | 60 +-
bin/jalview/util/QuickSort.js | 462 +-
bin/jalview/util/ReverseListIterator.js | 46 +-
bin/jalview/util/ShiftList.js | 134 +-
bin/jalview/util/StringUtils.js | 216 +-
bin/jalview/util/TableSorter.js | 774 +-
bin/jalview/util/UrlLink.class | Bin 6555 -> 6552 bytes
bin/jalview/util/UrlLink.js | 296 +-
bin/jalview/util/jarInputStreamProvider.js | 2 -
bin/jalview/viewmodel/AlignmentViewport.js | 2508 +-
bin/jalview/viewmodel/PCAModel.class | Bin 4995 -> 4999 bytes
bin/jalview/viewmodel/PCAModel.js | 268 +-
.../annotationfilter/AnnotationFilterParameter.js | 166 +-
.../seqfeatures/FeatureRendererModel.class | Bin 17327 -> 17325 bytes
.../viewmodel/seqfeatures/FeatureRendererModel.js | 962 +-
.../seqfeatures/FeatureRendererSettings.js | 86 +-
.../viewmodel/seqfeatures/FeatureSettingsModel.js | 8 +-
.../viewmodel/seqfeatures/FeaturesDisplayed.js | 136 +-
bin/jalview/viewmodel/styles/ViewStyle.js | 914 +-
bin/jalview/workers/AlignCalcManager.js | 384 +-
bin/jalview/workers/AlignCalcWorker.js | 108 +-
bin/jalview/workers/ComplementConsensusThread.js | 92 +-
bin/jalview/workers/ConsensusThread.js | 298 +-
bin/jalview/workers/ConservationThread.js | 216 +-
bin/jalview/workers/StrucConsensusThread.class | Bin 4790 -> 4841 bytes
bin/jalview/workers/StrucConsensusThread.js | 190 +-
bin/java.policy.applet | 7 -
bin/javajs/J2SIgnoreImport.js | 2 +-
bin/javajs/J2SRequireImport.js | 2 +-
bin/javajs/api/BytePoster.js | 4 +-
bin/javajs/api/EigenInterface.js | 4 +-
bin/javajs/api/EventManager.js | 4 +-
bin/javajs/api/FontManager.js | 4 +-
bin/javajs/api/GenericBinaryDocument.js | 4 +-
bin/javajs/api/GenericCifDataParser.js | 8 +-
bin/javajs/api/GenericColor.js | 4 +-
bin/javajs/api/GenericFileInterface.js | 4 +-
bin/javajs/api/GenericImageDialog.js | 4 +-
bin/javajs/api/GenericImageEncoder.js | 4 +-
bin/javajs/api/GenericLineReader.js | 4 +-
bin/javajs/api/GenericMenuInterface.js | 4 +-
bin/javajs/api/GenericMouseInterface.js | 4 +-
bin/javajs/api/GenericPlatform.js | 22 +-
bin/javajs/api/GenericZipInputStream.js | 8 +-
bin/javajs/api/GenericZipTools.js | 4 +-
bin/javajs/api/HTMLElement.js | 4 +-
bin/javajs/api/HTMLWindowEvent.js | 4 +-
bin/javajs/api/Interface.js | 32 +-
bin/javajs/api/JSInterface.js | 4 +-
bin/javajs/api/JSONEncodable.js | 4 +-
bin/javajs/api/JmolObjectInterface.js | 4 +-
bin/javajs/api/PlatformViewer.js | 4 +-
bin/javajs/api/SC.js | 4 +-
bin/javajs/api/SwingController.js | 4 +-
bin/javajs/api/ZInputStream.js | 4 +-
bin/javajs/awt/BorderLayout.js | 20 +-
bin/javajs/awt/Color.js | 86 +-
bin/javajs/awt/Component.js | 240 +-
bin/javajs/awt/Container.js | 130 +-
bin/javajs/awt/Dimension.js | 32 +-
bin/javajs/awt/Font.js | 210 +-
bin/javajs/awt/LayoutManager.js | 4 +-
bin/javajs/awt/event/ActionEvent.js | 22 +-
bin/javajs/awt/event/ActionListener.js | 4 +-
bin/javajs/awt/event/Event.js | 98 +-
bin/javajs/awt/event/ItemEvent.js | 8 +-
bin/javajs/awt/event/WindowEvent.js | 8 +-
bin/javajs/awt/event/WindowListener.js | 4 +-
bin/javajs/export/PDFCreator.js | 600 +-
bin/javajs/export/PDFObject.class | Bin 5790 -> 5789 bytes
bin/javajs/export/PDFObject.js | 230 +-
bin/javajs/img/BMPDecoder.js | 288 +-
bin/javajs/img/CRCEncoder.js | 148 +-
bin/javajs/img/GifEncoder$ColorCell.class | Bin 3202 -> 3200 bytes
bin/javajs/img/GifEncoder.class | Bin 16064 -> 16060 bytes
bin/javajs/img/GifEncoder.js | 1254 +-
bin/javajs/img/ImageEncoder.js | 82 +-
bin/javajs/img/Jpg64Encoder.js | 46 +-
bin/javajs/img/JpgEncoder.js | 1506 +-
bin/javajs/img/PdfEncoder.js | 116 +-
bin/javajs/img/PngEncoder.js | 346 +-
bin/javajs/img/PpmEncoder.js | 46 +-
bin/javajs/img/package.js | 14 +-
bin/javajs/swing/AbstractButton.js | 164 +-
bin/javajs/swing/AbstractTableModel.js | 8 +-
bin/javajs/swing/ButtonGroup.js | 30 +-
bin/javajs/swing/Cell.js | 42 +-
bin/javajs/swing/ColumnSelectionModel.js | 4 +-
bin/javajs/swing/Document.js | 4 +-
bin/javajs/swing/FlowLayout.js | 8 +-
bin/javajs/swing/Grid.js | 92 +-
bin/javajs/swing/GridBagConstraints.js | 82 +-
bin/javajs/swing/GridBagLayout.js | 8 +-
bin/javajs/swing/Insets.js | 30 +-
bin/javajs/swing/JButton.js | 28 +-
bin/javajs/swing/JCheckBox.js | 26 +-
bin/javajs/swing/JCheckBoxMenuItem.js | 16 +-
bin/javajs/swing/JComboBox.js | 72 +-
bin/javajs/swing/JComponent.js | 50 +-
bin/javajs/swing/JComponentImp.js | 16 +-
bin/javajs/swing/JContentPane.js | 34 +-
bin/javajs/swing/JDialog.js | 164 +-
bin/javajs/swing/JEditorPane.js | 30 +-
bin/javajs/swing/JLabel.js | 34 +-
bin/javajs/swing/JMenu.js | 48 +-
bin/javajs/swing/JMenuItem.js | 72 +-
bin/javajs/swing/JPanel.js | 78 +-
bin/javajs/swing/JPopupMenu.js | 74 +-
bin/javajs/swing/JRadioButtonMenuItem.js | 22 +-
bin/javajs/swing/JScrollPane.js | 44 +-
bin/javajs/swing/JSplitPane.js | 134 +-
bin/javajs/swing/JTable.js | 134 +-
bin/javajs/swing/JTextField.js | 30 +-
bin/javajs/swing/JTextPane.js | 48 +-
bin/javajs/swing/ListSelectionModel.js | 4 +-
bin/javajs/swing/SwingConstants.js | 12 +-
bin/javajs/swing/TableCellRenderer.js | 4 +-
bin/javajs/swing/TableColumn.js | 4 +-
bin/javajs/util/A4.js | 178 +-
bin/javajs/util/AU.js | 702 +-
bin/javajs/util/AjaxURLConnection.js | 78 +-
bin/javajs/util/AjaxURLStreamHandler.js | 68 +-
bin/javajs/util/AjaxURLStreamHandlerFactory.js | 32 +-
bin/javajs/util/ArrayDataReader.js | 62 +-
bin/javajs/util/BArray.js | 54 +-
bin/javajs/util/BC.js | 130 +-
bin/javajs/util/BS.js | 714 +-
bin/javajs/util/Base64.js | 108 +-
bin/javajs/util/BinaryDocument.js | 436 +-
bin/javajs/util/CU.js | 270 +-
bin/javajs/util/CifDataParser.class | Bin 9700 -> 9697 bytes
bin/javajs/util/CifDataParser.js | 606 +-
bin/javajs/util/CompoundDocDirEntry.js | 116 +-
bin/javajs/util/CompoundDocHeader.js | 132 +-
bin/javajs/util/CompoundDocument.class | Bin 9953 -> 9947 bytes
bin/javajs/util/CompoundDocument.js | 572 +-
bin/javajs/util/DF.js | 156 +-
bin/javajs/util/DataReader.js | 68 +-
bin/javajs/util/Eigen.js | 508 +-
bin/javajs/util/Encoding.js | 20 +-
bin/javajs/util/LimitedLineReader.js | 66 +-
bin/javajs/util/ListDataReader.js | 62 +-
bin/javajs/util/Lst.js | 28 +-
bin/javajs/util/M3.js | 596 +-
bin/javajs/util/M34.js | 672 +-
bin/javajs/util/M4.js | 972 +-
bin/javajs/util/Matrix.js | 446 +-
bin/javajs/util/Measure.class | Bin 16239 -> 16237 bytes
bin/javajs/util/Measure.js | 788 +-
bin/javajs/util/OC.class | Bin 6744 -> 6742 bytes
bin/javajs/util/OC.js | 472 +-
bin/javajs/util/P3.js | 52 +-
bin/javajs/util/P3i.js | 24 +-
bin/javajs/util/P4.js | 48 +-
bin/javajs/util/PT.class | Bin 29031 -> 28987 bytes
bin/javajs/util/PT.js | 1890 +-
bin/javajs/util/Quat.js | 854 +-
bin/javajs/util/Rdr.class | Bin 10808 -> 10811 bytes
bin/javajs/util/Rdr.js | 622 +-
bin/javajs/util/SB.js | 302 +-
bin/javajs/util/StringDataReader.js | 24 +-
bin/javajs/util/T3.js | 282 +-
bin/javajs/util/T3d.js | 174 +-
bin/javajs/util/T3i.js | 96 +-
bin/javajs/util/T4.js | 74 +-
bin/javajs/util/V3.js | 62 +-
bin/javajs/util/V3d.js | 54 +-
bin/javajs/util/XmlUtil.js | 146 +-
bin/javajs/util/ZipData.js | 90 +-
bin/javajs/util/ZipTools.class | Bin 12857 -> 12812 bytes
bin/javajs/util/ZipTools.js | 616 +-
bin/lang/Messages.properties | 1247 -
bin/lang/Messages_es.properties | 1136 -
bin/netscape/javascript/JSException.js | 8 +-
bin/netscape/javascript/JSObject.js | 38 +-
bin/org/exolab/castor/mapping/Mapping.js | 16 +-
bin/org/exolab/castor/xml/Unmarshaller.js | 48 +-
bin/org/jmol/viewer/Viewer.js | 4 +-
bin/swingjs/JSEvent.js | 4 -
bin/swingjs/JSThread.js | 98 +-
bin/swingjs/api/DOMNode.js | 116 +-
bin/swingjs/api/JSFunction.js | 4 +-
bin/uniref50.fa | 60 -
resources/.cvsignore | 4 +-
resources/authors.props | 6 +-
resources/biojs_templates/BioJsMSA_1.0.txt |18096 +++----
resources/biojs_templates/BioJsMSA_1.1.txt |18096 +++----
resources/biojs_templates/Latest_BioJsMSA_1.2.txt |18096 +++----
resources/embl_mapping.xml | 304 +-
resources/images/.cvsignore | 20 +-
resources/lang/Messages.properties | 2494 +-
resources/lang/Messages_es.properties | 2270 +-
resources/uniprot_mapping.xml | 194 +-
site/j2s/JU/DebugJS.js | 9 +
site/j2s/awt2swing/Scrollbar.js | 4 +
site/j2s/core/core.js | 2980 ++
site/j2s/core/core.z.js | 26 +-
site/j2s/core/coreswingjs.js |52988 +++++++++++++++++++
site/j2s/core/coreswingjs.z.js |55132 +-------------------
site/j2s/jalview/analysis/AlignSeq.js | 2 +-
site/j2s/jalview/analysis/Conservation.js | 8 +-
site/j2s/jalview/datamodel/Annotation.js | 6 +-
site/j2s/jalview/io/AnnotationFile.js | 6 +-
site/j2s/jalview/io/FeaturesFile.js | 8 +-
site/j2s/jalview/io/SequenceAnnotationReport.js | 2 +-
site/j2s/jalview/viewmodel/PCAModel.js | 6 +-
site/j2s/jalview/workers/StrucConsensusThread.js | 117 +-
site/j2s/swingjs/JSImage.js | 5 +-
site/j2s/swingjs/JSToolkit.js | 14 +-
site/j2s/swingjs/plaf/HTML5LookAndFeel.java | 4988 +-
site/j2s/swingjs/plaf/JSButtonListener.java | 680 +-
site/j2s/swingjs/plaf/JSButtonUI.java | 1130 +-
site/j2s/swingjs/plaf/JSCheckBoxMenuItemUI.java | 58 +-
site/j2s/swingjs/plaf/JSCheckBoxUI.java | 58 +-
site/j2s/swingjs/plaf/JSComboBoxUI.java | 102 +-
site/j2s/swingjs/plaf/JSFormattedTextFieldUI.java | 54 +-
site/j2s/swingjs/plaf/JSLabelUI.java | 56 +-
site/j2s/swingjs/plaf/JSMenuBarUI.java | 152 +-
site/j2s/swingjs/plaf/JSMenuItemUI.java | 1096 +-
site/j2s/swingjs/plaf/JSMenuUI.java | 102 +-
site/j2s/swingjs/plaf/JSPanelUI.java | 102 +-
site/j2s/swingjs/plaf/JSPasswordFieldUI.java | 32 +-
site/j2s/swingjs/plaf/JSPopupMenuUI.java | 102 +-
site/j2s/swingjs/plaf/JSRadioButtonMenuItemUI.java | 38 +-
site/j2s/swingjs/plaf/JSRadioButtonUI.java | 188 +-
site/j2s/swingjs/plaf/JSRootPaneUI.java | 60 +-
site/j2s/swingjs/plaf/JSScrollBarUI.java | 52 +-
site/j2s/swingjs/plaf/JSScrollBarUI.js | 6 +
site/j2s/swingjs/plaf/JSScrollPaneUI.java | 124 +-
site/j2s/swingjs/plaf/JSSeparatorUI.java | 106 +-
site/j2s/swingjs/plaf/JSSliderUI.java | 346 +-
site/j2s/swingjs/plaf/JSSliderUI.js | 4 +-
site/j2s/swingjs/plaf/JSTextAreaUI.java | 74 +-
site/j2s/swingjs/plaf/JSTextFieldUI.java | 114 +-
site/j2s/swingjs/plaf/JSTextUI.java | 5590 +-
site/j2s/swingjs/plaf/JSToolBarSeparatorUI.java | 106 +-
site/j2s/swingjs/plaf/JSViewportUI.java | 102 +-
site/j2s/swingjs/plaf/LazyActionMap.java | 350 +-
site/j2s/swingjs/plaf/TextListener.java | 410 +-
site/js/JSmol.js | 1 -
site/js/SwingJS.js | 9 +-
site/js/SwingJSJavaExt.js | 2843 +
site/js/SwingJSjQueryExt.js | 292 +
site/js/j2sSwingJS.js | 5427 ++
site/test.htm | 6 +-
site/test_2.htm | 6 +-
src/awt2swing/Scrollbar.java | 27 +
src/fr/orsay/lri/varna/models/rna/RNA.java | 6 +
src/jalview/analysis/Conservation.java | 3 +
.../datamodel/SecondaryStructureAnnotation.java | 5 +
src/jalview/ext/varna/RnaModel.java | 9 +
src/jalview/workers/StrucConsensusThread.java | 217 +-
src/javajs/api/Interface.java | 13 +-
src/javajs/util/DebugJS.java | 28 +
712 files changed, 170827 insertions(+), 160086 deletions(-)
create mode 100644 bin/.gitignore
delete mode 100644 bin/jalview/util/AWTConsole.js
delete mode 100644 bin/jalview/util/BrowserLauncher.js
delete mode 100644 bin/jalview/util/jarInputStreamProvider.js
delete mode 100644 bin/java.policy.applet
delete mode 100644 bin/lang/Messages.properties
delete mode 100644 bin/lang/Messages_es.properties
delete mode 100644 bin/swingjs/JSEvent.js
delete mode 100644 bin/uniref50.fa
create mode 100644 site/j2s/JU/DebugJS.js
create mode 100644 site/j2s/core/core.js
create mode 100644 site/j2s/core/coreswingjs.js
create mode 100644 site/js/SwingJSJavaExt.js
create mode 100644 site/js/SwingJSjQueryExt.js
create mode 100644 site/js/j2sSwingJS.js
create mode 100644 src/javajs/util/DebugJS.java
diff --git a/.j2s b/.j2s
index c403133..e061f63 100644
--- a/.j2s
+++ b/.j2s
@@ -1,8 +1,8 @@
-#Java2Script Configuration
-#Thu Jul 23 11:58:58 BST 2015
-j2s.compiler.abbreviation=false
-j2s.resources.list=bin/JStest.js,bin/com/sun/awt/AWTUtilities.js,bin/com/sun/awt/SecurityWarning.js,bin/com/sun/beans/ObjectHandler.js,bin/com/sun/beans/TypeResolver.js,bin/com/sun/beans/WeakCache.js,bin/com/sun/beans/WildcardTypeImpl.js,bin/com/sun/beans/editors/BooleanEditor.js,bin/com/sun/beans/editors/ByteEditor.js,bin/com/sun/beans/editors/ColorEditor.js,bin/com/sun/beans/editors/DoubleEditor.js,bin/com/sun/beans/editors/EnumEditor.js,bin/com/sun/beans/editors/FloatEditor.js,bin/com/sun/beans/editors/FontEditor.js,bin/com/sun/beans/editors/IntegerEditor.js,bin/com/sun/beans/editors/LongEditor.js,bin/com/sun/beans/editors/NumberEditor.js,bin/com/sun/beans/editors/ShortEditor.js,bin/com/sun/beans/editors/StringEditor.js,bin/com/sun/beans/finder/ClassFinder.js,bin/com/sun/beans/finder/PrimitiveTypeMap.js,bin/com/sun/beans/infos/ComponentBeanInfo.js,bin/com/sun/crypto/provider/AESCipher.js,bin/com/sun/crypto/provider/AESConstants.js,bin/com/sun/crypto/provider/AESCrypt.js,bin/com/sun/crypto/provider/AESKeyGenerator.js,bin/com/sun/crypto/provider/AESParameters.js,bin/com/sun/crypto/provider/AESWrapCipher.js,bin/com/sun/crypto/provider/ARCFOURCipher.js,bin/com/sun/crypto/provider/BlockCipherParamsCore.js,bin/com/sun/crypto/provider/BlowfishCipher.js,bin/com/sun/crypto/provider/BlowfishConstants.js,bin/com/sun/crypto/provider/BlowfishCrypt.js,bin/com/sun/crypto/provider/BlowfishKeyGenerator.js,bin/com/sun/crypto/provider/BlowfishParameters.js,bin/com/sun/crypto/provider/CipherBlockChaining.js,bin/com/sun/crypto/provider/CipherCore.js,bin/com/sun/crypto/provider/CipherFeedback.js,bin/com/sun/crypto/provider/CipherTextStealing.js,bin/com/sun/crypto/provider/CipherWithWrappingSpi.js,bin/com/sun/crypto/provider/ConstructKeys.js,bin/com/sun/crypto/provider/CounterMode.js,bin/com/sun/crypto/provider/DESCipher.js,bin/com/sun/crypto/provider/DESConstants.js,bin/com/sun/crypto/provider/DESCrypt.js,bin/com/sun/crypto/provider/DESKey.js,bin/com/sun/crypto/provider/DESKeyFactory.js,bin/com/sun/crypto/provider/DESKeyGenerator.js,bin/com/sun/crypto/provider/DESParameters.js,bin/com/sun/crypto/provider/DESedeCipher.js,bin/com/sun/crypto/provider/DESedeCrypt.js,bin/com/sun/crypto/provider/DESedeKey.js,bin/com/sun/crypto/provider/DESedeKeyFactory.js,bin/com/sun/crypto/provider/DESedeKeyGenerator.js,bin/com/sun/crypto/provider/DESedeParameters.js,bin/com/sun/crypto/provider/DESedeWrapCipher.js,bin/com/sun/crypto/provider/DHKeyAgreement.js,bin/com/sun/crypto/provider/DHKeyFactory.js,bin/com/sun/crypto/provider/DHKeyPairGenerator.js,bin/com/sun/crypto/provider/DHParameterGenerator.js,bin/com/sun/crypto/provider/DHParameters.js,bin/com/sun/crypto/provider/DHPrivateKey.js,bin/com/sun/crypto/provider/DHPublicKey.js,bin/com/sun/crypto/provider/ElectronicCodeBook.js,bin/com/sun/crypto/provider/EncryptedPrivateKeyInfo.js,bin/com/sun/crypto/provider/FeedbackCipher.js,bin/com/sun/crypto/provider/HmacCore.js,bin/com/sun/crypto/provider/HmacMD5.js,bin/com/sun/crypto/provider/HmacMD5KeyGenerator.js,bin/com/sun/crypto/provider/HmacPKCS12PBESHA1.js,bin/com/sun/crypto/provider/HmacSHA1.js,bin/com/sun/crypto/provider/HmacSHA1KeyGenerator.js,bin/com/sun/crypto/provider/ISO10126Padding.js,bin/com/sun/crypto/provider/JceKeyStore.js,bin/com/sun/crypto/provider/KeyGeneratorCore.js,bin/com/sun/crypto/provider/KeyProtector.js,bin/com/sun/crypto/provider/OAEPParameters.js,bin/com/sun/crypto/provider/OutputFeedback.js,bin/com/sun/crypto/provider/PBECipherCore.js,bin/com/sun/crypto/provider/PBEKey.js,bin/com/sun/crypto/provider/PBEKeyFactory.js,bin/com/sun/crypto/provider/PBEParameters.js,bin/com/sun/crypto/provider/PBEWithMD5AndDESCipher.js,bin/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.js,bin/com/sun/crypto/provider/PBKDF2HmacSHA1Factory.js,bin/com/sun/crypto/provider/PBKDF2KeyImpl.js,bin/com/sun/crypto/provider/PCBC.js,bin/com/sun/crypto/provider/PKCS12PBECipherCore.js,bin/com/sun/crypto/provider/PKCS5Padding.js,bin/com/sun/crypto/provider/Padding.js,bin/com/sun/crypto/provider/PrivateKeyInfo.js,bin/com/sun/crypto/provider/RC2Cipher.js,bin/com/sun/crypto/provider/RC2Crypt.js,bin/com/sun/crypto/provider/RC2Parameters.js,bin/com/sun/crypto/provider/RSACipher.js,bin/com/sun/crypto/provider/SslMacCore.js,bin/com/sun/crypto/provider/SunJCE.js,bin/com/sun/crypto/provider/SymmetricCipher.js,bin/com/sun/crypto/provider/TlsKeyMaterialGenerator.js,bin/com/sun/crypto/provider/TlsMasterSecretGenerator.js,bin/com/sun/crypto/provider/TlsPrfGenerator.js,bin/com/sun/crypto/provider/TlsRsaPremasterSecretGenerator.js,bin/com/sun/crypto/provider/ai.js,bin/com/sun/demo/jvmti/hprof/Tracker.js,bin/com/sun/imageio/plugins/bmp/BMPConstants.js,bin/com/sun/imageio/plugins/bmp/BMPImageReader.js,bin/com/sun/imageio/plugins/bmp/BMPImageReaderSpi.js,bin/com/sun/imageio/plugins/bmp/BMPImageWriter.js,bin/com/sun/imageio/plugins/bmp/BMPImageWriterSpi.js,bin/com/sun/imageio/plugins/bmp/BMPMetadata.js,bin/com/sun/imageio/plugins/bmp/BMPMetadataFormat.js,bin/com/sun/imageio/plugins/bmp/BMPMetadataFormatResources.js,bin/com/sun/imageio/plugins/common/BitFile.js,bin/com/sun/imageio/plugins/common/BogusColorSpace.js,bin/com/sun/imageio/plugins/common/I18N.js,bin/com/sun/imageio/plugins/common/I18NImpl.js,bin/com/sun/imageio/plugins/common/ImageUtil.js,bin/com/sun/imageio/plugins/common/InputStreamAdapter.js,bin/com/sun/imageio/plugins/common/LZWCompressor.js,bin/com/sun/imageio/plugins/common/LZWStringTable.js,bin/com/sun/imageio/plugins/common/PaletteBuilder.js,bin/com/sun/imageio/plugins/common/ReaderUtil.js,bin/com/sun/imageio/plugins/common/StandardMetadataFormat.js,bin/com/sun/imageio/plugins/common/StandardMetadataFormatResources.js,bin/com/sun/imageio/plugins/common/SubImageInputStream.js,bin/com/sun/imageio/plugins/gif/GIFImageMetadata.js,bin/com/sun/imageio/plugins/gif/GIFImageMetadataFormat.js,bin/com/sun/imageio/plugins/gif/GIFImageMetadataFormatResources.js,bin/com/sun/imageio/plugins/gif/GIFImageReader.js,bin/com/sun/imageio/plugins/gif/GIFImageReaderSpi.js,bin/com/sun/imageio/plugins/gif/GIFImageWriter.js,bin/com/sun/imageio/plugins/gif/GIFImageWriterSpi.js,bin/com/sun/imageio/plugins/gif/GIFMetadata.js,bin/com/sun/imageio/plugins/gif/GIFStreamMetadata.js,bin/com/sun/imageio/plugins/gif/GIFStreamMetadataFormat.js,bin/com/sun/imageio/plugins/gif/GIFStreamMetadataFormatResources.js,bin/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.js,bin/com/sun/imageio/plugins/gif/GIFWritableStreamMetadata.js,bin/com/sun/imageio/plugins/jpeg/AdobeMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/COMMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/DHTMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/DQTMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/DRIMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/JPEG.js,bin/com/sun/imageio/plugins/jpeg/JPEGBuffer.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageMetadataFormat.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageMetadataFormatResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageReader.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageReaderResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageReaderSpi.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageWriter.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageWriterResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageWriterSpi.js,bin/com/sun/imageio/plugins/jpeg/JPEGMetadata.js,bin/com/sun/imageio/plugins/jpeg/JPEGMetadataFormat.js,bin/com/sun/imageio/plugins/jpeg/JPEGMetadataFormatResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGStreamMetadataFormat.js,bin/com/sun/imageio/plugins/jpeg/JPEGStreamMetadataFormatResources.js,bin/com/sun/imageio/plugins/jpeg/MarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/SOFMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/SOSMarkerSegment.js,bin/com/sun/imageio/plugins/png/PNGImageReader.js,bin/com/sun/imageio/plugins/png/PNGImageReaderSpi.js,bin/com/sun/imageio/plugins/png/PNGImageWriter.js,bin/com/sun/imageio/plugins/png/PNGImageWriterSpi.js,bin/com/sun/imageio/plugins/png/PNGMetadata.js,bin/com/sun/imageio/plugins/png/PNGMetadataFormat.js,bin/com/sun/imageio/plugins/png/PNGMetadataFormatResources.js,bin/com/sun/imageio/plugins/png/RowFilter.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageReader.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageReaderSpi.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageWriter.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageWriterSpi.js,bin/com/sun/imageio/plugins/wbmp/WBMPMetadata.js,bin/com/sun/imageio/plugins/wbmp/WBMPMetadataFormat.js,bin/com/sun/imageio/spi/FileImageInputStreamSpi.js,bin/com/sun/imageio/spi/FileImageOutputStreamSpi.js,bin/com/sun/imageio/spi/InputStreamImageInputStreamSpi.js,bin/com/sun/imageio/spi/OutputStreamImageOutputStreamSpi.js,bin/com/sun/imageio/spi/RAFImageInputStreamSpi.js,bin/com/sun/imageio/spi/RAFImageOutputStreamSpi.js,bin/com/sun/imageio/stream/CloseableDisposerRecord.js,bin/com/sun/imageio/stream/StreamCloser.js,bin/com/sun/imageio/stream/StreamFinalizer.js,bin/com/sun/inputmethods/internal/indicim/DevanagariInputMethodDescriptor.js,bin/com/sun/inputmethods/internal/indicim/DevanagariTables.js,bin/com/sun/inputmethods/internal/indicim/IndicInputMethod.js,bin/com/sun/inputmethods/internal/indicim/IndicInputMethodImpl.js,bin/com/sun/inputmethods/internal/thaiim/ThaiInputMethod.js,bin/com/sun/inputmethods/internal/thaiim/ThaiInputMethodDescriptor.js,bin/com/sun/inputmethods/internal/thaiim/ThaiInputMethodImpl.js,bin/com/sun/inputmethods/internal/thaiim/ThaiRules.js,bin/com/sun/jarsigner/ContentSigner.js,bin/com/sun/jarsigner/ContentSignerParameters.js,bin/com/sun/java/browser/dom/DOMAccessException.js,bin/com/sun/java/browser/dom/DOMAccessor.js,bin/com/sun/java/browser/dom/DOMAction.js,bin/com/sun/java/browser/dom/DOMService.js,bin/com/sun/java/browser/dom/DOMServiceProvider.js,bin/com/sun/java/browser/dom/DOMUnsupportedException.js,bin/com/sun/java/browser/net/ProxyInfo.js,bin/com/sun/java/browser/net/ProxyService.js,bin/com/sun/java/browser/net/ProxyServiceProvider.js,bin/com/sun/java/swing/Painter.js,bin/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.js,bin/com/sun/java/swing/plaf/gtk/GTKColorType.js,bin/com/sun/java/swing/plaf/gtk/GTKConstants.js,bin/com/sun/java/swing/plaf/gtk/GTKEngine.js,bin/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.js,bin/com/sun/java/swing/plaf/gtk/GTKGraphicsUtils.js,bin/com/sun/java/swing/plaf/gtk/GTKIconFactory.js,bin/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.js,bin/com/sun/java/swing/plaf/gtk/GTKPainter.js,bin/com/sun/java/swing/plaf/gtk/GTKRegion.js,bin/com/sun/java/swing/plaf/gtk/GTKStyle.js,bin/com/sun/java/swing/plaf/gtk/GTKStyleFactory.js,bin/com/sun/java/swing/plaf/gtk/Metacity.js,bin/com/sun/java/swing/plaf/gtk/PangoFonts.js,bin/com/sun/java/swing/plaf/gtk/XColors.js,bin/com/sun/java/swing/plaf/motif/MotifBorders.js,bin/com/sun/java/swing/plaf/motif/MotifButtonListener.js,bin/com/sun/java/swing/plaf/motif/MotifButtonUI.js,bin/com/sun/java/swing/plaf/motif/MotifCheckBoxMenuItemUI.js,bin/com/sun/java/swing/plaf/motif/MotifCheckBoxUI.js,bin/com/sun/java/swing/plaf/motif/MotifComboBoxUI.js,bin/com/sun/java/swing/plaf/motif/MotifDesktopIconUI.js,bin/com/sun/java/swing/plaf/motif/MotifDesktopPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifEditorPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifFileChooserUI.js,bin/com/sun/java/swing/plaf/motif/MotifGraphicsUtils.js,bin/com/sun/java/swing/plaf/motif/MotifIconFactory.js,bin/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.js,bin/com/sun/java/swing/plaf/motif/MotifInternalFrameUI.js,bin/com/sun/java/swing/plaf/motif/MotifLabelUI.js,bin/com/sun/java/swing/plaf/motif/MotifLookAndFeel.js,bin/com/sun/java/swing/plaf/motif/MotifMenuBarUI.js,bin/com/sun/java/swing/plaf/motif/MotifMenuItemUI.js,bin/com/sun/java/swing/plaf/motif/MotifMenuMouseListener.js,bin/com/sun/java/swing/plaf/motif/MotifMenuMouseMotionListener.js,bin/com/sun/java/swing/plaf/motif/MotifMenuUI.js,bin/com/sun/java/swing/plaf/motif/MotifOptionPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifPasswordFieldUI.js,bin/com/sun/java/swing/plaf/motif/MotifPopupMenuSeparatorUI.js,bin/com/sun/java/swing/plaf/motif/MotifPopupMenuUI.js,bin/com/sun/java/swing/plaf/motif/MotifProgressBarUI.js,bin/com/sun/java/swing/plaf/motif/MotifRadioButtonMenuItemUI.js,bin/com/sun/java/swing/plaf/motif/MotifRadioButtonUI.js,bin/com/sun/java/swing/plaf/motif/MotifScrollBarButton.js,bin/com/sun/java/swing/plaf/motif/MotifScrollBarUI.js,bin/com/sun/java/swing/plaf/motif/MotifScrollPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifSeparatorUI.js,bin/com/sun/java/swing/plaf/motif/MotifSliderUI.js,bin/com/sun/java/swing/plaf/motif/MotifSplitPaneDivider.js,bin/com/sun/java/swing/plaf/motif/MotifSplitPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifTabbedPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextAreaUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextFieldUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextUI.js,bin/com/sun/java/swing/plaf/motif/MotifToggleButtonUI.js,bin/com/sun/java/swing/plaf/motif/MotifTreeCellRenderer.js,bin/com/sun/java/swing/plaf/motif/MotifTreeUI.js,bin/com/sun/java/swing/plaf/nimbus/AbstractRegionPainter.js,bin/com/sun/java/swing/plaf/nimbus/DerivedColor.js,bin/com/sun/java/swing/plaf/nimbus/DropShadowEffect.js,bin/com/sun/java/swing/plaf/nimbus/Effect.js,bin/com/sun/java/swing/plaf/nimbus/EffectUtils.js,bin/com/sun/java/swing/plaf/nimbus/ImageCache.js,bin/com/sun/java/swing/plaf/nimbus/ImageScalingHelper.js,bin/com/sun/java/swing/plaf/nimbus/InnerGlowEffect.js,bin/com/sun/java/swing/plaf/nimbus/InnerShadowEffect.js,bin/com/sun/java/swing/plaf/nimbus/LoweredBorder.js,bin/com/sun/java/swing/plaf/nimbus/NimbusIcon.js,bin/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.js,bin/com/sun/java/swing/plaf/nimbus/NimbusStyle.js,bin/com/sun/java/swing/plaf/nimbus/OuterGlowEffect.js,bin/com/sun/java/swing/plaf/nimbus/ShadowEffect.js,bin/com/sun/java/swing/plaf/nimbus/State.js,bin/com/sun/java/swing/plaf/nimbus/SynthPainterImpl.js,bin/com/sun/java/swing/plaf/nimbus/TableScrollPaneCorner.js,bin/com/sun/java/swing/plaf/nimbus/ToolBarSeparatorPainter.js,bin/com/sun/java/swing/plaf/windows/AnimationController.js,bin/com/sun/java/swing/plaf/windows/DesktopProperty.js,bin/com/sun/java/swing/plaf/windows/TMSchema.js,bin/com/sun/java/swing/plaf/windows/WindowsBorders.js,bin/com/sun/java/swing/plaf/windows/WindowsButtonListener.js,bin/com/sun/java/swing/plaf/windows/WindowsButtonUI.js,bin/com/sun/java/swing/plaf/windows/WindowsCheckBoxMenuItemUI.js,bin/com/sun/java/swing/plaf/windows/WindowsCheckBoxUI.js,bin/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.js,bin/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.js,bin/com/sun/java/swing/plaf/windows/WindowsDesktopIconUI.js,bin/com/sun/java/swing/plaf/windows/WindowsDesktopManager.js,bin/com/sun/java/swing/plaf/windows/WindowsDesktopPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsEditorPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.js,bin/com/sun/java/swing/plaf/windows/WindowsGraphicsUtils.js,bin/com/sun/java/swing/plaf/windows/WindowsIconFactory.js,bin/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.js,bin/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.js,bin/com/sun/java/swing/plaf/windows/WindowsLabelUI.js,bin/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuItemUIAccessor.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuUI.js,bin/com/sun/java/swing/plaf/windows/WindowsOptionPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPasswordFieldUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPopupMenuSeparatorUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPopupMenuUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPopupWindow.js,bin/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsRadioButtonMenuItemUI.js,bin/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI.js,bin/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsScrollPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSeparatorUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSliderUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSpinnerUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.js,bin/com/sun/java/swing/plaf/windows/WindowsSplitPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextAreaUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextUI.js,bin/com/sun/java/swing/plaf/windows/WindowsToggleButtonUI.js,bin/com/sun/java/swing/plaf/windows/WindowsToolBarSeparatorUI.js,bin/com/sun/java/swing/plaf/windows/WindowsToolBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTreeUI.js,bin/com/sun/java/swing/plaf/windows/XPStyle.js,bin/com/sun/java/util/jar/pack/AdaptiveCoding.js,bin/com/sun/java/util/jar/pack/Attribute.js,bin/com/sun/java/util/jar/pack/BandStructure.js,bin/com/sun/java/util/jar/pack/ClassReader.js,bin/com/sun/java/util/jar/pack/ClassWriter.js,bin/com/sun/java/util/jar/pack/Code.js,bin/com/sun/java/util/jar/pack/Coding.js,bin/com/sun/java/util/jar/pack/CodingChooser.js,bin/com/sun/java/util/jar/pack/CodingMethod.js,bin/com/sun/java/util/jar/pack/ConstantPool.js,bin/com/sun/java/util/jar/pack/Constants.js,bin/com/sun/java/util/jar/pack/Driver.js,bin/com/sun/java/util/jar/pack/DriverResource.js,bin/com/sun/java/util/jar/pack/Fixups.js,bin/com/sun/java/util/jar/pack/Histogram.js,bin/com/sun/java/util/jar/pack/Instruction.js,bin/com/sun/java/util/jar/pack/NativeUnpack.js,bin/com/sun/java/util/jar/pack/Package.js,bin/com/sun/java/util/jar/pack/PackageReader.js,bin/com/sun/java/util/jar/pack/PackageWriter.js,bin/com/sun/java/util/jar/pack/PackerImpl.js,bin/com/sun/java/util/jar/pack/PopulationCoding.js,bin/com/sun/java/util/jar/pack/PropMap.js,bin/com/sun/java/util/jar/pack/UnpackerImpl.js,bin/com/sun/java/util/jar/pack/Utils.js,bin/com/sun/jdi/AbsentInformationException.js,bin/com/sun/jdi/Accessible.js,bin/com/sun/jdi/ArrayReference.js,bin/com/sun/jdi/ArrayType.js,bin/com/sun/jdi/BooleanType.js,bin/com/sun/jdi/BooleanValue.js,bin/com/sun/jdi/Bootstrap.js,bin/com/sun/jdi/ByteType.js,bin/com/sun/jdi/ByteValue.js,bin/com/sun/jdi/CharType.js,bin/com/sun/jdi/CharValue.js,bin/com/sun/jdi/ClassLoaderReference.js,bin/com/sun/jdi/ClassNotLoadedException.js,bin/com/sun/jdi/ClassNotPreparedException.js,bin/com/sun/jdi/ClassObjectReference.js,bin/com/sun/jdi/ClassType.js,bin/com/sun/jdi/DoubleType.js,bin/com/sun/jdi/DoubleValue.js,bin/com/sun/jdi/Field.js,bin/com/sun/jdi/FloatType.js,bin/com/sun/jdi/FloatValue.js,bin/com/sun/jdi/IncompatibleThreadStateException.js,bin/com/sun/jdi/InconsistentDebugInfoException.js,bin/com/sun/jdi/IntegerType.js,bin/com/sun/jdi/IntegerValue.js,bin/com/sun/jdi/InterfaceType.js,bin/com/sun/jdi/InternalException.js,bin/com/sun/jdi/InvalidCodeIndexException.js,bin/com/sun/jdi/InvalidLineNumberException.js,bin/com/sun/jdi/InvalidStackFrameException.js,bin/com/sun/jdi/InvalidTypeException.js,bin/com/sun/jdi/InvocationException.js,bin/com/sun/jdi/JDIPermission.js,bin/com/sun/jdi/LocalVariable.js,bin/com/sun/jdi/Locatable.js,bin/com/sun/jdi/Location.js,bin/com/sun/jdi/LongType.js,bin/com/sun/jdi/LongValue.js,bin/com/sun/jdi/Method.js,bin/com/sun/jdi/Mirror.js,bin/com/sun/jdi/MonitorInfo.js,bin/com/sun/jdi/NativeMethodException.js,bin/com/sun/jdi/ObjectCollectedException.js,bin/com/sun/jdi/ObjectReference.js,bin/com/sun/jdi/PathSearchingVirtualMachine.js,bin/com/sun/jdi/PrimitiveType.js,bin/com/sun/jdi/PrimitiveValue.js,bin/com/sun/jdi/ReferenceType.js,bin/com/sun/jdi/ShortType.js,bin/com/sun/jdi/ShortValue.js,bin/com/sun/jdi/StackFrame.js,bin/com/sun/jdi/StringReference.js,bin/com/sun/jdi/ThreadGroupReference.js,bin/com/sun/jdi/ThreadReference.js,bin/com/sun/jdi/Type.js,bin/com/sun/jdi/TypeComponent.js,bin/com/sun/jdi/VMCannotBeModifiedException.js,bin/com/sun/jdi/VMDisconnectedException.js,bin/com/sun/jdi/VMMismatchException.js,bin/com/sun/jdi/VMOutOfMemoryException.js,bin/com/sun/jdi/Value.js,bin/com/sun/jdi/VirtualMachine.js,bin/com/sun/jdi/VirtualMachineManager.js,bin/com/sun/jdi/VoidType.js,bin/com/sun/jdi/VoidValue.js,bin/com/sun/jdi/connect/AttachingConnector.js,bin/com/sun/jdi/connect/Connector.js,bin/com/sun/jdi/connect/IllegalConnectorArgumentsException.js,bin/com/sun/jdi/connect/LaunchingConnector.js,bin/com/sun/jdi/connect/ListeningConnector.js,bin/com/sun/jdi/connect/Transport.js,bin/com/sun/jdi/connect/TransportTimeoutException.js,bin/com/sun/jdi/connect/VMStartException.js,bin/com/sun/jdi/connect/spi/ClosedConnectionException.js,bin/com/sun/jdi/connect/spi/Connection.js,bin/com/sun/jdi/connect/spi/TransportService.js,bin/com/sun/jdi/event/AccessWatchpointEvent.js,bin/com/sun/jdi/event/BreakpointEvent.js,bin/com/sun/jdi/event/ClassPrepareEvent.js,bin/com/sun/jdi/event/ClassUnloadEvent.js,bin/com/sun/jdi/event/Event.js,bin/com/sun/jdi/event/EventIterator.js,bin/com/sun/jdi/event/EventQueue.js,bin/com/sun/jdi/event/EventSet.js,bin/com/sun/jdi/event/ExceptionEvent.js,bin/com/sun/jdi/event/LocatableEvent.js,bin/com/sun/jdi/event/MethodEntryEvent.js,bin/com/sun/jdi/event/MethodExitEvent.js,bin/com/sun/jdi/event/ModificationWatchpointEvent.js,bin/com/sun/jdi/event/MonitorContendedEnterEvent.js,bin/com/sun/jdi/event/MonitorContendedEnteredEvent.js,bin/com/sun/jdi/event/MonitorWaitEvent.js,bin/com/sun/jdi/event/MonitorWaitedEvent.js,bin/com/sun/jdi/event/StepEvent.js,bin/com/sun/jdi/event/ThreadDeathEvent.js,bin/com/sun/jdi/event/ThreadStartEvent.js,bin/com/sun/jdi/event/VMDeathEvent.js,bin/com/sun/jdi/event/VMDisconnectEvent.js,bin/com/sun/jdi/event/VMStartEvent.js,bin/com/sun/jdi/event/WatchpointEvent.js,bin/com/sun/jdi/request/AccessWatchpointRequest.js,bin/com/sun/jdi/request/BreakpointRequest.js,bin/com/sun/jdi/request/ClassPrepareRequest.js,bin/com/sun/jdi/request/ClassUnloadRequest.js,bin/com/sun/jdi/request/DuplicateRequestException.js,bin/com/sun/jdi/request/EventRequest.js,bin/com/sun/jdi/request/EventRequestManager.js,bin/com/sun/jdi/request/ExceptionRequest.js,bin/com/sun/jdi/request/InvalidRequestStateException.js,bin/com/sun/jdi/request/MethodEntryRequest.js,bin/com/sun/jdi/request/MethodExitRequest.js,bin/com/sun/jdi/request/ModificationWatchpointRequest.js,bin/com/sun/jdi/request/MonitorContendedEnterRequest.js,bin/com/sun/jdi/request/MonitorContendedEnteredRequest.js,bin/com/sun/jdi/request/MonitorWaitRequest.js,bin/com/sun/jdi/request/MonitorWaitedRequest.js,bin/com/sun/jdi/request/StepRequest.js,bin/com/sun/jdi/request/ThreadDeathRequest.js,bin/com/sun/jdi/request/ThreadStartRequest.js,bin/com/sun/jdi/request/VMDeathRequest.js,bin/com/sun/jdi/request/WatchpointRequest.js,bin/com/sun/jmx/defaults/JmxProperties.js,bin/com/sun/jmx/defaults/ServiceName.js,bin/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.js,bin/com/sun/jmx/interceptor/MBeanServerInterceptor.js,bin/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.js,bin/com/sun/jmx/mbeanserver/ConvertingMethod.js,bin/com/sun/jmx/mbeanserver/DescriptorCache.js,bin/com/sun/jmx/mbeanserver/DynamicMBean2.js,bin/com/sun/jmx/mbeanserver/GetPropertyAction.js,bin/com/sun/jmx/mbeanserver/Introspector.js,bin/com/sun/jmx/mbeanserver/JmxMBeanServer.js,bin/com/sun/jmx/mbeanserver/JmxMBeanServerBuilder.js,bin/com/sun/jmx/mbeanserver/MBeanAnalyzer.js,bin/com/sun/jmx/mbeanserver/MBeanInstantiator.js,bin/com/sun/jmx/mbeanserver/MBeanIntrospector.js,bin/com/sun/jmx/mbeanserver/MBeanServerDelegateImpl.js,bin/com/sun/jmx/mbeanserver/MBeanSupport.js,bin/com/sun/jmx/mbeanserver/MXBeanIntrospector.js,bin/com/sun/jmx/mbeanserver/MXBeanLookup.js,bin/com/sun/jmx/mbeanserver/MXBeanProxy.js,bin/com/sun/jmx/mbeanserver/MXBeanSupport.js,bin/com/sun/jmx/mbeanserver/ModifiableClassLoaderRepository.js,bin/com/sun/jmx/mbeanserver/NamedObject.js,bin/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.js,bin/com/sun/jmx/mbeanserver/OpenConverter.js,bin/com/sun/jmx/mbeanserver/PerInterface.js,bin/com/sun/jmx/mbeanserver/Repository.js,bin/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.js,bin/com/sun/jmx/mbeanserver/StandardMBeanIntrospector.js,bin/com/sun/jmx/mbeanserver/StandardMBeanSupport.js,bin/com/sun/jmx/mbeanserver/SunJmxMBeanServer.js,bin/com/sun/jmx/mbeanserver/Util.js,bin/com/sun/jmx/mbeanserver/WeakIdentityHashMap.js,bin/com/sun/jmx/remote/internal/ArrayNotificationBuffer.js,bin/com/sun/jmx/remote/internal/ArrayQueue.js,bin/com/sun/jmx/remote/internal/ClientCommunicatorAdmin.js,bin/com/sun/jmx/remote/internal/ClientListenerInfo.js,bin/com/sun/jmx/remote/internal/ClientNotifForwarder.js,bin/com/sun/jmx/remote/internal/NotificationBuffer.js,bin/com/sun/jmx/remote/internal/NotificationBufferFilter.js,bin/com/sun/jmx/remote/internal/ProxyInputStream.js,bin/com/sun/jmx/remote/internal/ProxyRef.js,bin/com/sun/jmx/remote/internal/RMIExporter.js,bin/com/sun/jmx/remote/internal/ServerCommunicatorAdmin.js,bin/com/sun/jmx/remote/internal/ServerNotifForwarder.js,bin/com/sun/jmx/remote/internal/Unmarshal.js,bin/com/sun/jmx/remote/protocol/iiop/ClientProvider.js,bin/com/sun/jmx/remote/protocol/iiop/ServerProvider.js,bin/com/sun/jmx/remote/protocol/rmi/ClientProvider.js,bin/com/sun/jmx/remote/protocol/rmi/ServerProvider.js,bin/com/sun/jmx/remote/security/FileLoginModule.js,bin/com/sun/jmx/remote/security/JMXPluggableAuthenticator.js,bin/com/sun/jmx/remote/security/JMXSubjectDomainCombiner.js,bin/com/sun/jmx/remote/security/MBeanServerAccessController.js,bin/com/sun/jmx/remote/security/MBeanServerFileAccessController.js,bin/com/sun/jmx/remote/security/NotificationAccessController.js,bin/com/sun/jmx/remote/security/SubjectDelegator.js,bin/com/sun/jmx/remote/util/ClassLoaderWithRepository.js,bin/com/sun/jmx/remote/util/ClassLogger.js,bin/com/sun/jmx/remote/util/EnvHelp.js,bin/com/sun/jmx/remote/util/OrderClassLoaders.js,bin/com/sun/jmx/snmp/BerDecoder.js,bin/com/sun/jmx/snmp/BerEncoder.js,bin/com/sun/jmx/snmp/BerException.js,bin/com/sun/jmx/snmp/EnumRowStatus.js,bin/com/sun/jmx/snmp/Enumerated.js,bin/com/sun/jmx/snmp/IPAcl/ASCII_CharStream.js,bin/com/sun/jmx/snmp/IPAcl/AclEntryImpl.js,bin/com/sun/jmx/snmp/IPAcl/AclImpl.js,bin/com/sun/jmx/snmp/IPAcl/GroupImpl.js,bin/com/sun/jmx/snmp/IPAcl/Host.js,bin/com/sun/jmx/snmp/IPAcl/JDMAccess.js,bin/com/sun/jmx/snmp/IPAcl/JDMAclBlock.js,bin/com/sun/jmx/snmp/IPAcl/JDMAclItem.js,bin/com/sun/jmx/snmp/IPAcl/JDMCommunities.js,bin/com/sun/jmx/snmp/IPAcl/JDMCommunity.js,bin/com/sun/jmx/snmp/IPAcl/JDMEnterprise.js,bin/com/sun/jmx/snmp/IPAcl/JDMHost.js,bin/com/sun/jmx/snmp/IPAcl/JDMHostInform.js,bin/com/sun/jmx/snmp/IPAcl/JDMHostName.js,bin/com/sun/jmx/snmp/IPAcl/JDMHostTrap.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformBlock.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformCommunity.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformInterestedHost.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformItem.js,bin/com/sun/jmx/snmp/IPAcl/JDMIpAddress.js,bin/com/sun/jmx/snmp/IPAcl/JDMIpMask.js,bin/com/sun/jmx/snmp/IPAcl/JDMIpV6Address.js,bin/com/sun/jmx/snmp/IPAcl/JDMManagers.js,bin/com/sun/jmx/snmp/IPAcl/JDMNetMask.js,bin/com/sun/jmx/snmp/IPAcl/JDMNetMaskV6.js,bin/com/sun/jmx/snmp/IPAcl/JDMSecurityDefs.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapBlock.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapCommunity.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapInterestedHost.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapItem.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapNum.js,bin/com/sun/jmx/snmp/IPAcl/JJTParserState.js,bin/com/sun/jmx/snmp/IPAcl/NetMaskImpl.js,bin/com/sun/jmx/snmp/IPAcl/Node.js,bin/com/sun/jmx/snmp/IPAcl/OwnerImpl.js,bin/com/sun/jmx/snmp/IPAcl/ParseError.js,bin/com/sun/jmx/snmp/IPAcl/ParseException.js,bin/com/sun/jmx/snmp/IPAcl/Parser.js,bin/com/sun/jmx/snmp/IPAcl/ParserConstants.js,bin/com/sun/jmx/snmp/IPAcl/ParserTokenManager.js,bin/com/sun/jmx/snmp/IPAcl/ParserTreeConstants.js,bin/com/sun/jmx/snmp/IPAcl/PermissionImpl.js,bin/com/sun/jmx/snmp/IPAcl/PrincipalImpl.js,bin/com/sun/jmx/snmp/IPAcl/SimpleNode.js,bin/com/sun/jmx/snmp/IPAcl/SnmpAcl.js,bin/com/sun/jmx/snmp/IPAcl/Token.js,bin/com/sun/jmx/snmp/IPAcl/TokenMgrError.js,bin/com/sun/jmx/snmp/InetAddressAcl.js,bin/com/sun/jmx/snmp/ServiceName.js,bin/com/sun/jmx/snmp/SnmpAckPdu.js,bin/com/sun/jmx/snmp/SnmpBadSecurityLevelException.js,bin/com/sun/jmx/snmp/SnmpCounter.js,bin/com/sun/jmx/snmp/SnmpCounter64.js,bin/com/sun/jmx/snmp/SnmpEngine.js,bin/com/sun/jmx/snmp/SnmpEngineFactory.js,bin/com/sun/jmx/snmp/SnmpEngineId.js,bin/com/sun/jmx/snmp/SnmpEngineParameters.js,bin/com/sun/jmx/snmp/SnmpGauge.js,bin/com/sun/jmx/snmp/SnmpInt.js,bin/com/sun/jmx/snmp/SnmpIpAddress.js,bin/com/sun/jmx/snmp/SnmpMessage.js,bin/com/sun/jmx/snmp/SnmpMsg.js,bin/com/sun/jmx/snmp/SnmpNull.js,bin/com/sun/jmx/snmp/SnmpOpaque.js,bin/com/sun/jmx/snmp/SnmpParams.js,bin/com/sun/jmx/snmp/SnmpPdu.js,bin/com/sun/jmx/snmp/SnmpPduBulk.js,bin/com/sun/jmx/snmp/SnmpPduBulkType.js,bin/com/sun/jmx/snmp/SnmpPduFactory.js,bin/com/sun/jmx/snmp/SnmpPduFactoryBER.js,bin/com/sun/jmx/snmp/SnmpPduRequest.js,bin/com/sun/jmx/snmp/SnmpPduRequestType.js,bin/com/sun/jmx/snmp/SnmpPduTrap.js,bin/com/sun/jmx/snmp/SnmpScopedPduBulk.js,bin/com/sun/jmx/snmp/SnmpScopedPduPacket.js,bin/com/sun/jmx/snmp/SnmpScopedPduRequest.js,bin/com/sun/jmx/snmp/SnmpSecurityException.js,bin/com/sun/jmx/snmp/SnmpSecurityParameters.js,bin/com/sun/jmx/snmp/SnmpStatusException.js,bin/com/sun/jmx/snmp/SnmpString.js,bin/com/sun/jmx/snmp/SnmpStringFixed.js,bin/com/sun/jmx/snmp/SnmpTooBigException.js,bin/com/sun/jmx/snmp/SnmpUnknownAccContrModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownModelLcdException.js,bin/com/sun/jmx/snmp/SnmpUnknownMsgProcModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownSecModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownSubSystemException.js,bin/com/sun/jmx/snmp/SnmpUnsignedInt.js,bin/com/sun/jmx/snmp/SnmpUsmKeyHandler.js,bin/com/sun/jmx/snmp/SnmpV3Message.js,bin/com/sun/jmx/snmp/SnmpValue.js,bin/com/sun/jmx/snmp/ThreadContext.js,bin/com/sun/jmx/snmp/UserAcl.js,bin/com/sun/jmx/snmp/agent/SnmpEntryOid.js,bin/com/sun/jmx/snmp/agent/SnmpErrorHandlerAgent.js,bin/com/sun/jmx/snmp/agent/SnmpGenericMetaServer.js,bin/com/sun/jmx/snmp/agent/SnmpGenericObjectServer.js,bin/com/sun/jmx/snmp/agent/SnmpIndex.js,bin/com/sun/jmx/snmp/agent/SnmpMib.js,bin/com/sun/jmx/snmp/agent/SnmpMibAgent.js,bin/com/sun/jmx/snmp/agent/SnmpMibAgentMBean.js,bin/com/sun/jmx/snmp/agent/SnmpMibEntry.js,bin/com/sun/jmx/snmp/agent/SnmpMibGroup.js,bin/com/sun/jmx/snmp/agent/SnmpMibHandler.js,bin/com/sun/jmx/snmp/agent/SnmpMibNode.js,bin/com/sun/jmx/snmp/agent/SnmpMibOid.js,bin/com/sun/jmx/snmp/agent/SnmpMibRequest.js,bin/com/sun/jmx/snmp/agent/SnmpMibRequestImpl.js,bin/com/sun/jmx/snmp/agent/SnmpMibSubRequest.js,bin/com/sun/jmx/snmp/agent/SnmpMibTable.js,bin/com/sun/jmx/snmp/agent/SnmpRequestTree.js,bin/com/sun/jmx/snmp/agent/SnmpStandardMetaServer.js,bin/com/sun/jmx/snmp/agent/SnmpStandardObjectServer.js,bin/com/sun/jmx/snmp/agent/SnmpTableCallbackHandler.js,bin/com/sun/jmx/snmp/agent/SnmpTableEntryFactory.js,bin/com/sun/jmx/snmp/agent/SnmpTableEntryNotification.js,bin/com/sun/jmx/snmp/agent/SnmpTableSupport.js,bin/com/sun/jmx/snmp/agent/SnmpUserDataFactory.js,bin/com/sun/jmx/snmp/daemon/ClientHandler.js,bin/com/sun/jmx/snmp/daemon/CommunicationException.js,bin/com/sun/jmx/snmp/daemon/CommunicatorServer.js,bin/com/sun/jmx/snmp/daemon/CommunicatorServerMBean.js,bin/com/sun/jmx/snmp/daemon/SnmpAdaptorServer.js,bin/com/sun/jmx/snmp/daemon/SnmpAdaptorServerMBean.js,bin/com/sun/jmx/snmp/daemon/SnmpInformHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpMibTree.js,bin/com/sun/jmx/snmp/daemon/SnmpRequestHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.js,bin/com/sun/jmx/snmp/defaults/DefaultPaths.js,bin/com/sun/jmx/snmp/defaults/SnmpProperties.js,bin/com/sun/jmx/snmp/internal/SnmpAccessControlModel.js,bin/com/sun/jmx/snmp/internal/SnmpAccessControlSubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpDecryptedPdu.js,bin/com/sun/jmx/snmp/internal/SnmpEngineImpl.js,bin/com/sun/jmx/snmp/internal/SnmpIncomingRequest.js,bin/com/sun/jmx/snmp/internal/SnmpIncomingResponse.js,bin/com/sun/jmx/snmp/internal/SnmpLcd.js,bin/com/sun/jmx/snmp/internal/SnmpModel.js,bin/com/sun/jmx/snmp/internal/SnmpModelLcd.js,bin/com/sun/jmx/snmp/internal/SnmpMsgProcessingModel.js,bin/com/sun/jmx/snmp/internal/SnmpMsgProcessingSubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpOutgoingRequest.js,bin/com/sun/jmx/snmp/internal/SnmpSecurityCache.js,bin/com/sun/jmx/snmp/internal/SnmpSecurityModel.js,bin/com/sun/jmx/snmp/internal/SnmpSecuritySubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpSubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpTools.js,bin/com/sun/jmx/snmp/mpm/SnmpMsgTranslator.js,bin/com/sun/jmx/snmp/tasks/Task.js,bin/com/sun/jmx/snmp/tasks/TaskServer.js,bin/com/sun/jmx/snmp/tasks/ThreadService.js,bin/com/sun/jndi/cosnaming/CNBindingEnumeration.js,bin/com/sun/jndi/cosnaming/CNCtx.js,bin/com/sun/jndi/cosnaming/CNCtxFactory.js,bin/com/sun/jndi/cosnaming/CNNameParser.js,bin/com/sun/jndi/cosnaming/CorbanameUrl.js,bin/com/sun/jndi/cosnaming/ExceptionMapper.js,bin/com/sun/jndi/cosnaming/IiopUrl.js,bin/com/sun/jndi/cosnaming/OrbReuseTracker.js,bin/com/sun/jndi/cosnaming/RemoteToCorba.js,bin/com/sun/jndi/dns/DnsClient.js,bin/com/sun/jndi/dns/DnsContext.js,bin/com/sun/jndi/dns/DnsContextFactory.js,bin/com/sun/jndi/dns/DnsName.js,bin/com/sun/jndi/dns/DnsNameParser.js,bin/com/sun/jndi/dns/DnsUrl.js,bin/com/sun/jndi/dns/Header.js,bin/com/sun/jndi/dns/NameNode.js,bin/com/sun/jndi/dns/Resolver.js,bin/com/sun/jndi/dns/ResourceRecord.js,bin/com/sun/jndi/dns/ResourceRecords.js,bin/com/sun/jndi/dns/ZoneNode.js,bin/com/sun/jndi/ldap/BasicControl.js,bin/com/sun/jndi/ldap/Ber.js,bin/com/sun/jndi/ldap/BerDecoder.js,bin/com/sun/jndi/ldap/BerEncoder.js,bin/com/sun/jndi/ldap/BindingWithControls.js,bin/com/sun/jndi/ldap/ClientId.js,bin/com/sun/jndi/ldap/Connection.js,bin/com/sun/jndi/ldap/DefaultResponseControlFactory.js,bin/com/sun/jndi/ldap/DigestClientId.js,bin/com/sun/jndi/ldap/EntryChangeResponseControl.js,bin/com/sun/jndi/ldap/EventQueue.js,bin/com/sun/jndi/ldap/EventSupport.js,bin/com/sun/jndi/ldap/Filter.js,bin/com/sun/jndi/ldap/LdapAttribute.js,bin/com/sun/jndi/ldap/LdapBindingEnumeration.js,bin/com/sun/jndi/ldap/LdapClient.js,bin/com/sun/jndi/ldap/LdapClientFactory.js,bin/com/sun/jndi/ldap/LdapCtx.js,bin/com/sun/jndi/ldap/LdapCtxFactory.js,bin/com/sun/jndi/ldap/LdapEntry.js,bin/com/sun/jndi/ldap/LdapName.js,bin/com/sun/jndi/ldap/LdapNameParser.js,bin/com/sun/jndi/ldap/LdapNamingEnumeration.js,bin/com/sun/jndi/ldap/LdapPoolManager.js,bin/com/sun/jndi/ldap/LdapReferralContext.js,bin/com/sun/jndi/ldap/LdapReferralException.js,bin/com/sun/jndi/ldap/LdapRequest.js,bin/com/sun/jndi/ldap/LdapResult.js,bin/com/sun/jndi/ldap/LdapSchemaCtx.js,bin/com/sun/jndi/ldap/LdapSchemaParser.js,bin/com/sun/jndi/ldap/LdapSearchEnumeration.js,bin/com/sun/jndi/ldap/LdapURL.js,bin/com/sun/jndi/ldap/ManageReferralControl.js,bin/com/sun/jndi/ldap/NameClassPairWithControls.js,bin/com/sun/jndi/ldap/NamingEventNotifier.js,bin/com/sun/jndi/ldap/NotifierArgs.js,bin/com/sun/jndi/ldap/Obj.js,bin/com/sun/jndi/ldap/PersistentSearchControl.js,bin/com/sun/jndi/ldap/ReferralEnumeration.js,bin/com/sun/jndi/ldap/SearchResultWithControls.js,bin/com/sun/jndi/ldap/ServiceLocator.js,bin/com/sun/jndi/ldap/SimpleClientId.js,bin/com/sun/jndi/ldap/UnsolicitedResponseImpl.js,bin/com/sun/jndi/ldap/VersionHelper.js,bin/com/sun/jndi/ldap/VersionHelper12.js,bin/com/sun/jndi/ldap/ext/StartTlsResponseImpl.js,bin/com/sun/jndi/ldap/pool/ConnectionDesc.js,bin/com/sun/jndi/ldap/pool/Connections.js,bin/com/sun/jndi/ldap/pool/ConnectionsRef.js,bin/com/sun/jndi/ldap/pool/ConnectionsWeakRef.js,bin/com/sun/jndi/ldap/pool/Pool.js,bin/com/sun/jndi/ldap/pool/PoolCallback.js,bin/com/sun/jndi/ldap/pool/PoolCleaner.js,bin/com/sun/jndi/ldap/pool/PooledConnection.js,bin/com/sun/jndi/ldap/pool/PooledConnectionFactory.js,bin/com/sun/jndi/ldap/sasl/DefaultCallbackHandler.js,bin/com/sun/jndi/ldap/sasl/LdapSasl.js,bin/com/sun/jndi/ldap/sasl/SaslInputStream.js,bin/com/sun/jndi/ldap/sasl/SaslOutputStream.js,bin/com/sun/jndi/rmi/registry/ReferenceWrapper.js,bin/com/sun/jndi/rmi/registry/RegistryContext.js,bin/com/sun/jndi/rmi/registry/RegistryContextFactory.js,bin/com/sun/jndi/rmi/registry/RemoteReference.js,bin/com/sun/jndi/toolkit/corba/CorbaUtils.js,bin/com/sun/jndi/toolkit/ctx/AtomicContext.js,bin/com/sun/jndi/toolkit/ctx/AtomicDirContext.js,bin/com/sun/jndi/toolkit/ctx/ComponentContext.js,bin/com/sun/jndi/toolkit/ctx/ComponentDirContext.js,bin/com/sun/jndi/toolkit/ctx/Continuation.js,bin/com/sun/jndi/toolkit/ctx/HeadTail.js,bin/com/sun/jndi/toolkit/ctx/PartialCompositeContext.js,bin/com/sun/jndi/toolkit/ctx/PartialCompositeDirContext.js,bin/com/sun/jndi/toolkit/ctx/StringHeadTail.js,bin/com/sun/jndi/toolkit/dir/AttrFilter.js,bin/com/sun/jndi/toolkit/dir/ContainmentFilter.js,bin/com/sun/jndi/toolkit/dir/ContextEnumerator.js,bin/com/sun/jndi/toolkit/dir/DirSearch.js,bin/com/sun/jndi/toolkit/dir/HierMemDirCtx.js,bin/com/sun/jndi/toolkit/dir/LazySearchEnumerationImpl.js,bin/com/sun/jndi/toolkit/dir/SearchFilter.js,bin/com/sun/jndi/toolkit/url/GenericURLContext.js,bin/com/sun/jndi/toolkit/url/GenericURLDirContext.js,bin/com/sun/jndi/toolkit/url/Uri.js,bin/com/sun/jndi/toolkit/url/UrlUtil.js,bin/com/sun/jndi/url/corbaname/corbanameURLContextFactory.js,bin/com/sun/jndi/url/dns/dnsURLContext.js,bin/com/sun/jndi/url/dns/dnsURLContextFactory.js,bin/com/sun/jndi/url/iiop/iiopURLContext.js,bin/com/sun/jndi/url/iiop/iiopURLContextFactory.js,bin/com/sun/jndi/url/iiopname/iiopnameURLContextFactory.js,bin/com/sun/jndi/url/ldap/ldapURLContext.js,bin/com/sun/jndi/url/ldap/ldapURLContextFactory.js,bin/com/sun/jndi/url/ldaps/ldapsURLContextFactory.js,bin/com/sun/jndi/url/rmi/rmiURLContext.js,bin/com/sun/jndi/url/rmi/rmiURLContextFactory.js,bin/com/sun/management/GarbageCollectorMXBean.js,bin/com/sun/management/GcInfo.js,bin/com/sun/management/HotSpotDiagnosticMXBean.js,bin/com/sun/management/OperatingSystemMXBean.js,bin/com/sun/management/UnixOperatingSystemMXBean.js,bin/com/sun/management/VMOption.js,bin/com/sun/media/sound/AbstractDataLine.js,bin/com/sun/media/sound/AbstractLine.js,bin/com/sun/media/sound/AbstractMidiDevice.js,bin/com/sun/media/sound/AbstractMidiDeviceProvider.js,bin/com/sun/media/sound/AbstractMixer.js,bin/com/sun/media/sound/AiffFileFormat.js,bin/com/sun/media/sound/AiffFileReader.js,bin/com/sun/media/sound/AiffFileWriter.js,bin/com/sun/media/sound/AlawCodec.js,bin/com/sun/media/sound/AuFileFormat.js,bin/com/sun/media/sound/AuFileReader.js,bin/com/sun/media/sound/AuFileWriter.js,bin/com/sun/media/sound/AudioFileSoundbankReader.js,bin/com/sun/media/sound/AudioFloatConverter.js,bin/com/sun/media/sound/AudioFloatFormatConverter.js,bin/com/sun/media/sound/AudioFloatInputStream.js,bin/com/sun/media/sound/AudioSynthesizer.js,bin/com/sun/media/sound/AudioSynthesizerPropertyInfo.js,bin/com/sun/media/sound/AutoClosingClip.js,bin/com/sun/media/sound/AutoConnectSequencer.js,bin/com/sun/media/sound/DLSInfo.js,bin/com/sun/media/sound/DLSInstrument.js,bin/com/sun/media/sound/DLSModulator.js,bin/com/sun/media/sound/DLSRegion.js,bin/com/sun/media/sound/DLSSample.js,bin/com/sun/media/sound/DLSSampleLoop.js,bin/com/sun/media/sound/DLSSampleOptions.js,bin/com/sun/media/sound/DLSSoundbank.js,bin/com/sun/media/sound/DLSSoundbankReader.js,bin/com/sun/media/sound/DataPusher.js,bin/com/sun/media/sound/DirectAudioDevice.js,bin/com/sun/media/sound/DirectAudioDeviceProvider.js,bin/com/sun/media/sound/EmergencySoundbank.js,bin/com/sun/media/sound/EventDispatcher.js,bin/com/sun/media/sound/FFT.js,bin/com/sun/media/sound/FastShortMessage.js,bin/com/sun/media/sound/FastSysexMessage.js,bin/com/sun/media/sound/InvalidDataException.js,bin/com/sun/media/sound/InvalidFormatException.js,bin/com/sun/media/sound/JARSoundbankReader.js,bin/com/sun/media/sound/JDK13Services.js,bin/com/sun/media/sound/JSSecurityManager.js,bin/com/sun/media/sound/JavaSoundAudioClip.js,bin/com/sun/media/sound/MidiDeviceReceiver.js,bin/com/sun/media/sound/MidiInDevice.js,bin/com/sun/media/sound/MidiInDeviceProvider.js,bin/com/sun/media/sound/MidiOutDevice.js,bin/com/sun/media/sound/MidiOutDeviceProvider.js,bin/com/sun/media/sound/MidiUtils.js,bin/com/sun/media/sound/ModelAbstractChannelMixer.js,bin/com/sun/media/sound/ModelAbstractOscillator.js,bin/com/sun/media/sound/ModelByteBuffer.js,bin/com/sun/media/sound/ModelByteBufferWavetable.js,bin/com/sun/media/sound/ModelChannelMixer.js,bin/com/sun/media/sound/ModelConnectionBlock.js,bin/com/sun/media/sound/ModelDestination.js,bin/com/sun/media/sound/ModelDirectedPlayer.js,bin/com/sun/media/sound/ModelDirector.js,bin/com/sun/media/sound/ModelIdentifier.js,bin/com/sun/media/sound/ModelInstrument.js,bin/com/sun/media/sound/ModelInstrumentComparator.js,bin/com/sun/media/sound/ModelMappedInstrument.js,bin/com/sun/media/sound/ModelOscillator.js,bin/com/sun/media/sound/ModelOscillatorStream.js,bin/com/sun/media/sound/ModelPatch.js,bin/com/sun/media/sound/ModelPerformer.js,bin/com/sun/media/sound/ModelSource.js,bin/com/sun/media/sound/ModelStandardDirector.js,bin/com/sun/media/sound/ModelStandardIndexedDirector.js,bin/com/sun/media/sound/ModelStandardTransform.js,bin/com/sun/media/sound/ModelTransform.js,bin/com/sun/media/sound/ModelWavetable.js,bin/com/sun/media/sound/PCMtoPCMCodec.js,bin/com/sun/media/sound/Platform.js,bin/com/sun/media/sound/PortMixer.js,bin/com/sun/media/sound/PortMixerProvider.js,bin/com/sun/media/sound/Printer.js,bin/com/sun/media/sound/RIFFInvalidDataException.js,bin/com/sun/media/sound/RIFFInvalidFormatException.js,bin/com/sun/media/sound/RIFFReader.js,bin/com/sun/media/sound/RIFFWriter.js,bin/com/sun/media/sound/RealTimeSequencer.js,bin/com/sun/media/sound/RealTimeSequencerProvider.js,bin/com/sun/media/sound/ReferenceCountingDevice.js,bin/com/sun/media/sound/SF2GlobalRegion.js,bin/com/sun/media/sound/SF2Instrument.js,bin/com/sun/media/sound/SF2InstrumentRegion.js,bin/com/sun/media/sound/SF2Layer.js,bin/com/sun/media/sound/SF2LayerRegion.js,bin/com/sun/media/sound/SF2Modulator.js,bin/com/sun/media/sound/SF2Region.js,bin/com/sun/media/sound/SF2Sample.js,bin/com/sun/media/sound/SF2Soundbank.js,bin/com/sun/media/sound/SF2SoundbankReader.js,bin/com/sun/media/sound/SimpleInstrument.js,bin/com/sun/media/sound/SimpleSoundbank.js,bin/com/sun/media/sound/SoftAbstractResampler.js,bin/com/sun/media/sound/SoftAudioBuffer.js,bin/com/sun/media/sound/SoftAudioProcessor.js,bin/com/sun/media/sound/SoftAudioPusher.js,bin/com/sun/media/sound/SoftChannel.js,bin/com/sun/media/sound/SoftChannelProxy.js,bin/com/sun/media/sound/SoftChorus.js,bin/com/sun/media/sound/SoftControl.js,bin/com/sun/media/sound/SoftCubicResampler.js,bin/com/sun/media/sound/SoftEnvelopeGenerator.js,bin/com/sun/media/sound/SoftFilter.js,bin/com/sun/media/sound/SoftInstrument.js,bin/com/sun/media/sound/SoftJitterCorrector.js,bin/com/sun/media/sound/SoftLanczosResampler.js,bin/com/sun/media/sound/SoftLimiter.js,bin/com/sun/media/sound/SoftLinearResampler.js,bin/com/sun/media/sound/SoftLinearResampler2.js,bin/com/sun/media/sound/SoftLowFrequencyOscillator.js,bin/com/sun/media/sound/SoftMainMixer.js,bin/com/sun/media/sound/SoftMidiAudioFileReader.js,bin/com/sun/media/sound/SoftMixingClip.js,bin/com/sun/media/sound/SoftMixingDataLine.js,bin/com/sun/media/sound/SoftMixingMainMixer.js,bin/com/sun/media/sound/SoftMixingMixer.js,bin/com/sun/media/sound/SoftMixingMixerProvider.js,bin/com/sun/media/sound/SoftMixingSourceDataLine.js,bin/com/sun/media/sound/SoftPerformer.js,bin/com/sun/media/sound/SoftPointResampler.js,bin/com/sun/media/sound/SoftProcess.js,bin/com/sun/media/sound/SoftProvider.js,bin/com/sun/media/sound/SoftReceiver.js,bin/com/sun/media/sound/SoftResampler.js,bin/com/sun/media/sound/SoftResamplerStreamer.js,bin/com/sun/media/sound/SoftReverb.js,bin/com/sun/media/sound/SoftShortMessage.js,bin/com/sun/media/sound/SoftSincResampler.js,bin/com/sun/media/sound/SoftSynthesizer.js,bin/com/sun/media/sound/SoftTuning.js,bin/com/sun/media/sound/SoftVoice.js,bin/com/sun/media/sound/StandardMidiFileReader.js,bin/com/sun/media/sound/StandardMidiFileWriter.js,bin/com/sun/media/sound/SunCodec.js,bin/com/sun/media/sound/SunFileReader.js,bin/com/sun/media/sound/SunFileWriter.js,bin/com/sun/media/sound/Toolkit.js,bin/com/sun/media/sound/UlawCodec.js,bin/com/sun/media/sound/WaveExtensibleFileReader.js,bin/com/sun/media/sound/WaveFileFormat.js,bin/com/sun/media/sound/WaveFileReader.js,bin/com/sun/media/sound/WaveFileWriter.js,bin/com/sun/media/sound/WaveFloatFileReader.js,bin/com/sun/media/sound/WaveFloatFileWriter.js,bin/com/sun/naming/internal/FactoryEnumeration.js,bin/com/sun/naming/internal/NamedWeakReference.js,bin/com/sun/naming/internal/ResourceManager.js,bin/com/sun/naming/internal/VersionHelper.js,bin/com/sun/naming/internal/VersionHelper12.js,bin/com/sun/net/httpserver/Authenticator.js,bin/com/sun/net/httpserver/BasicAuthenticator.js,bin/com/sun/net/httpserver/Filter.js,bin/com/sun/net/httpserver/Headers.js,bin/com/sun/net/httpserver/HttpContext.js,bin/com/sun/net/httpserver/HttpExchange.js,bin/com/sun/net/httpserver/HttpHandler.js,bin/com/sun/net/httpserver/HttpPrincipal.js,bin/com/sun/net/httpserver/HttpServer.js,bin/com/sun/net/httpserver/HttpsConfigurator.js,bin/com/sun/net/httpserver/HttpsExchange.js,bin/com/sun/net/httpserver/HttpsParameters.js,bin/com/sun/net/httpserver/HttpsServer.js,bin/com/sun/net/httpserver/package-info.js,bin/com/sun/net/httpserver/spi/HttpServerProvider.js,bin/com/sun/net/httpserver/spi/package-info.js,bin/com/sun/net/ssl/HostnameVerifier.js,bin/com/sun/net/ssl/HttpsURLConnection.js,bin/com/sun/net/ssl/KeyManager.js,bin/com/sun/net/ssl/KeyManagerFactory.js,bin/com/sun/net/ssl/KeyManagerFactorySpi.js,bin/com/sun/net/ssl/SSLContext.js,bin/com/sun/net/ssl/SSLContextSpi.js,bin/com/sun/net/ssl/SSLPermission.js,bin/com/sun/net/ssl/SSLSecurity.js,bin/com/sun/net/ssl/TrustManager.js,bin/com/sun/net/ssl/TrustManagerFactory.js,bin/com/sun/net/ssl/TrustManagerFactorySpi.js,bin/com/sun/net/ssl/X509KeyManager.js,bin/com/sun/net/ssl/X509TrustManager.js,bin/com/sun/net/ssl/internal/ssl/Provider.js,bin/com/sun/net/ssl/internal/ssl/X509ExtendedTrustManager.js,bin/com/sun/net/ssl/internal/www/protocol/https/DelegateHttpsURLConnection.js,bin/com/sun/net/ssl/internal/www/protocol/https/Handler.js,bin/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.js,bin/com/sun/org/apache/xml/internal/security/Init.js,bin/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.js,bin/com/sun/org/apache/xml/internal/security/algorithms/ClassLoaderUtils.js,bin/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.js,bin/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.js,bin/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.js,bin/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureDSA.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureECDSA.js,bin/com/sun/org/apache/xml/internal/security/c14n/CanonicalizationException.js,bin/com/sun/org/apache/xml/internal/security/c14n/Canonicalizer.js,bin/com/sun/org/apache/xml/internal/security/c14n/CanonicalizerSpi.js,bin/com/sun/org/apache/xml/internal/security/c14n/InvalidCanonicalizerException.js,bin/com/sun/org/apache/xml/internal/security/c14n/helper/AttrCompare.js,bin/com/sun/org/apache/xml/internal/security/c14n/helper/C14nHelper.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11_OmitComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11_WithComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315Excl.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315ExclOmitComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315ExclWithComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315OmitComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315WithComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/NameSpaceSymbTable.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/UtfHelpper.js,bin/com/sun/org/apache/xml/internal/security/encryption/AgreementMethod.js,bin/com/sun/org/apache/xml/internal/security/encryption/CipherData.js,bin/com/sun/org/apache/xml/internal/security/encryption/CipherReference.js,bin/com/sun/org/apache/xml/internal/security/encryption/CipherValue.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptedData.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptedKey.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptedType.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptionMethod.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperty.js,bin/com/sun/org/apache/xml/internal/security/encryption/Reference.js,bin/com/sun/org/apache/xml/internal/security/encryption/ReferenceList.js,bin/com/sun/org/apache/xml/internal/security/encryption/Transforms.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLCipher.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLCipherInput.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLCipherParameters.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLEncryptionException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/AlgorithmAlreadyRegisteredException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/Base64DecodingException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/XMLSecurityRuntimeException.js,bin/com/sun/org/apache/xml/internal/security/keys/ContentHandlerAlreadyRegisteredException.js,bin/com/sun/org/apache/xml/internal/security/keys/KeyInfo.js,bin/com/sun/org/apache/xml/internal/security/keys/KeyUtils.js,bin/com/sun/org/apache/xml/internal/security/keys/content/KeyInfoContent.js,bin/com/sun/org/apache/xml/internal/security/keys/content/KeyName.js,bin/com/sun/org/apache/xml/internal/security/keys/content/KeyValue.js,bin/com/sun/org/apache/xml/internal/security/keys/content/MgmtData.js,bin/com/sun/org/apache/xml/internal/security/keys/content/PGPData.js,bin/com/sun/org/apache/xml/internal/security/keys/content/RetrievalMethod.js,bin/com/sun/org/apache/xml/internal/security/keys/content/SPKIData.js,bin/com/sun/org/apache/xml/internal/security/keys/content/X509Data.js,bin/com/sun/org/apache/xml/internal/security/keys/content/keyvalues/DSAKeyValue.js,bin/com/sun/org/apache/xml/internal/security/keys/content/keyvalues/KeyValueContent.js,bin/com/sun/org/apache/xml/internal/security/keys/content/keyvalues/RSAKeyValue.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509CRL.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509Certificate.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509DataContent.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509IssuerSerial.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509SKI.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509SubjectName.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/InvalidKeyResolverException.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolverException.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolverSpi.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/DSAKeyValueResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/EncryptedKeyResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RSAKeyValueResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509CertificateResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509IssuerSerialResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509SKIResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509SubjectNameResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolverException.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolverSpi.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/implementations/CertsInFilesystemDirectoryResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/implementations/KeyStoreResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/implementations/SingleCertificateResolver.js,bin/com/sun/org/apache/xml/internal/security/signature/InvalidDigestValueException.js,bin/com/sun/org/apache/xml/internal/security/signature/InvalidSignatureValueException.js,bin/com/sun/org/apache/xml/internal/security/signature/Manifest.js,bin/com/sun/org/apache/xml/internal/security/signature/MissingResourceFailureException.js,bin/com/sun/org/apache/xml/internal/security/signature/NodeFilter.js,bin/com/sun/org/apache/xml/internal/security/signature/ObjectContainer.js,bin/com/sun/org/apache/xml/internal/security/signature/Reference.js,bin/com/sun/org/apache/xml/internal/security/signature/ReferenceNotInitializedException.js,bin/com/sun/org/apache/xml/internal/security/signature/SignatureProperties.js,bin/com/sun/org/apache/xml/internal/security/signature/SignatureProperty.js,bin/com/sun/org/apache/xml/internal/security/signature/SignedInfo.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignature.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignatureException.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignatureInput.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignatureInputDebugger.js,bin/com/sun/org/apache/xml/internal/security/transforms/ClassLoaderUtils.js,bin/com/sun/org/apache/xml/internal/security/transforms/InvalidTransformException.js,bin/com/sun/org/apache/xml/internal/security/transforms/Transform.js,bin/com/sun/org/apache/xml/internal/security/transforms/TransformParam.js,bin/com/sun/org/apache/xml/internal/security/transforms/TransformSpi.js,bin/com/sun/org/apache/xml/internal/security/transforms/TransformationException.js,bin/com/sun/org/apache/xml/internal/security/transforms/Transforms.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHere.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformBase64Decode.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14N.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14N11.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14N11_WithComments.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14NExclusive.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14NExclusiveWithComments.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14NWithComments.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformEnvelopedSignature.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath2Filter.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPointer.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXSLT.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/InclusiveNamespaces.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPath2FilterContainer.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPath2FilterContainer04.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPathContainer.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPathFilterCHGPContainer.js,bin/com/sun/org/apache/xml/internal/security/utils/Base64.js,bin/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.js,bin/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.js,bin/com/sun/org/apache/xml/internal/security/utils/Constants.js,bin/com/sun/org/apache/xml/internal/security/utils/DigesterOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/ElementChecker.js,bin/com/sun/org/apache/xml/internal/security/utils/ElementCheckerImpl.js,bin/com/sun/org/apache/xml/internal/security/utils/ElementProxy.js,bin/com/sun/org/apache/xml/internal/security/utils/EncryptionConstants.js,bin/com/sun/org/apache/xml/internal/security/utils/EncryptionElementProxy.js,bin/com/sun/org/apache/xml/internal/security/utils/HelperNodeList.js,bin/com/sun/org/apache/xml/internal/security/utils/I18n.js,bin/com/sun/org/apache/xml/internal/security/utils/IdResolver.js,bin/com/sun/org/apache/xml/internal/security/utils/IgnoreAllErrorHandler.js,bin/com/sun/org/apache/xml/internal/security/utils/JavaUtils.js,bin/com/sun/org/apache/xml/internal/security/utils/RFC2253Parser.js,bin/com/sun/org/apache/xml/internal/security/utils/SignatureElementProxy.js,bin/com/sun/org/apache/xml/internal/security/utils/SignerOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/XMLUtils.js,bin/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolverException.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolverSpi.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverAnonymous.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverDirectHTTP.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverFragment.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverLocalFilesystem.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverXPointer.js,bin/com/sun/pept/Delegate.js,bin/com/sun/pept/encoding/Decoder.js,bin/com/sun/pept/encoding/Encoder.js,bin/com/sun/pept/ept/Acceptor.js,bin/com/sun/pept/ept/ContactInfo.js,bin/com/sun/pept/ept/ContactInfoList.js,bin/com/sun/pept/ept/ContactInfoListIterator.js,bin/com/sun/pept/ept/EPTFactory.js,bin/com/sun/pept/ept/MessageInfo.js,bin/com/sun/pept/presentation/MessageStruct.js,bin/com/sun/pept/presentation/Stub.js,bin/com/sun/pept/presentation/TargetFinder.js,bin/com/sun/pept/presentation/Tie.js,bin/com/sun/pept/protocol/Interceptors.js,bin/com/sun/pept/protocol/MessageDispatcher.js,bin/com/sun/pept/transport/Connection.js,bin/com/sun/rmi/rmid/ExecOptionPermission.js,bin/com/sun/rmi/rmid/ExecPermission.js,bin/com/sun/rowset/CachedRowSetImpl.js,bin/com/sun/rowset/FilteredRowSetImpl.js,bin/com/sun/rowset/JdbcRowSetImpl.js,bin/com/sun/rowset/JdbcRowSetResourceBundle.js,bin/com/sun/rowset/JoinRowSetImpl.js,bin/com/sun/rowset/WebRowSetImpl.js,bin/com/sun/rowset/internal/BaseRow.js,bin/com/sun/rowset/internal/CachedRowSetReader.js,bin/com/sun/rowset/internal/CachedRowSetWriter.js,bin/com/sun/rowset/internal/InsertRow.js,bin/com/sun/rowset/internal/Row.js,bin/com/sun/rowset/internal/SyncResolverImpl.js,bin/com/sun/rowset/internal/WebRowSetXmlReader.js,bin/com/sun/rowset/internal/WebRowSetXmlWriter.js,bin/com/sun/rowset/internal/XmlErrorHandler.js,bin/com/sun/rowset/internal/XmlReaderContentHandler.js,bin/com/sun/rowset/internal/XmlResolver.js,bin/com/sun/rowset/providers/RIOptimisticProvider.js,bin/com/sun/rowset/providers/RIXMLProvider.js,bin/com/sun/script/javascript/ExternalScriptable.js,bin/com/sun/script/javascript/JSAdapter.js,bin/com/sun/script/javascript/JavaAdapter.js,bin/com/sun/script/javascript/RhinoClassShutter.js,bin/com/sun/script/javascript/RhinoCompiledScript.js,bin/com/sun/script/javascript/RhinoScriptEngine.js,bin/com/sun/script/javascript/RhinoScriptEngineFactory.js,bin/com/sun/script/javascript/RhinoTopLevel.js,bin/com/sun/script/javascript/RhinoWrapFactory.js,bin/com/sun/script/util/BindingsBase.js,bin/com/sun/script/util/BindingsEntrySet.js,bin/com/sun/script/util/BindingsImpl.js,bin/com/sun/script/util/InterfaceImplementor.js,bin/com/sun/script/util/ScriptEngineFactoryBase.js,bin/com/sun/security/auth/LdapPrincipal.js,bin/com/sun/security/auth/NTDomainPrincipal.js,bin/com/sun/security/auth/NTNumericCredential.js,bin/com/sun/security/auth/NTSid.js,bin/com/sun/security/auth/NTSidDomainPrincipal.js,bin/com/sun/security/auth/NTSidGroupPrincipal.js,bin/com/sun/security/auth/NTSidPrimaryGroupPrincipal.js,bin/com/sun/security/auth/NTSidUserPrincipal.js,bin/com/sun/security/auth/NTUserPrincipal.js,bin/com/sun/security/auth/PolicyFile.js,bin/com/sun/security/auth/PolicyParser.js,bin/com/sun/security/auth/PrincipalComparator.js,bin/com/sun/security/auth/SolarisNumericGroupPrincipal.js,bin/com/sun/security/auth/SolarisNumericUserPrincipal.js,bin/com/sun/security/auth/SolarisPrincipal.js,bin/com/sun/security/auth/SubjectCodeSource.js,bin/com/sun/security/auth/UnixNumericGroupPrincipal.js,bin/com/sun/security/auth/UnixNumericUserPrincipal.js,bin/com/sun/security/auth/UnixPrincipal.js,bin/com/sun/security/auth/UserPrincipal.js,bin/com/sun/security/auth/X500Principal.js,bin/com/sun/security/auth/callback/DialogCallbackHandler.js,bin/com/sun/security/auth/callback/TextCallbackHandler.js,bin/com/sun/security/auth/login/ConfigFile.js,bin/com/sun/security/auth/module/Crypt.js,bin/com/sun/security/auth/module/JndiLoginModule.js,bin/com/sun/security/auth/module/KeyStoreLoginModule.js,bin/com/sun/security/auth/module/Krb5LoginModule.js,bin/com/sun/security/auth/module/LdapLoginModule.js,bin/com/sun/security/auth/module/NTLoginModule.js,bin/com/sun/security/auth/module/NTSystem.js,bin/com/sun/security/auth/module/SolarisLoginModule.js,bin/com/sun/security/auth/module/SolarisSystem.js,bin/com/sun/security/auth/module/UnixLoginModule.js,bin/com/sun/security/auth/module/UnixSystem.js,bin/com/sun/security/cert/internal/x509/X509V1CertImpl.js,bin/com/sun/security/jgss/GSSUtil.js,bin/com/sun/security/sasl/ClientFactoryImpl.js,bin/com/sun/security/sasl/CramMD5Base.js,bin/com/sun/security/sasl/CramMD5Client.js,bin/com/sun/security/sasl/CramMD5Server.js,bin/com/sun/security/sasl/ExternalClient.js,bin/com/sun/security/sasl/PlainClient.js,bin/com/sun/security/sasl/Provider.js,bin/com/sun/security/sasl/ServerFactoryImpl.js,bin/com/sun/security/sasl/digest/DigestMD5Base.js,bin/com/sun/security/sasl/digest/DigestMD5Client.js,bin/com/sun/security/sasl/digest/DigestMD5Server.js,bin/com/sun/security/sasl/digest/FactoryImpl.js,bin/com/sun/security/sasl/digest/SecurityCtx.js,bin/com/sun/security/sasl/gsskerb/FactoryImpl.js,bin/com/sun/security/sasl/gsskerb/GssKrb5Base.js,bin/com/sun/security/sasl/gsskerb/GssKrb5Client.js,bin/com/sun/security/sasl/gsskerb/GssKrb5Server.js,bin/com/sun/security/sasl/util/AbstractSaslImpl.js,bin/com/sun/security/sasl/util/PolicyUtils.js,bin/com/sun/tools/attach/AgentInitializationException.js,bin/com/sun/tools/attach/AgentLoadException.js,bin/com/sun/tools/attach/AttachNotSupportedException.js,bin/com/sun/tools/attach/AttachPermission.js,bin/com/sun/tools/attach/VirtualMachine.js,bin/com/sun/tools/attach/VirtualMachineDescriptor.js,bin/com/sun/tools/attach/spi/AttachProvider.js,bin/com/sun/tools/example/debug/bdi/AccessWatchpointSpec.js,bin/com/sun/tools/example/debug/bdi/AmbiguousMethodException.js,bin/com/sun/tools/example/debug/bdi/BreakpointSpec.js,bin/com/sun/tools/example/debug/bdi/ChildSession.js,bin/com/sun/tools/example/debug/bdi/EvaluationException.js,bin/com/sun/tools/example/debug/bdi/EventRequestSpec.js,bin/com/sun/tools/example/debug/bdi/EventRequestSpecList.js,bin/com/sun/tools/example/debug/bdi/ExceptionSpec.js,bin/com/sun/tools/example/debug/bdi/ExecutionManager.js,bin/com/sun/tools/example/debug/bdi/FrameIndexOutOfBoundsException.js,bin/com/sun/tools/example/debug/bdi/InputListener.js,bin/com/sun/tools/example/debug/bdi/JDIEventSource.js,bin/com/sun/tools/example/debug/bdi/LineBreakpointSpec.js,bin/com/sun/tools/example/debug/bdi/LineNotFoundException.js,bin/com/sun/tools/example/debug/bdi/MalformedMemberNameException.js,bin/com/sun/tools/example/debug/bdi/MethodBreakpointSpec.js,bin/com/sun/tools/example/debug/bdi/MethodNotFoundException.js,bin/com/sun/tools/example/debug/bdi/ModificationWatchpointSpec.js,bin/com/sun/tools/example/debug/bdi/NoSessionException.js,bin/com/sun/tools/example/debug/bdi/NoThreadException.js,bin/com/sun/tools/example/debug/bdi/OutputListener.js,bin/com/sun/tools/example/debug/bdi/ParseException.js,bin/com/sun/tools/example/debug/bdi/PatternReferenceTypeSpec.js,bin/com/sun/tools/example/debug/bdi/ReferenceTypeSpec.js,bin/com/sun/tools/example/debug/bdi/Session.js,bin/com/sun/tools/example/debug/bdi/SessionListener.js,bin/com/sun/tools/example/debug/bdi/SourceNameReferenceTypeSpec.js,bin/com/sun/tools/example/debug/bdi/SpecErrorEvent.js,bin/com/sun/tools/example/debug/bdi/SpecEvent.js,bin/com/sun/tools/example/debug/bdi/SpecListener.js,bin/com/sun/tools/example/debug/bdi/ThreadGroupIterator.js,bin/com/sun/tools/example/debug/bdi/ThreadInfo.js,bin/com/sun/tools/example/debug/bdi/ThreadIterator.js,bin/com/sun/tools/example/debug/bdi/Utils.js,bin/com/sun/tools/example/debug/bdi/VMLaunchFailureException.js,bin/com/sun/tools/example/debug/bdi/VMNotInterruptedException.js,bin/com/sun/tools/example/debug/bdi/WatchpointSpec.js,bin/com/sun/tools/example/debug/event/AbstractEventSet.js,bin/com/sun/tools/example/debug/event/AccessWatchpointEventSet.js,bin/com/sun/tools/example/debug/event/ClassPrepareEventSet.js,bin/com/sun/tools/example/debug/event/ClassUnloadEventSet.js,bin/com/sun/tools/example/debug/event/ExceptionEventSet.js,bin/com/sun/tools/example/debug/event/JDIAdapter.js,bin/com/sun/tools/example/debug/event/JDIListener.js,bin/com/sun/tools/example/debug/event/LocatableEventSet.js,bin/com/sun/tools/example/debug/event/LocationTriggerEventSet.js,bin/com/sun/tools/example/debug/event/ModificationWatchpointEventSet.js,bin/com/sun/tools/example/debug/event/ThreadDeathEventSet.js,bin/com/sun/tools/example/debug/event/ThreadStartEventSet.js,bin/com/sun/tools/example/debug/event/VMDeathEventSet.js,bin/com/sun/tools/example/debug/event/VMDisconnectEventSet.js,bin/com/sun/tools/example/debug/event/VMStartEventSet.js,bin/com/sun/tools/example/debug/event/WatchpointEventSet.js,bin/com/sun/tools/example/debug/expr/ASCII_UCodeESC_CharStream.js,bin/com/sun/tools/example/debug/expr/ExpressionParser.js,bin/com/sun/tools/example/debug/expr/ExpressionParserConstants.js,bin/com/sun/tools/example/debug/expr/ExpressionParserTokenManager.js,bin/com/sun/tools/example/debug/expr/LValue.js,bin/com/sun/tools/example/debug/expr/ParseException.js,bin/com/sun/tools/example/debug/expr/Token.js,bin/com/sun/tools/example/debug/expr/TokenMgrError.js,bin/com/sun/tools/example/debug/gui/ApplicationTool.js,bin/com/sun/tools/example/debug/gui/ClassManager.js,bin/com/sun/tools/example/debug/gui/ClassTreeTool.js,bin/com/sun/tools/example/debug/gui/CommandInterpreter.js,bin/com/sun/tools/example/debug/gui/CommandTool.js,bin/com/sun/tools/example/debug/gui/ContextListener.js,bin/com/sun/tools/example/debug/gui/ContextManager.js,bin/com/sun/tools/example/debug/gui/CurrentFrameChangedEvent.js,bin/com/sun/tools/example/debug/gui/Environment.js,bin/com/sun/tools/example/debug/gui/GUI.js,bin/com/sun/tools/example/debug/gui/Icons.js,bin/com/sun/tools/example/debug/gui/JDBFileFilter.js,bin/com/sun/tools/example/debug/gui/JDBMenuBar.js,bin/com/sun/tools/example/debug/gui/JDBToolBar.js,bin/com/sun/tools/example/debug/gui/LaunchTool.js,bin/com/sun/tools/example/debug/gui/MonitorListModel.js,bin/com/sun/tools/example/debug/gui/MonitorTool.js,bin/com/sun/tools/example/debug/gui/OutputSink.js,bin/com/sun/tools/example/debug/gui/SearchPath.js,bin/com/sun/tools/example/debug/gui/SingleLeafTreeSelectionModel.js,bin/com/sun/tools/example/debug/gui/SourceListener.js,bin/com/sun/tools/example/debug/gui/SourceManager.js,bin/com/sun/tools/example/debug/gui/SourceModel.js,bin/com/sun/tools/example/debug/gui/SourceTool.js,bin/com/sun/tools/example/debug/gui/SourceTreeTool.js,bin/com/sun/tools/example/debug/gui/SourcepathChangedEvent.js,bin/com/sun/tools/example/debug/gui/StackTraceTool.js,bin/com/sun/tools/example/debug/gui/ThreadTreeTool.js,bin/com/sun/tools/example/debug/gui/TypeScript.js,bin/com/sun/tools/example/debug/gui/TypeScriptOutputListener.js,bin/com/sun/tools/example/debug/gui/TypeScriptWriter.js,bin/com/sun/tools/example/debug/tty/AccessWatchpointSpec.js,bin/com/sun/tools/example/debug/tty/AmbiguousMethodException.js,bin/com/sun/tools/example/debug/tty/BreakpointSpec.js,bin/com/sun/tools/example/debug/tty/Commands.js,bin/com/sun/tools/example/debug/tty/Env.js,bin/com/sun/tools/example/debug/tty/EventHandler.js,bin/com/sun/tools/example/debug/tty/EventNotifier.js,bin/com/sun/tools/example/debug/tty/EventRequestSpec.js,bin/com/sun/tools/example/debug/tty/EventRequestSpecList.js,bin/com/sun/tools/example/debug/tty/ExceptionSpec.js,bin/com/sun/tools/example/debug/tty/LineNotFoundException.js,bin/com/sun/tools/example/debug/tty/MalformedMemberNameException.js,bin/com/sun/tools/example/debug/tty/MessageOutput.js,bin/com/sun/tools/example/debug/tty/ModificationWatchpointSpec.js,bin/com/sun/tools/example/debug/tty/PatternReferenceTypeSpec.js,bin/com/sun/tools/example/debug/tty/ReferenceTypeSpec.js,bin/com/sun/tools/example/debug/tty/SourceMapper.js,bin/com/sun/tools/example/debug/tty/TTY.js,bin/com/sun/tools/example/debug/tty/TTYResources.js,bin/com/sun/tools/example/debug/tty/TTYResources_ja.js,bin/com/sun/tools/example/debug/tty/TTYResources_zh_CN.js,bin/com/sun/tools/example/debug/tty/ThreadGroupIterator.js,bin/com/sun/tools/example/debug/tty/ThreadInfo.js,bin/com/sun/tools/example/debug/tty/ThreadIterator.js,bin/com/sun/tools/example/debug/tty/VMConnection.js,bin/com/sun/tools/example/debug/tty/VMNotConnectedException.js,bin/com/sun/tools/example/debug/tty/WatchpointSpec.js,bin/com/sun/tools/example/trace/EventThread.js,bin/com/sun/tools/example/trace/StreamRedirectThread.js,bin/com/sun/tools/example/trace/Trace.js,bin/com/sun/tools/extcheck/ExtCheck.js,bin/com/sun/tools/extcheck/Main.js,bin/com/sun/tools/hat/Main.js,bin/com/sun/tools/hat/internal/model/AbstractJavaHeapObjectVisitor.js,bin/com/sun/tools/hat/internal/model/ArrayTypeCodes.js,bin/com/sun/tools/hat/internal/model/HackJavaValue.js,bin/com/sun/tools/hat/internal/model/JavaBoolean.js,bin/com/sun/tools/hat/internal/model/JavaByte.js,bin/com/sun/tools/hat/internal/model/JavaChar.js,bin/com/sun/tools/hat/internal/model/JavaClass.js,bin/com/sun/tools/hat/internal/model/JavaDouble.js,bin/com/sun/tools/hat/internal/model/JavaField.js,bin/com/sun/tools/hat/internal/model/JavaFloat.js,bin/com/sun/tools/hat/internal/model/JavaHeapObject.js,bin/com/sun/tools/hat/internal/model/JavaHeapObjectVisitor.js,bin/com/sun/tools/hat/internal/model/JavaInt.js,bin/com/sun/tools/hat/internal/model/JavaLazyReadObject.js,bin/com/sun/tools/hat/internal/model/JavaLong.js,bin/com/sun/tools/hat/internal/model/JavaObject.js,bin/com/sun/tools/hat/internal/model/JavaObjectArray.js,bin/com/sun/tools/hat/internal/model/JavaObjectRef.js,bin/com/sun/tools/hat/internal/model/JavaShort.js,bin/com/sun/tools/hat/internal/model/JavaStatic.js,bin/com/sun/tools/hat/internal/model/JavaThing.js,bin/com/sun/tools/hat/internal/model/JavaValue.js,bin/com/sun/tools/hat/internal/model/JavaValueArray.js,bin/com/sun/tools/hat/internal/model/ReachableExcludes.js,bin/com/sun/tools/hat/internal/model/ReachableExcludesImpl.js,bin/com/sun/tools/hat/internal/model/ReachableObjects.js,bin/com/sun/tools/hat/internal/model/ReferenceChain.js,bin/com/sun/tools/hat/internal/model/Root.js,bin/com/sun/tools/hat/internal/model/Snapshot.js,bin/com/sun/tools/hat/internal/model/StackFrame.js,bin/com/sun/tools/hat/internal/model/StackTrace.js,bin/com/sun/tools/hat/internal/oql/OQLEngine.js,bin/com/sun/tools/hat/internal/oql/OQLException.js,bin/com/sun/tools/hat/internal/oql/OQLQuery.js,bin/com/sun/tools/hat/internal/oql/ObjectVisitor.js,bin/com/sun/tools/hat/internal/parser/FileReadBuffer.js,bin/com/sun/tools/hat/internal/parser/HprofReader.js,bin/com/sun/tools/hat/internal/parser/MappedReadBuffer.js,bin/com/sun/tools/hat/internal/parser/PositionDataInputStream.js,bin/com/sun/tools/hat/internal/parser/PositionInputStream.js,bin/com/sun/tools/hat/internal/parser/ReadBuffer.js,bin/com/sun/tools/hat/internal/parser/Reader.js,bin/com/sun/tools/hat/internal/server/AllClassesQuery.js,bin/com/sun/tools/hat/internal/server/AllRootsQuery.js,bin/com/sun/tools/hat/internal/server/ClassQuery.js,bin/com/sun/tools/hat/internal/server/FinalizerObjectsQuery.js,bin/com/sun/tools/hat/internal/server/FinalizerSummaryQuery.js,bin/com/sun/tools/hat/internal/server/HistogramQuery.js,bin/com/sun/tools/hat/internal/server/HttpReader.js,bin/com/sun/tools/hat/internal/server/InstancesCountQuery.js,bin/com/sun/tools/hat/internal/server/InstancesQuery.js,bin/com/sun/tools/hat/internal/server/OQLHelp.js,bin/com/sun/tools/hat/internal/server/OQLQuery.js,bin/com/sun/tools/hat/internal/server/ObjectQuery.js,bin/com/sun/tools/hat/internal/server/PlatformClasses.js,bin/com/sun/tools/hat/internal/server/QueryHandler.js,bin/com/sun/tools/hat/internal/server/QueryListener.js,bin/com/sun/tools/hat/internal/server/ReachableQuery.js,bin/com/sun/tools/hat/internal/server/RefsByTypeQuery.js,bin/com/sun/tools/hat/internal/server/RootStackQuery.js,bin/com/sun/tools/hat/internal/server/RootsQuery.js,bin/com/sun/tools/hat/internal/util/ArraySorter.js,bin/com/sun/tools/hat/internal/util/Comparer.js,bin/com/sun/tools/hat/internal/util/CompositeEnumeration.js,bin/com/sun/tools/hat/internal/util/Misc.js,bin/com/sun/tools/hat/internal/util/VectorSorter.js,bin/com/sun/tools/jconsole/JConsoleContext.js,bin/com/sun/tools/jconsole/JConsolePlugin.js,bin/com/sun/tools/jdi/AbstractLauncher.js,bin/com/sun/tools/jdi/ArrayReferenceImpl.js,bin/com/sun/tools/jdi/ArrayTypeImpl.js,bin/com/sun/tools/jdi/BaseLineInfo.js,bin/com/sun/tools/jdi/BooleanTypeImpl.js,bin/com/sun/tools/jdi/BooleanValueImpl.js,bin/com/sun/tools/jdi/ByteTypeImpl.js,bin/com/sun/tools/jdi/ByteValueImpl.js,bin/com/sun/tools/jdi/CharTypeImpl.js,bin/com/sun/tools/jdi/CharValueImpl.js,bin/com/sun/tools/jdi/ClassLoaderReferenceImpl.js,bin/com/sun/tools/jdi/ClassObjectReferenceImpl.js,bin/com/sun/tools/jdi/ClassTypeImpl.js,bin/com/sun/tools/jdi/CommandSender.js,bin/com/sun/tools/jdi/ConcreteMethodImpl.js,bin/com/sun/tools/jdi/ConnectorImpl.js,bin/com/sun/tools/jdi/DoubleTypeImpl.js,bin/com/sun/tools/jdi/DoubleValueImpl.js,bin/com/sun/tools/jdi/EventQueueImpl.js,bin/com/sun/tools/jdi/EventRequestManagerImpl.js,bin/com/sun/tools/jdi/EventSetImpl.js,bin/com/sun/tools/jdi/FieldImpl.js,bin/com/sun/tools/jdi/FloatTypeImpl.js,bin/com/sun/tools/jdi/FloatValueImpl.js,bin/com/sun/tools/jdi/GenericAttachingConnector.js,bin/com/sun/tools/jdi/GenericListeningConnector.js,bin/com/sun/tools/jdi/IntegerTypeImpl.js,bin/com/sun/tools/jdi/IntegerValueImpl.js,bin/com/sun/tools/jdi/InterfaceTypeImpl.js,bin/com/sun/tools/jdi/InternalEventHandler.js,bin/com/sun/tools/jdi/JDWPException.js,bin/com/sun/tools/jdi/JNITypeParser.js,bin/com/sun/tools/jdi/LineInfo.js,bin/com/sun/tools/jdi/LinkedHashMap.js,bin/com/sun/tools/jdi/LocalVariableImpl.js,bin/com/sun/tools/jdi/LocationImpl.js,bin/com/sun/tools/jdi/LockObject.js,bin/com/sun/tools/jdi/LongTypeImpl.js,bin/com/sun/tools/jdi/LongValueImpl.js,bin/com/sun/tools/jdi/MethodImpl.js,bin/com/sun/tools/jdi/MirrorImpl.js,bin/com/sun/tools/jdi/MonitorInfoImpl.js,bin/com/sun/tools/jdi/NonConcreteMethodImpl.js,bin/com/sun/tools/jdi/ObjectReferenceImpl.js,bin/com/sun/tools/jdi/ObsoleteMethodImpl.js,bin/com/sun/tools/jdi/Packet.js,bin/com/sun/tools/jdi/PacketStream.js,bin/com/sun/tools/jdi/PrimitiveTypeImpl.js,bin/com/sun/tools/jdi/PrimitiveValueImpl.js,bin/com/sun/tools/jdi/ProcessAttachingConnector.js,bin/com/sun/tools/jdi/RawCommandLineLauncher.js,bin/com/sun/tools/jdi/ReferenceTypeImpl.js,bin/com/sun/tools/jdi/SDE.js,bin/com/sun/tools/jdi/ShortTypeImpl.js,bin/com/sun/tools/jdi/ShortValueImpl.js,bin/com/sun/tools/jdi/SocketAttachingConnector.js,bin/com/sun/tools/jdi/SocketListeningConnector.js,bin/com/sun/tools/jdi/SocketTransportService.js,bin/com/sun/tools/jdi/StackFrameImpl.js,bin/com/sun/tools/jdi/StratumLineInfo.js,bin/com/sun/tools/jdi/StringReferenceImpl.js,bin/com/sun/tools/jdi/SunCommandLineLauncher.js,bin/com/sun/tools/jdi/TargetVM.js,bin/com/sun/tools/jdi/ThreadAction.js,bin/com/sun/tools/jdi/ThreadGroupReferenceImpl.js,bin/com/sun/tools/jdi/ThreadListener.js,bin/com/sun/tools/jdi/ThreadReferenceImpl.js,bin/com/sun/tools/jdi/TypeComponentImpl.js,bin/com/sun/tools/jdi/TypeImpl.js,bin/com/sun/tools/jdi/VMAction.js,bin/com/sun/tools/jdi/VMListener.js,bin/com/sun/tools/jdi/VMModifiers.js,bin/com/sun/tools/jdi/VMState.js,bin/com/sun/tools/jdi/ValueContainer.js,bin/com/sun/tools/jdi/ValueImpl.js,bin/com/sun/tools/jdi/VirtualMachineImpl.js,bin/com/sun/tools/jdi/VirtualMachineManagerImpl.js,bin/com/sun/tools/jdi/VirtualMachineManagerService.js,bin/com/sun/tools/jdi/VoidTypeImpl.js,bin/com/sun/tools/jdi/VoidValueImpl.js,bin/com/sun/tools/script/shell/Main.js,bin/java/applet/Applet.js,bin/java/applet/AppletContext.js,bin/java/applet/AppletStub.js,bin/java/applet/AudioClip.js,bin/java/awt/AWTError.js,bin/java/awt/AWTEvent.js,bin/java/awt/AWTEventMulticaster.js,bin/java/awt/AWTException.js,bin/java/awt/AWTKeyStroke.js,bin/java/awt/AWTPermission.js,bin/java/awt/ActiveEvent.js,bin/java/awt/Adjustable.js,bin/java/awt/AlphaComposite.js,bin/java/awt/AttributeValue.js,bin/java/awt/BasicStroke.js,bin/java/awt/BorderLayout.js,bin/java/awt/BufferCapabilities.js,bin/java/awt/Button.js,bin/java/awt/Canvas.js,bin/java/awt/CardLayout.js,bin/java/awt/Checkbox.js,bin/java/awt/CheckboxGroup.js,bin/java/awt/CheckboxMenuItem.js,bin/java/awt/Choice.js,bin/java/awt/Color.js,bin/java/awt/ColorPaintContext.js,bin/java/awt/Component.js,bin/java/awt/ComponentOrientation.js,bin/java/awt/Composite.js,bin/java/awt/CompositeContext.js,bin/java/awt/Conditional.js,bin/java/awt/Container.js,bin/java/awt/ContainerOrderFocusTraversalPolicy.js,bin/java/awt/Cursor.js,bin/java/awt/DefaultFocusTraversalPolicy.js,bin/java/awt/DefaultKeyboardFocusManager.js,bin/java/awt/Desktop.js,bin/java/awt/Dialog.js,bin/java/awt/Dimension.js,bin/java/awt/DisplayMode.js,bin/java/awt/Event.js,bin/java/awt/EventDispatchThread.js,bin/java/awt/EventFilter.js,bin/java/awt/EventQueue.js,bin/java/awt/FileDialog.js,bin/java/awt/FlowLayout.js,bin/java/awt/FocusTraversalPolicy.js,bin/java/awt/Font.js,bin/java/awt/FontFormatException.js,bin/java/awt/FontMetrics.js,bin/java/awt/Frame.js,bin/java/awt/GradientPaint.js,bin/java/awt/GradientPaintContext.js,bin/java/awt/Graphics.js,bin/java/awt/Graphics2D.js,bin/java/awt/GraphicsCallback.js,bin/java/awt/GraphicsConfigTemplate.js,bin/java/awt/GraphicsConfiguration.js,bin/java/awt/GraphicsDevice.js,bin/java/awt/GraphicsEnvironment.js,bin/java/awt/GridBagConstraints.js,bin/java/awt/GridBagLayout.js,bin/java/awt/GridBagLayoutInfo.js,bin/java/awt/GridLayout.js,bin/java/awt/HeadlessException.js,bin/java/awt/IllegalComponentStateException.js,bin/java/awt/Image.js,bin/java/awt/ImageCapabilities.js,bin/java/awt/Insets.js,bin/java/awt/ItemSelectable.js,bin/java/awt/JobAttributes.js,bin/java/awt/KeyEventDispatcher.js,bin/java/awt/KeyEventPostProcessor.js,bin/java/awt/KeyboardFocusManager.js,bin/java/awt/Label.js,bin/java/awt/LayoutManager.js,bin/java/awt/LayoutManager2.js,bin/java/awt/LinearGradientPaint.js,bin/java/awt/LinearGradientPaintContext.js,bin/java/awt/List.js,bin/java/awt/MediaTracker.js,bin/java/awt/Menu.js,bin/java/awt/MenuBar.js,bin/java/awt/MenuComponent.js,bin/java/awt/MenuContainer.js,bin/java/awt/MenuItem.js,bin/java/awt/MenuShortcut.js,bin/java/awt/ModalEventFilter.js,bin/java/awt/MouseInfo.js,bin/java/awt/MultipleGradientPaint.js,bin/java/awt/MultipleGradientPaintContext.js,bin/java/awt/PageAttributes.js,bin/java/awt/Paint.js,bin/java/awt/PaintContext.js,bin/java/awt/Panel.js,bin/java/awt/Point.js,bin/java/awt/PointerInfo.js,bin/java/awt/Polygon.js,bin/java/awt/PopupMenu.js,bin/java/awt/PrintGraphics.js,bin/java/awt/PrintJob.js,bin/java/awt/RadialGradientPaint.js,bin/java/awt/RadialGradientPaintContext.js,bin/java/awt/Rectangle.js,bin/java/awt/RenderingHints.js,bin/java/awt/Robot.js,bin/java/awt/ScrollPane.js,bin/java/awt/ScrollPaneAdjustable.js,bin/java/awt/Scrollbar.js,bin/java/awt/SentEvent.js,bin/java/awt/SequencedEvent.js,bin/java/awt/Shape.js,bin/java/awt/SplashScreen.js,bin/java/awt/Stroke.js,bin/java/awt/SystemColor.js,bin/java/awt/SystemTray.js,bin/java/awt/TextArea.js,bin/java/awt/TextComponent.js,bin/java/awt/TextField.js,bin/java/awt/TexturePaint.js,bin/java/awt/TexturePaintContext.js,bin/java/awt/Toolkit.js,bin/java/awt/Transparency.js,bin/java/awt/TrayIcon.js,bin/java/awt/Window.js,bin/java/awt/color/CMMException.js,bin/java/awt/color/ColorSpace.js,bin/java/awt/color/ICC_ColorSpace.js,bin/java/awt/color/ICC_Profile.js,bin/java/awt/color/ICC_ProfileGray.js,bin/java/awt/color/ICC_ProfileRGB.js,bin/java/awt/color/ProfileDataException.js,bin/java/awt/datatransfer/Clipboard.js,bin/java/awt/datatransfer/ClipboardOwner.js,bin/java/awt/datatransfer/DataFlavor.js,bin/java/awt/datatransfer/FlavorEvent.js,bin/java/awt/datatransfer/FlavorListener.js,bin/java/awt/datatransfer/FlavorMap.js,bin/java/awt/datatransfer/FlavorTable.js,bin/java/awt/datatransfer/MimeType.js,bin/java/awt/datatransfer/MimeTypeParameterList.js,bin/java/awt/datatransfer/MimeTypeParseException.js,bin/java/awt/datatransfer/StringSelection.js,bin/java/awt/datatransfer/SystemFlavorMap.js,bin/java/awt/datatransfer/Transferable.js,bin/java/awt/datatransfer/UnsupportedFlavorException.js,bin/java/awt/dnd/Autoscroll.js,bin/java/awt/dnd/DnDConstants.js,bin/java/awt/dnd/DnDEventMulticaster.js,bin/java/awt/dnd/DragGestureEvent.js,bin/java/awt/dnd/DragGestureListener.js,bin/java/awt/dnd/DragGestureRecognizer.js,bin/java/awt/dnd/DragSource.js,bin/java/awt/dnd/DragSourceAdapter.js,bin/java/awt/dnd/DragSourceContext.js,bin/java/awt/dnd/DragSourceDragEvent.js,bin/java/awt/dnd/DragSourceDropEvent.js,bin/java/awt/dnd/DragSourceEvent.js,bin/java/awt/dnd/DragSourceListener.js,bin/java/awt/dnd/DragSourceMotionListener.js,bin/java/awt/dnd/DropTarget.js,bin/java/awt/dnd/DropTargetAdapter.js,bin/java/awt/dnd/DropTargetContext.js,bin/java/awt/dnd/DropTargetDragEvent.js,bin/java/awt/dnd/DropTargetDropEvent.js,bin/java/awt/dnd/DropTargetEvent.js,bin/java/awt/dnd/DropTargetListener.js,bin/java/awt/dnd/InvalidDnDOperationException.js,bin/java/awt/dnd/MouseDragGestureRecognizer.js,bin/java/awt/dnd/SerializationTester.js,bin/java/awt/dnd/peer/DragSourceContextPeer.js,bin/java/awt/dnd/peer/DropTargetContextPeer.js,bin/java/awt/dnd/peer/DropTargetPeer.js,bin/java/awt/event/AWTEventListener.js,bin/java/awt/event/AWTEventListenerProxy.js,bin/java/awt/event/ActionEvent.js,bin/java/awt/event/ActionListener.js,bin/java/awt/event/AdjustmentEvent.js,bin/java/awt/event/AdjustmentListener.js,bin/java/awt/event/ComponentAdapter.js,bin/java/awt/event/ComponentEvent.js,bin/java/awt/event/ComponentListener.js,bin/java/awt/event/ContainerAdapter.js,bin/java/awt/event/ContainerEvent.js,bin/java/awt/event/ContainerListener.js,bin/java/awt/event/FocusAdapter.js,bin/java/awt/event/FocusEvent.js,bin/java/awt/event/FocusListener.js,bin/java/awt/event/HierarchyBoundsAdapter.js,bin/java/awt/event/HierarchyBoundsListener.js,bin/java/awt/event/HierarchyEvent.js,bin/java/awt/event/HierarchyListener.js,bin/java/awt/event/InputEvent.js,bin/java/awt/event/InputMethodEvent.js,bin/java/awt/event/InputMethodListener.js,bin/java/awt/event/InvocationEvent.js,bin/java/awt/event/ItemEvent.js,bin/java/awt/event/ItemListener.js,bin/java/awt/event/KeyAdapter.js,bin/java/awt/event/KeyEvent.js,bin/java/awt/event/KeyListener.js,bin/java/awt/event/MouseAdapter.js,bin/java/awt/event/MouseEvent.js,bin/java/awt/event/MouseListener.js,bin/java/awt/event/MouseMotionAdapter.js,bin/java/awt/event/MouseMotionListener.js,bin/java/awt/event/MouseWheelEvent.js,bin/java/awt/event/MouseWheelListener.js,bin/java/awt/event/NativeLibLoader.js,bin/java/awt/event/PaintEvent.js,bin/java/awt/event/TextEvent.js,bin/java/awt/event/TextListener.js,bin/java/awt/event/WindowAdapter.js,bin/java/awt/event/WindowEvent.js,bin/java/awt/event/WindowFocusListener.js,bin/java/awt/event/WindowListener.js,bin/java/awt/event/WindowStateListener.js,bin/java/awt/font/CharArrayIterator.js,bin/java/awt/font/FontRenderContext.js,bin/java/awt/font/GlyphJustificationInfo.js,bin/java/awt/font/GlyphMetrics.js,bin/java/awt/font/GlyphVector.js,bin/java/awt/font/GraphicAttribute.js,bin/java/awt/font/ImageGraphicAttribute.js,bin/java/awt/font/LayoutPath.js,bin/java/awt/font/LineBreakMeasurer.js,bin/java/awt/font/LineMetrics.js,bin/java/awt/font/MultipleMaster.js,bin/java/awt/font/NumericShaper.js,bin/java/awt/font/OpenType.js,bin/java/awt/font/ShapeGraphicAttribute.js,bin/java/awt/font/StyledParagraph.js,bin/java/awt/font/TextAttribute.js,bin/java/awt/font/TextHitInfo.js,bin/java/awt/font/TextJustifier.js,bin/java/awt/font/TextLayout.js,bin/java/awt/font/TextLine.js,bin/java/awt/font/TextMeasurer.js,bin/java/awt/font/TransformAttribute.js,bin/java/awt/geom/AffineTransform.js,bin/java/awt/geom/Arc2D.js,bin/java/awt/geom/ArcIterator.js,bin/java/awt/geom/Area.js,bin/java/awt/geom/CubicCurve2D.js,bin/java/awt/geom/CubicIterator.js,bin/java/awt/geom/Dimension2D.js,bin/java/awt/geom/Ellipse2D.js,bin/java/awt/geom/EllipseIterator.js,bin/java/awt/geom/FlatteningPathIterator.js,bin/java/awt/geom/GeneralPath.js,bin/java/awt/geom/IllegalPathStateException.js,bin/java/awt/geom/Line2D.js,bin/java/awt/geom/LineIterator.js,bin/java/awt/geom/NoninvertibleTransformException.js,bin/java/awt/geom/Path2D.js,bin/java/awt/geom/PathIterator.js,bin/java/awt/geom/Point2D.js,bin/java/awt/geom/QuadCurve2D.js,bin/java/awt/geom/QuadIterator.js,bin/java/awt/geom/RectIterator.js,bin/java/awt/geom/Rectangle2D.js,bin/java/awt/geom/RectangularShape.js,bin/java/awt/geom/RoundRectIterator.js,bin/java/awt/geom/RoundRectangle2D.js,bin/java/awt/im/InputContext.js,bin/java/awt/im/InputMethodHighlight.js,bin/java/awt/im/InputMethodRequests.js,bin/java/awt/im/InputSubset.js,bin/java/awt/im/spi/InputMethod.js,bin/java/awt/im/spi/InputMethodContext.js,bin/java/awt/im/spi/InputMethodDescriptor.js,bin/java/awt/image/AffineTransformOp.js,bin/java/awt/image/AreaAveragingScaleFilter.js,bin/java/awt/image/BandCombineOp.js,bin/java/awt/image/BandedSampleModel.js,bin/java/awt/image/BufferStrategy.js,bin/java/awt/image/BufferedImage.js,bin/java/awt/image/BufferedImageFilter.js,bin/java/awt/image/BufferedImageOp.js,bin/java/awt/image/ByteLookupTable.js,bin/java/awt/image/ColorConvertOp.js,bin/java/awt/image/ColorModel.js,bin/java/awt/image/ComponentColorModel.js,bin/java/awt/image/ComponentSampleModel.js,bin/java/awt/image/ConvolveOp.js,bin/java/awt/image/CropImageFilter.js,bin/java/awt/image/DataBuffer.js,bin/java/awt/image/DataBufferByte.js,bin/java/awt/image/DataBufferDouble.js,bin/java/awt/image/DataBufferFloat.js,bin/java/awt/image/DataBufferInt.js,bin/java/awt/image/DataBufferShort.js,bin/java/awt/image/DataBufferUShort.js,bin/java/awt/image/DirectColorModel.js,bin/java/awt/image/FilteredImageSource.js,bin/java/awt/image/ImageConsumer.js,bin/java/awt/image/ImageFilter.js,bin/java/awt/image/ImageObserver.js,bin/java/awt/image/ImageProducer.js,bin/java/awt/image/ImagingOpException.js,bin/java/awt/image/IndexColorModel.js,bin/java/awt/image/Kernel.js,bin/java/awt/image/LookupOp.js,bin/java/awt/image/LookupTable.js,bin/java/awt/image/MemoryImageSource.js,bin/java/awt/image/MultiPixelPackedSampleModel.js,bin/java/awt/image/PackedColorModel.js,bin/java/awt/image/PixelGrabber.js,bin/java/awt/image/PixelInterleavedSampleModel.js,bin/java/awt/image/RGBImageFilter.js,bin/java/awt/image/Raster.js,bin/java/awt/image/RasterFormatException.js,bin/java/awt/image/RasterOp.js,bin/java/awt/image/RenderedImage.js,bin/java/awt/image/ReplicateScaleFilter.js,bin/java/awt/image/RescaleOp.js,bin/java/awt/image/SampleModel.js,bin/java/awt/image/ShortLookupTable.js,bin/java/awt/image/SinglePixelPackedSampleModel.js,bin/java/awt/image/TileObserver.js,bin/java/awt/image/VolatileImage.js,bin/java/awt/image/WritableRaster.js,bin/java/awt/image/WritableRenderedImage.js,bin/java/awt/image/renderable/ContextualRenderedImageFactory.js,bin/java/awt/image/renderable/ParameterBlock.js,bin/java/awt/image/renderable/RenderContext.js,bin/java/awt/image/renderable/RenderableImage.js,bin/java/awt/image/renderable/RenderableImageOp.js,bin/java/awt/image/renderable/RenderableImageProducer.js,bin/java/awt/image/renderable/RenderedImageFactory.js,bin/java/awt/peer/ButtonPeer.js,bin/java/awt/peer/CanvasPeer.js,bin/java/awt/peer/CheckboxMenuItemPeer.js,bin/java/awt/peer/CheckboxPeer.js,bin/java/awt/peer/ChoicePeer.js,bin/java/awt/peer/ComponentPeer.js,bin/java/awt/peer/ContainerPeer.js,bin/java/awt/peer/DesktopPeer.js,bin/java/awt/peer/DialogPeer.js,bin/java/awt/peer/FileDialogPeer.js,bin/java/awt/peer/FontPeer.js,bin/java/awt/peer/FramePeer.js,bin/java/awt/peer/KeyboardFocusManagerPeer.js,bin/java/awt/peer/LabelPeer.js,bin/java/awt/peer/LightweightPeer.js,bin/java/awt/peer/ListPeer.js,bin/java/awt/peer/MenuBarPeer.js,bin/java/awt/peer/MenuComponentPeer.js,bin/java/awt/peer/MenuItemPeer.js,bin/java/awt/peer/MenuPeer.js,bin/java/awt/peer/MouseInfoPeer.js,bin/java/awt/peer/PanelPeer.js,bin/java/awt/peer/PopupMenuPeer.js,bin/java/awt/peer/RobotPeer.js,bin/java/awt/peer/ScrollPanePeer.js,bin/java/awt/peer/ScrollbarPeer.js,bin/java/awt/peer/SystemTrayPeer.js,bin/java/awt/peer/TextAreaPeer.js,bin/java/awt/peer/TextComponentPeer.js,bin/java/awt/peer/TextFieldPeer.js,bin/java/awt/peer/TrayIconPeer.js,bin/java/awt/peer/WindowPeer.js,bin/java/awt/print/Book.js,bin/java/awt/print/PageFormat.js,bin/java/awt/print/Pageable.js,bin/java/awt/print/Paper.js,bin/java/awt/print/Printable.js,bin/java/awt/print/PrinterAbortException.js,bin/java/awt/print/PrinterException.js,bin/java/awt/print/PrinterGraphics.js,bin/java/awt/print/PrinterIOException.js,bin/java/awt/print/PrinterJob.js,bin/java/beans/AppletInitializer.js,bin/java/beans/BeanDescriptor.js,bin/java/beans/BeanInfo.js,bin/java/beans/Beans.js,bin/java/beans/ChangeListenerMap.js,bin/java/beans/ConstructorProperties.js,bin/java/beans/Customizer.js,bin/java/beans/DefaultPersistenceDelegate.js,bin/java/beans/DesignMode.js,bin/java/beans/Encoder.js,bin/java/beans/EventHandler.js,bin/java/beans/EventSetDescriptor.js,bin/java/beans/ExceptionListener.js,bin/java/beans/Expression.js,bin/java/beans/FeatureDescriptor.js,bin/java/beans/IndexedPropertyChangeEvent.js,bin/java/beans/IndexedPropertyDescriptor.js,bin/java/beans/IntrospectionException.js,bin/java/beans/Introspector.js,bin/java/beans/MetaData.js,bin/java/beans/MethodDescriptor.js,bin/java/beans/NameGenerator.js,bin/java/beans/ParameterDescriptor.js,bin/java/beans/PersistenceDelegate.js,bin/java/beans/PropertyChangeEvent.js,bin/java/beans/PropertyChangeListener.js,bin/java/beans/PropertyChangeListenerProxy.js,bin/java/beans/PropertyChangeSupport.js,bin/java/beans/PropertyDescriptor.js,bin/java/beans/PropertyEditor.js,bin/java/beans/PropertyEditorManager.js,bin/java/beans/PropertyEditorSupport.js,bin/java/beans/PropertyVetoException.js,bin/java/beans/ReflectionUtils.js,bin/java/beans/SimpleBeanInfo.js,bin/java/beans/Statement.js,bin/java/beans/ThreadGroupContext.js,bin/java/beans/VetoableChangeListener.js,bin/java/beans/VetoableChangeListenerProxy.js,bin/java/beans/VetoableChangeSupport.js,bin/java/beans/Visibility.js,bin/java/beans/WeakIdentityMap.js,bin/java/beans/XMLDecoder.js,bin/java/beans/XMLEncoder.js,bin/java/beans/beancontext/BeanContext.js,bin/java/beans/beancontext/BeanContextChild.js,bin/java/beans/beancontext/BeanContextChildComponentProxy.js,bin/java/beans/beancontext/BeanContextChildSupport.js,bin/java/beans/beancontext/BeanContextContainerProxy.js,bin/java/beans/beancontext/BeanContextEvent.js,bin/java/beans/beancontext/BeanContextMembershipEvent.js,bin/java/beans/beancontext/BeanContextMembershipListener.js,bin/java/beans/beancontext/BeanContextProxy.js,bin/java/beans/beancontext/BeanContextServiceAvailableEvent.js,bin/java/beans/beancontext/BeanContextServiceProvider.js,bin/java/beans/beancontext/BeanContextServiceProviderBeanInfo.js,bin/java/beans/beancontext/BeanContextServiceRevokedEvent.js,bin/java/beans/beancontext/BeanContextServiceRevokedListener.js,bin/java/beans/beancontext/BeanContextServices.js,bin/java/beans/beancontext/BeanContextServicesListener.js,bin/java/beans/beancontext/BeanContextServicesSupport.js,bin/java/beans/beancontext/BeanContextSupport.js,bin/java/io/Bits.js,bin/java/io/BufferedInputStream.js,bin/java/io/BufferedOutputStream.js,bin/java/io/BufferedReader.js,bin/java/io/BufferedWriter.js,bin/java/io/ByteArrayInputStream.js,bin/java/io/ByteArrayOutputStream.js,bin/java/io/CharArrayReader.js,bin/java/io/CharArrayWriter.js,bin/java/io/CharConversionException.js,bin/javax/swing/plaf/synth/SynthConstants.js,bin/javax/management/openmbean/SimpleType.js,bin/sun/security/util/SecurityConstants.js,bin/sun/java2d/pipe/hw/ExtendedBufferCapabilities.js,bin/sun/font/EAttribute.js,bin/sun/java2d/StateTrackable.js,bin/java/lang/annotation/ElementType.js,bin/java/lang/annotation/RetentionPolicy.js,bin/java/lang/Object.js,bin/java/lang/Enum.js,bin/java/lang/Comparable.js,bin/java/lang/package-info.js,bin/java/io/Serializable.js,bin/java/lang/reflect/WildcardType.js,bin/java/lang/reflect/Type.js,bin/java/lang/reflect/package-info.js,bin/javax/accessibility/Accessible.js,bin/javax/crypto/CipherSpi.js,bin/javax/crypto/KeyGeneratorSpi.js,bin/java/security/AlgorithmParametersSpi.js,bin/javax/crypto/SecretKey.js,bin/java/security/Key.js,bin/javax/crypto/SecretKeyFactorySpi.js,bin/javax/crypto/KeyAgreementSpi.js,bin/java/security/KeyFactorySpi.js,bin/java/security/KeyPairGeneratorSpi.js,bin/java/security/AlgorithmParameterGeneratorSpi.js,bin/java/security/PrivateKey.js,bin/javax/crypto/interfaces/DHPrivateKey.js,bin/javax/crypto/interfaces/DHKey.js,bin/java/security/PublicKey.js,bin/javax/crypto/interfaces/DHPublicKey.js,bin/java/lang/Cloneable.js,bin/javax/crypto/MacSpi.js,bin/java/security/KeyStoreSpi.js,bin/java/security/KeyStore.js,bin/javax/crypto/Cipher.js,bin/javax/crypto/SealedObject.js,bin/javax/crypto/interfaces/PBEKey.js,bin/java/security/Provider.js,bin/java/util/Properties.js,bin/java/util/Hashtable.js,bin/java/util/Dictionary.js,bin/java/util/Map.js,bin/sun/security/internal/interfaces/TlsMasterSecret.js,bin/java/lang/Deprecated.js,bin/javax/imageio/ImageReader.js,bin/javax/imageio/event/IIOReadProgressListener.js,bin/java/util/EventListener.js,bin/javax/imageio/spi/ImageReaderSpi.js,bin/javax/imageio/spi/ImageReaderWriterSpi.js,bin/javax/imageio/spi/IIOServiceProvider.js,bin/javax/imageio/spi/RegisterableService.js,bin/javax/imageio/ImageWriter.js,bin/javax/imageio/ImageTranscoder.js,bin/javax/imageio/event/IIOWriteProgressListener.js,bin/javax/imageio/spi/ImageWriterSpi.js,bin/javax/imageio/metadata/IIOMetadata.js,bin/javax/imageio/metadata/IIOMetadataFormatImpl.js,bin/javax/imageio/metadata/IIOMetadataFormat.js,bin/java/util/ListResourceBundle.js,bin/java/util/ResourceBundle.js,bin/java/io/InputStream.js,bin/java/io/Closeable.js,bin/javax/imageio/stream/ImageInputStreamImpl.js,bin/javax/imageio/stream/ImageInputStream.js,bin/java/io/DataInput.js,bin/javax/imageio/ImageWriteParam.js,bin/javax/imageio/IIOParam.js,bin/java/lang/Exception.js,bin/java/lang/Throwable.js,bin/sun/java2d/DisposerRecord.js,bin/java/util/Enumeration.js,bin/javax/imageio/stream/ImageOutputStreamImpl.js,bin/javax/imageio/stream/ImageOutputStream.js,bin/java/io/DataOutput.js,bin/javax/imageio/spi/ImageInputStreamSpi.js,bin/javax/imageio/spi/ImageOutputStreamSpi.js,bin/java/text/AttributedCharacterIterator.js,bin/java/text/CharacterIterator.js,bin/javax/swing/colorchooser/AbstractColorChooserPanel.js,bin/javax/swing/JPanel.js,bin/javax/swing/JComponent.js,bin/javax/swing/ClientPropertyKey.js,bin/javax/swing/TransferHandler.js,bin/javax/swing/event/ChangeListener.js,bin/javax/swing/AbstractAction.js,bin/javax/swing/Action.js,bin/javax/swing/JLabel.js,bin/javax/swing/SwingConstants.js,bin/javax/swing/plaf/synth/ColorType.js,bin/javax/swing/plaf/synth/Region.js,bin/sun/swing/plaf/synth/SynthFileChooserUI.js,bin/javax/swing/plaf/basic/BasicFileChooserUI.js,bin/javax/swing/plaf/FileChooserUI.js,bin/javax/swing/plaf/ComponentUI.js,bin/sun/swing/plaf/synth/SynthUI.js,bin/javax/swing/filechooser/FileView.js,bin/javax/swing/event/ListSelectionListener.js,bin/javax/swing/plaf/basic/BasicDirectoryModel.js,bin/javax/swing/AbstractListModel.js,bin/javax/swing/ListModel.js,bin/javax/swing/event/ListDataListener.js,bin/javax/swing/DefaultListCellRenderer.js,bin/javax/swing/ListCellRenderer.js,bin/javax/swing/ComboBoxModel.js,bin/javax/swing/plaf/UIResource.js,bin/javax/swing/plaf/synth/SynthGraphicsUtils.js,bin/sun/swing/plaf/synth/SynthIcon.js,bin/javax/swing/Icon.js,bin/javax/swing/plaf/synth/SynthLookAndFeel.js,bin/javax/swing/plaf/basic/BasicLookAndFeel.js,bin/javax/swing/LookAndFeel.js,bin/java/lang/ref/WeakReference.js,bin/java/lang/ref/Reference.js,bin/sun/swing/DefaultLayoutStyle.js,bin/javax/swing/LayoutStyle.js,bin/javax/swing/plaf/synth/SynthPainter.js,bin/javax/swing/border/AbstractBorder.js,bin/javax/swing/border/Border.js,bin/javax/swing/plaf/synth/SynthStyle.js,bin/javax/swing/UIDefaults.js,bin/javax/swing/plaf/synth/SynthStyleFactory.js,bin/java/security/PrivilegedAction.js,bin/java/util/StringTokenizer.js,bin/javax/swing/plaf/basic/BasicButtonListener.js,bin/javax/swing/plaf/basic/BasicButtonUI.js,bin/javax/swing/plaf/ButtonUI.js,bin/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.js,bin/javax/swing/plaf/basic/BasicMenuItemUI.js,bin/javax/swing/plaf/MenuItemUI.js,bin/javax/swing/event/MouseInputListener.js,bin/javax/swing/plaf/basic/BasicRadioButtonUI.js,bin/javax/swing/plaf/basic/BasicToggleButtonUI.js,bin/javax/swing/plaf/basic/BasicComboBoxUI.js,bin/javax/swing/plaf/ComboBoxUI.js,bin/javax/swing/plaf/basic/BasicComboPopup.js,bin/javax/swing/JPopupMenu.js,bin/javax/swing/MenuElement.js,bin/javax/swing/plaf/basic/ComboPopup.js,bin/javax/swing/plaf/basic/BasicDesktopIconUI.js,bin/javax/swing/plaf/DesktopIconUI.js,bin/javax/swing/JButton.js,bin/javax/swing/AbstractButton.js,bin/javax/swing/plaf/basic/BasicDesktopPaneUI.js,bin/javax/swing/plaf/DesktopPaneUI.js,bin/javax/swing/DefaultDesktopManager.js,bin/javax/swing/DesktopManager.js,bin/javax/swing/plaf/basic/BasicEditorPaneUI.js,bin/javax/swing/plaf/basic/BasicTextUI.js,bin/javax/swing/plaf/TextUI.js,bin/javax/swing/text/ViewFactory.js,bin/javax/swing/plaf/basic/BasicInternalFrameTitlePane.js,bin/javax/swing/plaf/basic/BasicInternalFrameUI.js,bin/javax/swing/plaf/InternalFrameUI.js,bin/javax/swing/plaf/basic/BasicLabelUI.js,bin/javax/swing/plaf/LabelUI.js,bin/javax/swing/plaf/basic/BasicMenuBarUI.js,bin/javax/swing/plaf/MenuBarUI.js,bin/javax/swing/plaf/basic/BasicMenuUI.js,bin/javax/swing/plaf/basic/BasicOptionPaneUI.js,bin/javax/swing/plaf/OptionPaneUI.js,bin/javax/swing/plaf/basic/BasicPasswordFieldUI.js,bin/javax/swing/plaf/basic/BasicTextFieldUI.js,bin/javax/swing/plaf/basic/BasicSeparatorUI.js,bin/javax/swing/plaf/SeparatorUI.js,bin/javax/swing/plaf/basic/BasicPopupMenuUI.js,bin/javax/swing/plaf/PopupMenuUI.js,bin/javax/swing/plaf/basic/BasicProgressBarUI.js,bin/javax/swing/plaf/ProgressBarUI.js,bin/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.js,bin/javax/swing/plaf/basic/BasicArrowButton.js,bin/javax/swing/plaf/basic/BasicScrollBarUI.js,bin/javax/swing/plaf/ScrollBarUI.js,bin/javax/swing/plaf/basic/BasicScrollPaneUI.js,bin/javax/swing/plaf/ScrollPaneUI.js,bin/javax/swing/ScrollPaneConstants.js,bin/javax/swing/plaf/basic/BasicSliderUI.js,bin/javax/swing/plaf/SliderUI.js,bin/javax/swing/plaf/basic/BasicSplitPaneDivider.js,bin/javax/swing/plaf/basic/BasicSplitPaneUI.js,bin/javax/swing/plaf/SplitPaneUI.js,bin/javax/swing/plaf/basic/BasicTabbedPaneUI.js,bin/javax/swing/plaf/TabbedPaneUI.js,bin/javax/swing/plaf/basic/BasicTextAreaUI.js,bin/javax/swing/plaf/basic/BasicTextPaneUI.js,bin/javax/swing/text/DefaultCaret.js,bin/javax/swing/text/Caret.js,bin/javax/swing/tree/DefaultTreeCellRenderer.js,bin/javax/swing/tree/TreeCellRenderer.js,bin/javax/swing/plaf/basic/BasicTreeUI.js,bin/javax/swing/plaf/TreeUI.js,bin/java/lang/ref/SoftReference.js,bin/sun/swing/UIClientPropertyKey.js,bin/javax/swing/border/LineBorder.js,bin/javax/swing/plaf/basic/BasicComboBoxEditor.js,bin/javax/swing/ComboBoxEditor.js,bin/javax/swing/plaf/basic/BasicComboBoxRenderer.js,bin/sun/swing/FilePane.js,bin/sun/swing/MenuItemCheckIconFactory.js,bin/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.js,bin/javax/swing/JWindow.js,bin/javax/swing/RootPaneContainer.js,bin/javax/swing/plaf/basic/BasicRootPaneUI.js,bin/javax/swing/plaf/RootPaneUI.js,bin/javax/swing/event/MouseInputAdapter.js,bin/javax/swing/plaf/basic/BasicSpinnerUI.js,bin/javax/swing/plaf/SpinnerUI.js,bin/javax/swing/plaf/basic/BasicTableHeaderUI.js,bin/javax/swing/plaf/TableHeaderUI.js,bin/sun/swing/table/DefaultTableCellHeaderRenderer.js,bin/javax/swing/table/DefaultTableCellRenderer.js,bin/javax/swing/table/TableCellRenderer.js,bin/java/lang/Runnable.js,bin/javax/swing/text/DefaultHighlighter.js,bin/javax/swing/text/LayeredHighlighter.js,bin/javax/swing/text/Highlighter.js,bin/javax/swing/plaf/basic/BasicToolBarSeparatorUI.js,bin/javax/swing/plaf/basic/BasicToolBarUI.js,bin/javax/swing/plaf/ToolBarUI.js,bin/javax/swing/border/EmptyBorder.js,bin/sun/swing/CachedPainter.js,bin/java/io/IOException.js,bin/java/io/FilterOutputStream.js,bin/java/io/OutputStream.js,bin/java/io/Flushable.js,bin/java/util/AbstractList.js,bin/java/util/AbstractCollection.js,bin/java/util/Collection.js,bin/java/lang/Iterable.js,bin/java/util/List.js,bin/java/util/Iterator.js,bin/java/io/FilterInputStream.js,bin/java/util/jar/Pack200.js,bin/java/util/TreeMap.js,bin/java/util/AbstractMap.js,bin/java/util/NavigableMap.js,bin/java/util/SortedMap.js,bin/java/lang/RuntimeException.js,bin/java/security/BasicPermission.js,bin/java/security/Permission.js,bin/java/security/Guard.js,bin/java/lang/UnsupportedOperationException.js,bin/java/util/Set.js,bin/javax/management/MBeanServerConnection.js,bin/javax/management/NotificationListener.js,bin/javax/management/loading/ClassLoaderRepository.js,bin/javax/management/DynamicMBean.js,bin/java/lang/String.js,bin/java/lang/CharSequence.js,bin/javax/management/MBeanServer.js,bin/javax/management/MBeanServerBuilder.js,bin/java/util/Comparator.js,bin/java/lang/reflect/Method.js,bin/java/lang/reflect/AccessibleObject.js,bin/java/lang/reflect/AnnotatedElement.js,bin/java/lang/reflect/GenericDeclaration.js,bin/java/lang/reflect/Member.js,bin/java/util/WeakHashMap.js,bin/java/lang/Class.js,bin/javax/management/MBeanInfo.js,bin/javax/management/DescriptorRead.js,bin/javax/management/MBeanServerDelegate.js,bin/javax/management/MBeanServerDelegateMBean.js,bin/javax/management/NotificationEmitter.js,bin/javax/management/NotificationBroadcaster.js,bin/javax/management/MBeanRegistration.js,bin/java/io/ObjectInputStream.js,bin/java/io/ObjectInput.js,bin/java/io/ObjectStreamConstants.js,bin/javax/management/openmbean/OpenType.js,bin/javax/management/QueryEval.js,bin/javax/management/QueryExp.js,bin/java/util/concurrent/Executor.js,bin/java/util/concurrent/package-info.js,bin/java/rmi/server/RemoteRef.js,bin/java/io/Externalizable.js,bin/javax/management/remote/JMXConnectorProvider.js,bin/javax/management/remote/JMXConnectorServerProvider.js,bin/javax/security/auth/spi/LoginModule.js,bin/javax/management/remote/JMXAuthenticator.js,bin/javax/security/auth/callback/CallbackHandler.js,bin/javax/security/auth/login/Configuration.js,bin/javax/security/auth/SubjectDomainCombiner.js,bin/java/security/DomainCombiner.js,bin/javax/management/remote/MBeanServerForwarder.js,bin/java/lang/ClassLoader.js,bin/java/security/acl/AclEntry.js,bin/java/security/acl/Owner.js,bin/java/security/acl/Acl.js,bin/java/security/Principal.js,bin/java/security/acl/Group.js,bin/java/security/acl/Permission.js,bin/java/lang/Error.js,bin/java/util/Vector.js,bin/java/util/RandomAccess.js,bin/javax/management/Notification.js,bin/java/util/EventObject.js,bin/javax/management/JMRuntimeException.js,bin/java/lang/Thread.js,bin/javax/naming/NamingEnumeration.js,bin/javax/naming/Context.js,bin/javax/naming/spi/InitialContextFactory.js,bin/javax/naming/NameParser.js,bin/javax/naming/CompoundName.js,bin/javax/naming/Name.js,bin/javax/naming/spi/StateFactory.js,bin/javax/naming/spi/Resolver.js,bin/javax/naming/directory/DirContext.js,bin/javax/naming/ldap/Control.js,bin/javax/naming/Binding.js,bin/javax/naming/NameClassPair.js,bin/javax/naming/ldap/HasControls.js,bin/javax/naming/ldap/ControlFactory.js,bin/javax/naming/directory/BasicAttribute.js,bin/javax/naming/directory/Attribute.js,bin/javax/naming/event/EventDirContext.js,bin/javax/naming/event/EventContext.js,bin/javax/naming/ldap/LdapContext.js,bin/javax/naming/spi/ObjectFactory.js,bin/javax/naming/ldap/LdapReferralException.js,bin/javax/naming/ReferralException.js,bin/javax/naming/NamingException.js,bin/javax/naming/directory/SearchResult.js,bin/javax/naming/ldap/UnsolicitedNotification.js,bin/javax/naming/ldap/ExtendedResponse.js,bin/javax/naming/ldap/StartTlsResponse.js,bin/java/rmi/server/UnicastRemoteObject.js,bin/java/rmi/server/RemoteServer.js,bin/java/rmi/server/RemoteObject.js,bin/java/rmi/Remote.js,bin/javax/naming/Referenceable.js,bin/javax/naming/spi/ResolveResult.js,bin/java/lang/management/GarbageCollectorMXBean.js,bin/java/lang/management/MemoryManagerMXBean.js,bin/javax/management/openmbean/CompositeData.js,bin/javax/management/openmbean/CompositeDataView.js,bin/java/lang/management/OperatingSystemMXBean.js,bin/javax/sound/sampled/Line.js,bin/javax/sound/sampled/DataLine.js,bin/javax/sound/midi/MidiDevice.js,bin/javax/sound/midi/Receiver.js,bin/javax/sound/midi/Transmitter.js,bin/javax/sound/midi/spi/MidiDeviceProvider.js,bin/javax/sound/sampled/Mixer.js,bin/javax/sound/sampled/AudioFileFormat.js,bin/javax/sound/sampled/spi/AudioFileReader.js,bin/javax/sound/sampled/spi/AudioFileWriter.js,bin/javax/sound/sampled/spi/FormatConversionProvider.js,bin/javax/sound/sampled/AudioInputStream.js,bin/javax/sound/midi/spi/SoundbankReader.js,bin/javax/sound/midi/Synthesizer.js,bin/javax/sound/sampled/Clip.js,bin/javax/sound/midi/Instrument.js,bin/javax/sound/midi/SoundbankResource.js,bin/javax/sound/midi/Soundbank.js,bin/javax/sound/sampled/FloatControl.js,bin/javax/sound/sampled/Control.js,bin/javax/sound/sampled/BooleanControl.js,bin/javax/sound/sampled/SourceDataLine.js,bin/javax/sound/sampled/TargetDataLine.js,bin/javax/sound/sampled/spi/MixerProvider.js,bin/javax/sound/midi/ShortMessage.js,bin/javax/sound/midi/MidiMessage.js,bin/javax/sound/midi/SysexMessage.js,bin/javax/sound/midi/MetaEventListener.js,bin/javax/sound/sampled/LineListener.js,bin/javax/sound/midi/MidiChannel.js,bin/javax/sound/midi/Patch.js,bin/javax/sound/sampled/Port.js,bin/javax/sound/sampled/CompoundControl.js,bin/javax/sound/midi/Sequencer.js,bin/javax/sound/midi/VoiceStatus.js,bin/javax/sound/midi/spi/MidiFileReader.js,bin/javax/sound/midi/spi/MidiFileWriter.js,bin/java/net/HttpURLConnection.js,bin/java/net/URLConnection.js,bin/javax/net/ssl/X509KeyManager.js,bin/javax/net/ssl/KeyManager.js,bin/javax/net/ssl/X509TrustManager.js,bin/javax/net/ssl/TrustManager.js,bin/sun/security/ssl/SunJSSE.js,bin/sun/net/www/protocol/https/AbstractDelegateHttpsURLConnection.js,bin/sun/net/www/protocol/http/HttpURLConnection.js,bin/javax/net/ssl/HostnameVerifier.js,bin/sun/net/www/protocol/https/Handler.js,bin/sun/net/www/protocol/http/Handler.js,bin/java/net/URLStreamHandler.js,bin/java/security/PermissionCollection.js,bin/javax/sql/rowset/BaseRowSet.js,bin/javax/sql/RowSet.js,bin/java/sql/ResultSet.js,bin/java/sql/Wrapper.js,bin/javax/sql/RowSetInternal.js,bin/javax/sql/rowset/CachedRowSet.js,bin/javax/sql/rowset/Joinable.js,bin/javax/sql/rowset/WebRowSet.js,bin/javax/sql/rowset/FilteredRowSet.js,bin/javax/sql/rowset/JdbcRowSet.js,bin/javax/sql/rowset/JoinRowSet.js,bin/javax/sql/RowSetReader.js,bin/javax/sql/rowset/spi/TransactionalWriter.js,bin/javax/sql/RowSetWriter.js,bin/javax/sql/rowset/spi/SyncResolver.js,bin/javax/sql/rowset/spi/XmlReader.js,bin/javax/sql/rowset/spi/XmlWriter.js,bin/javax/sql/rowset/spi/SyncProvider.js,bin/javax/script/CompiledScript.js,bin/javax/script/AbstractScriptEngine.js,bin/javax/script/ScriptEngine.js,bin/javax/script/Invocable.js,bin/javax/script/Compilable.js,bin/javax/script/ScriptEngineFactory.js,bin/javax/script/Bindings.js,bin/java/util/AbstractSet.js,bin/java/lang/reflect/InvocationHandler.js,bin/javax/security/auth/Policy.js,bin/java/security/GeneralSecurityException.js,bin/java/security/CodeSource.js,bin/javax/security/cert/X509Certificate.js,bin/javax/security/cert/Certificate.js,bin/javax/security/sasl/SaslClientFactory.js,bin/javax/security/sasl/SaslClient.js,bin/javax/security/sasl/SaslServer.js,bin/javax/security/sasl/SaslServerFactory.js,bin/java/lang/IndexOutOfBoundsException.js,bin/javax/swing/tree/DefaultMutableTreeNode.js,bin/javax/swing/tree/MutableTreeNode.js,bin/javax/swing/tree/TreeNode.js,bin/javax/swing/filechooser/FileFilter.js,bin/javax/swing/JMenuBar.js,bin/javax/swing/JToolBar.js,bin/java/io/PrintWriter.js,bin/java/io/Writer.js,bin/java/lang/Appendable.js,bin/javax/swing/tree/DefaultTreeSelectionModel.js,bin/javax/swing/tree/TreeSelectionModel.js,bin/java/io/FilenameFilter.js,bin/java/io/DataInputStream.js,bin/java/util/ArrayList.js,bin/javax/accessibility/AccessibleContext.js,bin/javax/accessibility/AccessibleComponent.js,bin/javax/accessibility/AccessibleAction.js,bin/javax/accessibility/AccessibleValue.js,bin/javax/accessibility/AccessibleSelection.js,bin/sun/awt/SubRegionShowable.js,bin/sun/awt/RequestFocusController.js,bin/sun/awt/SunGraphicsCallback.js,bin/java/lang/IllegalStateException.js,bin/javax/accessibility/AccessibleText.js,bin/sun/awt/datatransfer/DataTransferer.js,bin/java/util/EventListenerProxy.js,bin/java/lang/Character.js,bin/java/lang/annotation/Annotation.js,bin/java/io/Reader.js,bin/java/lang/Readable.js,bin/javax/security/auth/Destroyable.js,bin/javax/accessibility/AccessibleExtendedComponent.js,bin/java/io/ObjectInputValidation.js,bin/sun/swing/UIAction.js,bin/javax/accessibility/AccessibleKeyBinding.js,bin/javax/swing/plaf/basic/BasicTransferable.js,bin/javax/swing/event/MenuDragMouseListener.js,bin/javax/swing/JComboBox.js,bin/javax/swing/JSeparator.js,bin/javax/swing/ActionPropertyChangeListener.js,bin/javax/swing/text/html/StyleSheet.js,bin/javax/swing/text/StyleContext.js,bin/javax/swing/text/AbstractDocument.js,bin/javax/swing/text/Document.js,bin/javax/swing/text/View.js,bin/javax/swing/event/DocumentListener.js,bin/javax/swing/text/TextAction.js,bin/javax/swing/plaf/basic/DragRecognitionSupport.js,bin/javax/swing/event/InternalFrameListener.js,bin/javax/swing/event/MenuKeyListener.js,bin/javax/swing/JTextField.js,bin/javax/swing/text/JTextComponent.js,bin/javax/swing/Scrollable.js,bin/javax/swing/text/ParagraphView.js,bin/javax/swing/text/FlowView.js,bin/javax/swing/text/BoxView.js,bin/javax/swing/text/CompositeView.js,bin/javax/swing/text/TabExpander.js,bin/javax/swing/event/PopupMenuListener.js,bin/javax/swing/JViewport.js,bin/javax/swing/text/NavigationFilter.js,bin/javax/swing/event/TreeExpansionListener.js,bin/javax/swing/event/TreeModelListener.js,bin/javax/swing/event/TreeSelectionListener.js,bin/javax/swing/event/CellEditorListener.js,bin/javax/swing/tree/AbstractLayoutCache.js,bin/javax/swing/tree/RowMapper.js,bin/javax/swing/event/TableModelListener.js,bin/javax/swing/event/RowSorterListener.js,bin/javax/swing/table/AbstractTableModel.js,bin/javax/swing/table/TableModel.js,bin/javax/swing/table/TableRowSorter.js,bin/javax/swing/DefaultRowSorter.js,bin/java/lang/Integer.js,bin/java/lang/Number.js,bin/javax/swing/RowSorter.js,bin/java/io/File.js,bin/javax/swing/DefaultCellEditor.js,bin/javax/swing/AbstractCellEditor.js,bin/javax/swing/CellEditor.js,bin/javax/swing/table/TableCellEditor.js,bin/javax/swing/tree/TreeCellEditor.js,bin/javax/swing/plaf/ComponentInputMapUIResource.js,bin/javax/swing/ComponentInputMap.js,bin/javax/swing/InputMap.js,bin/java/util/ListIterator.js,bin/java/util/NavigableSet.js,bin/java/util/SortedSet.js,bin/java/lang/Boolean.js,bin/java/security/PrivilegedExceptionAction.js,bin/java/net/ContentHandler.js,bin/javax/swing/text/SimpleAttributeSet.js,bin/javax/swing/text/MutableAttributeSet.js,bin/javax/swing/text/AttributeSet.js,bin/javax/swing/text/html/MuxingAttributeSet.js,bin/javax/swing/text/Style.js,bin/javax/swing/text/html/CSSParser.js,bin/javax/swing/text/Element.js,bin/javax/swing/undo/CompoundEdit.js,bin/javax/swing/undo/AbstractUndoableEdit.js,bin/javax/swing/undo/UndoableEdit.js,bin/javax/swing/event/DocumentEvent.js,bin/javax/swing/text/DocumentFilter.js,bin/javax/swing/event/CaretListener.js,bin/javax/accessibility/AccessibleEditableText.js,bin/javax/accessibility/AccessibleExtendedText.js,bin/javax/swing/text/Segment.js,bin/javax/swing/text/Keymap.js,bin/javax/swing/ActionMap.js,bin/javax/swing/event/CaretEvent.js,bin/javax/swing/RowFilter.js,bin/sun/awt/AWTAccessor.js,bin/sun/awt/SunToolkit.js,bin/sun/awt/WindowClosingSupport.js,bin/sun/awt/WindowClosingListener.js,bin/sun/awt/ComponentFactory.js,bin/sun/awt/InputMethodSupport.js,bin/sun/awt/ModalityListener.js,bin/java/lang/CloneNotSupportedException.js,bin/java/lang/InterruptedException.js,bin/java/lang/ClassNotFoundException.js,bin/java/io/ObjectStreamException.js,bin/java/lang/NullPointerException.js,bin/java/lang/IllegalArgumentException.js,bin/java/io/StringReader.js,bin/java/util/Locale.js,bin/sun/util/LocaleServiceProviderPool.js,bin/java/util/spi/LocaleNameProvider.js,bin/java/util/spi/LocaleServiceProvider.js,bin/java/lang/StringBuffer.js,bin/java/lang/AbstractStringBuilder.js,bin/java/lang/annotation/Documented.js,bin/java/lang/annotation/package-info.js,bin/java/lang/annotation/Retention.js,bin/java/lang/annotation/Target.js,bin/java/util/HashMap.js,bin/java/lang/Byte.js,bin/java/lang/Short.js,bin/java/lang/Long.js,bin/java/lang/Float.js,bin/java/lang/Double.js,bin/java/lang/Void.js,bin/java/lang/NumberFormatException.js,bin/java/lang/reflect/Array.js,bin/java/lang/NegativeArraySizeException.js,bin/java/lang/reflect/Field.js,bin/sun/reflect/misc/FieldUtil.js,bin/java/lang/NoSuchFieldException.js,bin/sun/reflect/CallerSensitive.js,bin/java/lang/IllegalAccessException.js,bin/java/lang/SuppressWarnings.js,bin/java/lang/reflect/GenericArrayType.js,bin/java/lang/reflect/ParameterizedType.js,bin/java/lang/reflect/TypeVariable.js,bin/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.js,bin/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.js,bin/java/lang/ref/ReferenceQueue.js,bin/java/util/Arrays.js,bin/java/lang/Override.js,bin/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.js,bin/sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator.js,bin/java/lang/StringBuilder.js,bin/sun/java2d/pipe/Region.js,bin/java/io/PrintStream.js,bin/java/io/ObjectOutputStream.js,bin/java/io/ObjectOutput.js,bin/java/security/AccessControlContext.js,bin/javax/accessibility/AccessibleStateSet.js,bin/sun/awt/CausedFocusEvent.js,bin/java/lang/System.js,bin/sun/reflect/misc/ReflectUtil.js,bin/java/security/ProtectionDomain.js,bin/sun/reflect/annotation/AnnotationType.js,bin/java/lang/reflect/Constructor.js,bin/sun/reflect/generics/repository/ClassRepository.js,bin/sun/reflect/generics/repository/GenericDeclRepository.js,bin/sun/reflect/generics/tree/ClassSignature.js,bin/sun/reflect/generics/tree/Signature.js,bin/sun/reflect/generics/tree/Tree.js,bin/sun/reflect/generics/repository/AbstractRepository.js,bin/sun/reflect/ReflectionFactory.js,bin/java/io/ObjectStreamField.js,bin/java/lang/SecurityException.js,bin/javax/crypto/BadPaddingException.js,bin/javax/crypto/IllegalBlockSizeException.js,bin/javax/crypto/ShortBufferException.js,bin/java/security/InvalidKeyException.js,bin/java/security/KeyException.js,bin/java/security/AlgorithmParameters.js,bin/java/security/SecureRandom.js,bin/java/util/Random.js,bin/java/security/InvalidAlgorithmParameterException.js,bin/java/security/spec/AlgorithmParameterSpec.js,bin/java/security/NoSuchAlgorithmException.js,bin/javax/crypto/NoSuchPaddingException.js,bin/java/security/InvalidParameterException.js,bin/javax/crypto/spec/SecretKeySpec.js,bin/java/security/spec/KeySpec.js,bin/java/security/spec/InvalidParameterSpecException.js,bin/javax/crypto/spec/IvParameterSpec.js,bin/sun/misc/HexDumpEncoder.js,bin/sun/misc/CharacterEncoder.js,bin/sun/security/util/DerInputStream.js,bin/sun/security/util/DerOutputStream.js,bin/sun/security/util/DerEncoder.js,bin/javax/crypto/spec/RC2ParameterSpec.js,bin/java/security/NoSuchProviderException.js,bin/java/security/KeyFactory.js,bin/java/security/spec/PKCS8EncodedKeySpec.js,bin/java/security/spec/EncodedKeySpec.js,bin/java/security/spec/X509EncodedKeySpec.js,bin/java/security/spec/InvalidKeySpecException.js,bin/java/security/KeyRep.js,bin/javax/crypto/spec/DESKeySpec.js,bin/javax/crypto/SecretKeyFactory.js,bin/javax/crypto/spec/DESedeKeySpec.js,bin/java/security/MessageDigest.js,bin/java/security/MessageDigestSpi.js,bin/java/security/DigestException.js,bin/java/math/BigInteger.js,bin/java/math/package-info.js,bin/sun/security/util/KeyUtil.js,bin/javax/crypto/spec/DHParameterSpec.js,bin/javax/crypto/spec/DHPublicKeySpec.js,bin/javax/crypto/spec/DHPrivateKeySpec.js,bin/javax/crypto/spec/DHGenParameterSpec.js,bin/sun/security/provider/ParameterCache.js,bin/java/security/KeyPair.js,bin/java/security/ProviderException.js,bin/java/lang/Math.js,bin/java/security/KeyPairGenerator.js,bin/java/security/AlgorithmParameterGenerator.js,bin/java/security/spec/DSAParameterSpec.js,bin/java/security/interfaces/DSAParams.js,bin/sun/security/util/DerValue.js,bin/sun/security/util/DerInputBuffer.js,bin/sun/security/util/Debug.js,bin/sun/security/util/ObjectIdentifier.js,bin/sun/security/x509/AlgorithmId.js,bin/java/nio/Buffer.js,bin/javax/crypto/spec/PBEParameterSpec.js,bin/java/security/DigestInputStream.js,bin/java/security/DigestOutputStream.js,bin/java/security/KeyStoreException.js,bin/java/security/UnrecoverableKeyException.js,bin/java/security/UnrecoverableEntryException.js,bin/java/security/cert/Certificate.js,bin/java/security/cert/CertificateFactory.js,bin/java/security/cert/X509Certificate.js,bin/java/security/cert/X509Extension.js,bin/java/security/cert/CertificateException.js,bin/java/util/Date.js,bin/java/io/UnsupportedEncodingException.js,bin/java/io/DataOutputStream.js,bin/java/security/cert/CertificateEncodingException.js,bin/java/lang/OutOfMemoryError.js,bin/java/lang/VirtualMachineError.js,bin/java/nio/charset/Charset.js,bin/java/security/Security.js,bin/javax/crypto/CryptoPermission.js,bin/javax/crypto/ExemptionMechanism.js,bin/javax/crypto/spec/PBEKeySpec.js,bin/java/security/spec/MGF1ParameterSpec.js,bin/javax/crypto/spec/PSource.js,bin/javax/crypto/spec/OAEPParameterSpec.js,bin/java/util/HashSet.js,bin/javax/crypto/Mac.js,bin/sun/security/jca/Providers.js,bin/sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec.js,bin/sun/security/rsa/RSAPadding.js,bin/java/security/interfaces/RSAPrivateKey.js,bin/java/security/interfaces/RSAKey.js,bin/java/security/interfaces/RSAPublicKey.js,bin/sun/security/jca/ProviderList.js,bin/sun/security/rsa/RSAKeyFactory.js,bin/sun/security/rsa/RSACore.js,bin/java/lang/AssertionError.js,bin/java/security/AccessController.js,bin/java/net/URL.js,bin/java/util/InvalidPropertiesFormatException.js,bin/java/io/StreamCorruptedException.js,bin/java/security/PrivilegedActionException.js,bin/sun/security/internal/spec/TlsKeyMaterialParameterSpec.js,bin/sun/security/internal/spec/TlsKeyMaterialSpec.js,bin/sun/security/internal/spec/TlsMasterSecretParameterSpec.js,bin/sun/security/internal/spec/TlsPrfParameterSpec.js,bin/javax/imageio/IIOException.js,bin/javax/imageio/ImageIO.js,bin/javax/imageio/spi/ServiceRegistry.js,bin/javax/imageio/ImageReadParam.js,bin/javax/imageio/ImageTypeSpecifier.js,bin/javax/imageio/event/IIOReadUpdateListener.js,bin/javax/imageio/event/IIOReadWarningListener.js,bin/javax/imageio/IIOImage.js,bin/java/nio/ByteOrder.js,bin/javax/imageio/spi/IIORegistry.js,bin/javax/imageio/metadata/IIOMetadataNode.js,bin/javax/imageio/metadata/IIOInvalidTreeException.js,bin/javax/imageio/event/IIOWriteWarningListener.js,bin/javax/imageio/plugins/bmp/BMPImageWriteParam.js,bin/javax/imageio/metadata/IIOMetadataController.js,bin/java/lang/ArrayIndexOutOfBoundsException.js,bin/java/util/PropertyResourceBundle.js,bin/javax/imageio/stream/IIOByteBuffer.js,bin/java/io/EOFException.js,bin/javax/imageio/IIOParamController.js,bin/javax/imageio/plugins/jpeg/JPEGHuffmanTable.js,bin/javax/imageio/plugins/jpeg/JPEGQTable.js,bin/javax/imageio/stream/MemoryCacheImageOutputStream.js,bin/java/lang/StackTraceElement.js,bin/java/lang/InternalError.js,bin/javax/imageio/plugins/jpeg/JPEGImageReadParam.js,bin/sun/java2d/Disposer.js,bin/sun/security/action/LoadLibraryAction.js,bin/javax/imageio/plugins/jpeg/JPEGImageWriteParam.js,bin/java/io/SequenceInputStream.js,bin/java/util/zip/Inflater.js,bin/java/util/zip/InflaterInputStream.js,bin/sun/awt/image/ByteInterleavedRaster.js,bin/sun/awt/image/ByteComponentRaster.js,bin/sun/awt/image/SunWritableRaster.js,bin/java/util/zip/ZipException.js,bin/java/util/zip/Deflater.js,bin/java/util/zip/DeflaterOutputStream.js,bin/javax/imageio/stream/FileImageInputStream.js,bin/java/io/FileNotFoundException.js,bin/javax/imageio/stream/FileImageOutputStream.js,bin/javax/imageio/stream/FileCacheImageInputStream.js,bin/javax/imageio/stream/MemoryCacheImageInputStream.js,bin/javax/imageio/stream/FileCacheImageOutputStream.js,bin/java/io/RandomAccessFile.js,bin/java/lang/ThreadGroup.js,bin/java/lang/Runtime.js,bin/java/util/MissingResourceException.js,bin/java/io/InvalidObjectException.js,bin/java/text/AttributedString.js,bin/java/net/URI.js,bin/java/util/zip/ZipFile.js,bin/java/util/zip/ZipConstants.js,bin/sun/security/action/GetPropertyAction.js,bin/java/lang/InstantiationException.js,bin/javax/swing/JSpinner.js,bin/javax/swing/text/DateFormatter.js,bin/javax/swing/text/InternationalFormatter.js,bin/javax/swing/text/DefaultFormatter.js,bin/javax/swing/JFormattedTextField.js,bin/javax/swing/text/NumberFormatter.js,bin/javax/swing/event/ChangeEvent.js,bin/javax/swing/JColorChooser.js,bin/javax/swing/JDialog.js,bin/javax/swing/WindowConstants.js,bin/javax/swing/colorchooser/ColorSelectionModel.js,bin/javax/swing/plaf/PanelUI.js,bin/javax/swing/event/AncestorListener.js,bin/javax/swing/JToolTip.js,bin/javax/swing/KeyStroke.js,bin/javax/swing/AncestorNotifier.js,bin/javax/swing/ArrayTable.js,bin/javax/swing/InputVerifier.js,bin/javax/swing/JRootPane.js,bin/javax/swing/UIManager.js,bin/javax/swing/plaf/ActionMapUIResource.js,bin/javax/swing/SwingUtilities.js,bin/javax/swing/SpinnerNumberModel.js,bin/javax/swing/AbstractSpinnerModel.js,bin/javax/swing/SpinnerModel.js,bin/javax/swing/Box.js,bin/javax/swing/plaf/ColorUIResource.js,bin/sun/swing/ImageCache.js,bin/javax/swing/plaf/synth/SynthContext.js,bin/javax/swing/JScrollBar.js,bin/javax/swing/JSlider.js,bin/javax/swing/JProgressBar.js,bin/javax/swing/JSplitPane.js,bin/java/text/MessageFormat.js,bin/java/text/Format.js,bin/sun/swing/SwingUtilities2.js,bin/sun/swing/DefaultLookup.js,bin/sun/awt/shell/ShellFolder.js,bin/javax/swing/JList.js,bin/javax/swing/JFileChooser.js,bin/javax/swing/JScrollPane.js,bin/javax/swing/event/ListSelectionEvent.js,bin/javax/swing/filechooser/FileSystemView.js,bin/javax/swing/event/ListDataEvent.js,bin/java/util/Collections.js,bin/java/util/AbstractQueue.js,bin/java/util/Queue.js,bin/javax/swing/JOptionPane.js,bin/javax/swing/ListSelectionModel.js,bin/javax/swing/DefaultListSelectionModel.js,bin/java/text/FieldPosition.js,bin/javax/swing/text/BadLocationException.js,bin/java/lang/reflect/InvocationTargetException.js,bin/sun/awt/AppContext.js,bin/sun/awt/ConstrainableGraphics.js,bin/sun/awt/EmbeddedFrame.js,bin/sun/awt/NullComponentPeer.js,bin/sun/awt/dnd/SunDropTargetEvent.js,bin/sun/awt/im/CompositionArea.js,bin/sun/java2d/SunGraphics2D.js,bin/sun/java2d/DestSurfaceProvider.js,bin/sun/awt/image/VSyncedBSManager.js,bin/sun/java2d/SunGraphicsEnvironment.js,bin/sun/java2d/FontSupport.js,bin/sun/awt/DisplayChangedListener.js,bin/javax/swing/BoxLayout.js,bin/javax/swing/table/JTableHeader.js,bin/javax/swing/event/TableColumnModelListener.js,bin/javax/swing/JTable.js,bin/javax/swing/JCheckBox.js,bin/javax/swing/JToggleButton.js,bin/javax/accessibility/AccessibleExtendedTable.js,bin/javax/accessibility/AccessibleTable.js,bin/javax/accessibility/AccessibleTableModelChange.js,bin/javax/swing/DefaultButtonModel.js,bin/javax/swing/ButtonModel.js,bin/javax/swing/BoundedRangeModel.js,bin/javax/swing/DropMode.js,bin/javax/print/PrintService.js,bin/javax/print/attribute/PrintRequestAttributeSet.js,bin/javax/print/attribute/AttributeSet.js,bin/java/util/LinkedList.js,bin/java/util/AbstractSequentialList.js,bin/java/util/Deque.js,bin/java/util/logging/Level.js,bin/java/util/logging/Logger.js,bin/sun/awt/HeadlessToolkit.js,bin/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.js,bin/sun/swing/MenuItemLayoutHelper.js,bin/java/lang/NoSuchMethodException.js,bin/javax/swing/text/DefaultEditorKit.js,bin/javax/swing/text/EditorKit.js,bin/sun/awt/OSInfo.js,bin/java/text/ParseException.js,bin/sun/swing/SwingLazyValue.js,bin/javax/swing/plaf/InsetsUIResource.js,bin/javax/swing/plaf/DimensionUIResource.js,bin/javax/swing/JTabbedPane.js,bin/javax/swing/plaf/FontUIResource.js,bin/javax/swing/ImageIcon.js,bin/javax/accessibility/AccessibleIcon.js,bin/javax/swing/JInternalFrame.js,bin/java/io/FileSystem.js,bin/java/net/MalformedURLException.js,bin/java/io/InputStreamReader.js,bin/java/util/NoSuchElementException.js,bin/sun/font/FontManager.js,bin/javax/swing/plaf/basic/LazyActionMap.js,bin/javax/swing/JMenuItem.js,bin/javax/swing/MenuSelectionManager.js,bin/javax/swing/event/MenuKeyEvent.js,bin/javax/swing/Popup.js,bin/sun/awt/ModalExclude.js,bin/javax/swing/SingleSelectionModel.js,bin/javax/swing/CellRendererPane.js,bin/javax/swing/JDesktopPane.js,bin/javax/swing/JLayeredPane.js,bin/javax/swing/text/Position.js,bin/javax/swing/JMenu.js,bin/javax/swing/event/InternalFrameEvent.js,bin/javax/swing/BorderFactory.js,bin/javax/swing/border/BevelBorder.js,bin/javax/swing/plaf/basic/BasicBorders.js,bin/javax/swing/plaf/BorderUIResource.js,bin/javax/swing/border/CompoundBorder.js,bin/javax/swing/border/EtchedBorder.js,bin/javax/swing/border/MatteBorder.js,bin/javax/swing/border/TitledBorder.js,bin/javax/swing/event/MenuListener.js,bin/javax/swing/JTree.js,bin/javax/swing/Timer.js,bin/javax/swing/plaf/IconUIResource.js,bin/javax/swing/tree/TreePath.js,bin/javax/swing/tree/TreeModel.js,bin/sun/awt/SunHints.js,bin/java/util/LinkedHashMap.js,bin/java/util/concurrent/locks/ReadWriteLock.js,bin/java/util/concurrent/locks/package-info.js,bin/java/util/concurrent/locks/ReentrantReadWriteLock.js,bin/java/util/concurrent/locks/AbstractQueuedSynchronizer.js,bin/java/util/concurrent/locks/AbstractOwnableSynchronizer.js,bin/java/lang/ThreadLocal.js,bin/java/util/concurrent/locks/Lock.js,bin/java/util/concurrent/locks/Condition.js,bin/javax/swing/GrayFilter.js,bin/sun/swing/ImageIconUIResource.js,bin/sun/swing/plaf/GTKKeybindings.js,bin/sun/swing/plaf/WindowsKeybindings.js,bin/sun/security/action/GetBooleanAction.js,bin/java/util/EnumMap.js,bin/java/lang/Package.js,bin/javax/swing/plaf/basic/BasicGraphicsUtils.js,bin/javax/swing/JRadioButton.js,bin/sun/swing/StringUIClientPropertyKey.js,bin/sun/swing/WindowsPlacesBar.js,bin/javax/swing/ButtonGroup.js,bin/javax/swing/JRadioButtonMenuItem.js,bin/javax/swing/event/PopupMenuEvent.js,bin/javax/swing/JCheckBoxMenuItem.js,bin/javax/swing/PopupFactory.js,bin/javax/swing/SwingHeavyWeight.js,bin/sun/awt/util/IdentityArrayList.js,bin/javax/swing/JFrame.js,bin/javax/swing/plaf/InputMapUIResource.js,bin/javax/swing/table/TableColumn.js,bin/javax/swing/SortOrder.js,bin/java/lang/StringIndexOutOfBoundsException.js,bin/java/util/logging/LogRecord.js,bin/java/util/logging/Handler.js,bin/java/util/logging/Filter.js,bin/java/util/logging/LogManager.js,bin/java/io/FileOutputStream.js,bin/java/lang/reflect/Modifier.js,bin/java/io/FileInputStream.js,bin/java/util/jar/JarFile.js,bin/java/util/jar/JarEntry.js,bin/java/util/zip/ZipEntry.js,bin/java/util/zip/GZIPOutputStream.js,bin/java/util/jar/JarInputStream.js,bin/java/util/zip/ZipInputStream.js,bin/java/util/zip/GZIPInputStream.js,bin/java/util/jar/JarOutputStream.js,bin/java/util/zip/ZipOutputStream.js,bin/java/util/jar/Manifest.js,bin/sun/misc/IOUtils.js,bin/java/util/zip/CRC32.js,bin/java/util/zip/Checksum.js,bin/java/util/TimeZone.js,bin/java/util/zip/CheckedOutputStream.js,bin/java/security/Permissions.js,bin/java/lang/SecurityManager.js,bin/java/lang/Process.js,bin/java/lang/NoClassDefFoundError.js,bin/java/lang/LinkageError.js,bin/java/lang/VerifyError.js,bin/java/lang/ClassFormatError.js,bin/java/lang/ClassCircularityError.js,bin/java/lang/UnsupportedClassVersionError.js,bin/java/lang/IllegalThreadStateException.js,bin/java/util/ConcurrentModificationException.js,bin/java/io/StringWriter.js,bin/javax/management/Attribute.js,bin/javax/management/AttributeList.js,bin/javax/management/AttributeNotFoundException.js,bin/javax/management/OperationsException.js,bin/javax/management/JMException.js,bin/javax/management/InstanceAlreadyExistsException.js,bin/javax/management/InstanceNotFoundException.js,bin/javax/management/IntrospectionException.js,bin/javax/management/InvalidAttributeValueException.js,bin/javax/management/ListenerNotFoundException.js,bin/javax/management/MalformedObjectNameException.js,bin/javax/management/MBeanException.js,bin/javax/management/MBeanPermission.js,bin/javax/management/MBeanRegistrationException.js,bin/javax/management/MBeanServerNotification.js,bin/javax/management/MBeanTrustPermission.js,bin/javax/management/NotCompliantMBeanException.js,bin/javax/management/NotificationFilter.js,bin/javax/management/ObjectInstance.js,bin/javax/management/ObjectName.js,bin/javax/management/ReflectionException.js,bin/javax/management/RuntimeErrorException.js,bin/javax/management/RuntimeMBeanException.js,bin/javax/management/RuntimeOperationsException.js,bin/javax/management/BadStringOperationException.js,bin/javax/management/BadBinaryOpValueExpException.js,bin/javax/management/BadAttributeValueExpException.js,bin/javax/management/InvalidApplicationException.js,bin/javax/management/MBeanAttributeInfo.js,bin/javax/management/MBeanFeatureInfo.js,bin/javax/management/MBeanNotificationInfo.js,bin/javax/management/loading/PrivateClassLoader.js,bin/javax/management/Descriptor.js,bin/javax/management/openmbean/OpenDataException.js,bin/sun/reflect/misc/MethodUtil.js,bin/java/security/SecureClassLoader.js,bin/javax/management/ImmutableDescriptor.js,bin/javax/management/JMX.js,bin/java/lang/reflect/UndeclaredThrowableException.js,bin/javax/management/DescriptorKey.js,bin/javax/management/MBeanServerPermission.js,bin/javax/management/MBeanServerFactory.js,bin/sun/reflect/misc/ConstructorUtil.js,bin/java/lang/NoSuchMethodError.js,bin/java/lang/IncompatibleClassChangeError.js,bin/javax/management/MBeanConstructorInfo.js,bin/javax/management/MBeanOperationInfo.js,bin/javax/management/MBeanParameterInfo.js,bin/javax/management/openmbean/OpenMBeanAttributeInfoSupport.js,bin/javax/management/openmbean/OpenMBeanAttributeInfo.js,bin/javax/management/openmbean/OpenMBeanParameterInfo.js,bin/javax/management/openmbean/OpenMBeanOperationInfoSupport.js,bin/javax/management/openmbean/OpenMBeanOperationInfo.js,bin/javax/management/openmbean/OpenMBeanParameterInfoSupport.js,bin/java/lang/reflect/Proxy.js,bin/javax/management/MBeanServerInvocationHandler.js,bin/java/io/ObjectStreamClass.js,bin/java/io/NotActiveException.js,bin/java/util/BitSet.js,bin/java/util/TreeSet.js,bin/javax/management/openmbean/ArrayType.js,bin/javax/management/openmbean/CompositeDataInvocationHandler.js,bin/javax/management/openmbean/CompositeDataSupport.js,bin/javax/management/openmbean/CompositeType.js,bin/javax/management/openmbean/TabularData.js,bin/javax/management/openmbean/TabularDataSupport.js,bin/javax/management/openmbean/TabularType.js,bin/java/math/BigDecimal.js,bin/java/util/IdentityHashMap.js,bin/javax/management/NotificationBroadcasterSupport.js,bin/javax/management/NotificationFilterSupport.js,bin/javax/management/remote/NotificationResult.js,bin/javax/management/remote/TargetedNotification.js,bin/java/io/InterruptedIOException.js,bin/javax/security/auth/Subject.js,bin/java/io/NotSerializableException.js,bin/sun/nio/ch/Interruptible.js,bin/java/rmi/RemoteException.js,bin/java/rmi/server/Operation.js,bin/java/rmi/server/RemoteCall.js,bin/java/rmi/NoSuchObjectException.js,bin/java/rmi/server/RMIClientSocketFactory.js,bin/java/rmi/server/RMIServerSocketFactory.js,bin/java/rmi/server/RemoteStub.js,bin/sun/rmi/server/UnicastServerRef.js,bin/sun/rmi/server/UnicastRef.js,bin/java/rmi/server/ServerRef.js,bin/sun/rmi/server/Dispatcher.js,bin/sun/rmi/server/WeakClassHashMap.js,bin/java/lang/ClassCastException.js,bin/java/rmi/MarshalledObject.js,bin/sun/rmi/server/MarshalOutputStream.js,bin/sun/rmi/server/MarshalInputStream.js,bin/javax/management/remote/JMXConnector.js,bin/javax/management/remote/JMXServiceURL.js,bin/javax/management/remote/rmi/RMIConnector.js,bin/javax/management/remote/JMXAddressable.js,bin/javax/management/remote/rmi/RMIServer.js,bin/javax/management/remote/JMXConnectorServer.js,bin/javax/management/remote/JMXConnectorServerMBean.js,bin/javax/management/remote/rmi/RMIConnectorServer.js,bin/javax/management/remote/rmi/RMIServerImpl.js,bin/java/io/FilePermission.js,bin/java/security/AccessControlException.js,bin/javax/management/remote/JMXPrincipal.js,bin/sun/management/jmxremote/ConnectorBootstrap.js,bin/sun/management/AgentConfigurationError.js,bin/javax/security/auth/login/LoginException.js,bin/java/net/InetAddress.js,bin/java/net/UnknownHostException.js,bin/java/rmi/registry/Registry.js,bin/java/lang/management/ManagementFactory.js,bin/javax/management/remote/JMXConnectorServerFactory.js,bin/javax/rmi/ssl/SslRMIClientSocketFactory.js,bin/javax/rmi/ssl/SslRMIServerSocketFactory.js,bin/sun/rmi/server/UnicastServerRef2.js,bin/sun/management/Agent.js,bin/sun/management/FileSystem.js,bin/javax/security/auth/login/FailedLoginException.js,bin/javax/security/auth/callback/Callback.js,bin/javax/security/auth/callback/NameCallback.js,bin/javax/security/auth/callback/PasswordCallback.js,bin/javax/security/auth/callback/UnsupportedCallbackException.js,bin/javax/security/auth/AuthPermission.js,bin/javax/security/auth/login/AppConfigurationEntry.js,bin/javax/security/auth/login/LoginContext.js,bin/java/security/CodeSigner.js,bin/java/util/regex/Pattern.js,bin/javax/management/remote/SubjectDelegationPermission.js,bin/sun/misc/URLClassPath.js,bin/java/lang/AssertionStatusDirectives.js,bin/javax/management/remote/JMXConnectorFactory.js,bin/java/lang/ArithmeticException.js,bin/java/security/acl/NotOwnerException.js,bin/java/security/acl/LastOwnerException.js,bin/java/util/Stack.js,bin/java/util/EmptyStackException.js,bin/javax/management/ServiceNotFoundException.js,bin/javax/management/AttributeChangeNotification.js,bin/java/net/DatagramSocket.js,bin/java/net/DatagramPacket.js,bin/java/net/SocketException.js,bin/java/net/DatagramSocketImpl.js,bin/java/net/SocketOptions.js,bin/java/net/SocketAddress.js,bin/javax/naming/spi/NamingManager.js,bin/javax/naming/CannotProceedException.js,bin/javax/naming/ConfigurationException.js,bin/javax/naming/InvalidNameException.js,bin/javax/naming/CommunicationException.js,bin/javax/naming/CompositeName.js,bin/javax/naming/NotContextException.js,bin/javax/naming/Reference.js,bin/javax/naming/RefAddr.js,bin/javax/naming/NameNotFoundException.js,bin/javax/naming/OperationNotSupportedException.js,bin/javax/naming/NameAlreadyBoundException.js,bin/javax/naming/ContextNotEmptyException.js,bin/java/rmi/server/ExportException.js,bin/java/net/Socket.js,bin/sun/security/jca/JCAUtil.js,bin/javax/naming/ServiceUnavailableException.js,bin/java/net/Proxy.js,bin/java/net/SocketImpl.js,bin/javax/naming/spi/DirectoryManager.js,bin/javax/naming/directory/InvalidAttributeIdentifierException.js,bin/javax/naming/directory/Attributes.js,bin/javax/naming/directory/ModificationItem.js,bin/javax/naming/directory/SearchControls.js,bin/javax/naming/directory/BasicAttributes.js,bin/sun/net/dns/ResolverConfiguration.js,bin/javax/net/SocketFactory.js,bin/javax/naming/InterruptedNamingException.js,bin/javax/naming/ldap/SortResponseControl.js,bin/javax/naming/ldap/BasicControl.js,bin/javax/naming/ldap/PagedResultsResponseControl.js,bin/javax/naming/event/NamingEvent.js,bin/javax/naming/event/NamingExceptionEvent.js,bin/javax/naming/event/NamingListener.js,bin/javax/naming/ldap/UnsolicitedNotificationEvent.js,bin/javax/naming/ldap/UnsolicitedNotificationListener.js,bin/javax/naming/event/ObjectChangeListener.js,bin/javax/naming/event/NamespaceChangeListener.js,bin/javax/naming/directory/InvalidSearchFilterException.js,bin/javax/naming/InitialContext.js,bin/javax/naming/directory/InitialDirContext.js,bin/javax/naming/NoInitialContextException.js,bin/javax/naming/AuthenticationNotSupportedException.js,bin/javax/naming/NamingSecurityException.js,bin/javax/naming/AuthenticationException.js,bin/javax/naming/directory/InvalidAttributeValueException.js,bin/javax/naming/ldap/LdapName.js,bin/javax/naming/ldap/Rdn.js,bin/javax/naming/ldap/ExtendedRequest.js,bin/javax/naming/directory/SchemaViolationException.js,bin/javax/naming/PartialResultException.js,bin/javax/naming/LimitExceededException.js,bin/javax/naming/directory/AttributeInUseException.js,bin/javax/naming/NoPermissionException.js,bin/javax/naming/directory/NoSuchAttributeException.js,bin/javax/naming/SizeLimitExceededException.js,bin/javax/naming/TimeLimitExceededException.js,bin/javax/naming/StringRefAddr.js,bin/javax/naming/spi/DirStateFactory.js,bin/sun/misc/BASE64Encoder.js,bin/sun/misc/BASE64Decoder.js,bin/sun/misc/CharacterDecoder.js,bin/java/lang/IllegalAccessError.js,bin/javax/naming/directory/InvalidAttributesException.js,bin/java/net/URLClassLoader.js,bin/sun/misc/SharedSecrets.js,bin/sun/misc/JavaLangAccess.js,bin/javax/security/auth/kerberos/KerberosPrincipal.js,bin/javax/net/ssl/SSLSession.js,bin/javax/net/ssl/SSLSocket.js,bin/javax/net/ssl/SSLSocketFactory.js,bin/javax/net/ssl/SSLPeerUnverifiedException.js,bin/javax/net/ssl/SSLException.js,bin/javax/net/ssl/SSLContext.js,bin/sun/security/util/HostnameChecker.js,bin/java/lang/AbstractMethodError.js,bin/javax/naming/ldap/StartTlsRequest.js,bin/javax/security/sasl/RealmCallback.js,bin/javax/security/auth/callback/TextInputCallback.js,bin/javax/security/sasl/RealmChoiceCallback.js,bin/javax/security/auth/callback/ChoiceCallback.js,bin/javax/security/sasl/Sasl.js,bin/javax/security/sasl/SaslException.js,bin/java/rmi/server/ServerNotActiveException.js,bin/java/rmi/registry/LocateRegistry.js,bin/java/rmi/NotBoundException.js,bin/java/rmi/AccessException.js,bin/java/rmi/AlreadyBoundException.js,bin/java/rmi/ConnectException.js,bin/java/rmi/StubNotFoundException.js,bin/java/rmi/UnknownHostException.js,bin/java/rmi/server/SocketSecurityException.js,bin/java/rmi/ConnectIOException.js,bin/java/rmi/MarshalException.js,bin/java/rmi/UnmarshalException.js,bin/java/rmi/ServerException.js,bin/java/rmi/RMISecurityManager.js,bin/javax/naming/LinkRef.js,bin/javax/naming/directory/AttributeModificationException.js,bin/java/lang/management/MemoryUsage.js,bin/sun/management/GcInfoCompositeData.js,bin/sun/management/LazyCompositeData.js,bin/sun/management/GcInfoBuilder.js,bin/sun/management/VMOptionCompositeData.js,bin/javax/sound/sampled/AudioFormat.js,bin/javax/sound/sampled/AudioSystem.js,bin/javax/sound/sampled/LineEvent.js,bin/javax/sound/sampled/LineUnavailableException.js,bin/javax/sound/midi/MidiUnavailableException.js,bin/javax/sound/midi/InvalidMidiDataException.js,bin/javax/sound/sampled/UnsupportedAudioFileException.js,bin/javax/sound/midi/ControllerEventListener.js,bin/javax/sound/midi/MetaMessage.js,bin/javax/sound/sampled/AudioPermission.js,bin/sun/misc/Service.js,bin/sun/misc/ServiceConfigurationError.js,bin/javax/sound/midi/MidiSystem.js,bin/javax/sound/midi/MidiFileFormat.js,bin/javax/sound/midi/Sequence.js,bin/javax/sound/midi/Track.js,bin/javax/sound/midi/MidiEvent.js,bin/javax/sound/sampled/EnumControl.js,bin/java/util/prefs/BackingStoreException.js,bin/java/util/prefs/Preferences.js,bin/java/io/FileFilter.js,bin/java/io/PipedInputStream.js,bin/java/io/PipedOutputStream.js,bin/sun/net/www/MessageHeader.js,bin/java/net/InetSocketAddress.js,bin/java/net/BindException.js,bin/javax/net/ssl/SSLParameters.js,bin/java/lang/RuntimePermission.js,bin/sun/net/httpserver/DefaultHttpServerProvider.js,bin/java/net/ProtocolException.js,bin/java/net/UnknownServiceException.js,bin/java/net/FileNameMap.js,bin/java/net/ContentHandlerFactory.js,bin/javax/net/ssl/HttpsURLConnection.js,bin/javax/net/ssl/KeyManagerFactory.js,bin/javax/net/ssl/KeyManagerFactorySpi.js,bin/sun/security/ssl/SSLSocketFactoryImpl.js,bin/sun/security/ssl/SSLServerSocketFactoryImpl.js,bin/javax/net/ssl/SSLServerSocketFactory.js,bin/javax/net/ServerSocketFactory.js,bin/java/security/KeyManagementException.js,bin/javax/net/ssl/SSLContextSpi.js,bin/javax/net/ssl/SSLPermission.js,bin/javax/net/ssl/TrustManagerFactory.js,bin/javax/net/ssl/SSLEngine.js,bin/javax/net/ssl/ManagerFactoryParameters.js,bin/javax/net/ssl/TrustManagerFactorySpi.js,bin/javax/security/auth/x500/X500Principal.js,bin/sun/security/x509/X500Name.js,bin/sun/security/x509/GeneralNameInterface.js,bin/sun/net/www/http/HttpClient.js,bin/sun/net/NetworkClient.js,bin/sun/net/www/protocol/http/AuthenticationHeader.js,bin/sun/net/www/protocol/http/AuthenticationInfo.js,bin/sun/net/www/protocol/http/AuthCacheValue.js,bin/java/net/Authenticator.js,bin/java/net/PasswordAuthentication.js,bin/sun/net/www/protocol/http/HttpAuthenticator.js,bin/java/security/cert/CertificateParsingException.js,bin/java/util/concurrent/ConcurrentHashMap.js,bin/java/util/concurrent/ConcurrentMap.js,bin/java/util/concurrent/locks/ReentrantLock.js,bin/java/security/Signature.js,bin/java/security/SignatureSpi.js,bin/java/security/SignatureException.js,bin/sun/security/jca/GetInstance.js,bin/java/net/URISyntaxException.js,bin/java/security/interfaces/DSAPublicKey.js,bin/java/security/interfaces/DSAKey.js,bin/java/security/spec/DSAPublicKeySpec.js,bin/java/security/spec/RSAPublicKeySpec.js,bin/java/util/concurrent/CopyOnWriteArrayList.js,bin/java/security/cert/CertificateExpiredException.js,bin/java/security/cert/CertificateNotYetValidException.js,bin/java/security/SecurityPermission.js,bin/java/util/concurrent/atomic/AtomicInteger.js,bin/java/util/concurrent/atomic/package-info.js,bin/java/sql/ResultSetMetaData.js,bin/javax/sql/rowset/RowSetMetaDataImpl.js,bin/javax/sql/RowSetMetaData.js,bin/java/sql/Connection.js,bin/javax/sql/rowset/RowSetWarning.js,bin/java/sql/SQLException.js,bin/java/sql/SQLWarning.js,bin/javax/sql/rowset/spi/SyncProviderException.js,bin/java/sql/Array.js,bin/java/sql/Blob.js,bin/java/sql/Clob.js,bin/java/sql/Date.js,bin/java/util/Calendar.js,bin/java/sql/NClob.js,bin/java/sql/Ref.js,bin/java/sql/RowId.js,bin/java/sql/SQLXML.js,bin/java/sql/Statement.js,bin/java/sql/Time.js,bin/java/sql/Timestamp.js,bin/java/sql/Savepoint.js,bin/javax/sql/RowSetEvent.js,bin/javax/sql/RowSetListener.js,bin/javax/sql/rowset/spi/SyncFactory.js,bin/javax/sql/rowset/spi/SyncFactoryException.js,bin/java/sql/Struct.js,bin/javax/sql/rowset/serial/SerialStruct.js,bin/javax/sql/rowset/serial/SerialException.js,bin/java/sql/SQLData.js,bin/javax/sql/rowset/serial/SerialBlob.js,bin/javax/sql/rowset/serial/SerialClob.js,bin/javax/sql/rowset/serial/SerialArray.js,bin/java/sql/DatabaseMetaData.js,bin/java/io/OptionalDataException.js,bin/java/math/MathContext.js,bin/java/math/RoundingMode.js,bin/java/sql/Types.js,bin/java/text/DateFormat.js,bin/java/text/spi/DateFormatProvider.js,bin/java/text/ParsePosition.js,bin/java/io/StringBufferInputStream.js,bin/javax/sql/rowset/serial/SQLInputImpl.js,bin/java/sql/SQLInput.js,bin/javax/sql/rowset/serial/SerialRef.js,bin/java/sql/SQLFeatureNotSupportedException.js,bin/java/sql/SQLNonTransientException.js,bin/javax/sql/rowset/Predicate.js,bin/java/sql/PreparedStatement.js,bin/java/sql/ParameterMetaData.js,bin/javax/sql/DataSource.js,bin/javax/sql/CommonDataSource.js,bin/java/sql/DriverManager.js,bin/java/io/OutputStreamWriter.js,bin/javax/script/ScriptContext.js,bin/sun/misc/FloatingDecimal.js,bin/sun/misc/FpUtils.js,bin/sun/misc/FloatConsts.js,bin/sun/misc/DoubleConsts.js,bin/javax/script/ScriptException.js,bin/java/security/AllPermission.js,bin/javax/script/SimpleBindings.js,bin/javax/script/SimpleScriptContext.js,bin/sun/security/util/ResourcesMgr.js,bin/java/security/Identity.js,bin/java/security/IdentityScope.js,bin/java/security/UnresolvedPermission.js,bin/javax/security/auth/PrivateCredentialPermission.js,bin/sun/security/util/PropertyExpander.js,bin/java/security/Policy.js,bin/java/net/SocketPermission.js,bin/java/io/StreamTokenizer.js,bin/java/io/FileReader.js,bin/java/io/FileWriter.js,bin/sun/security/provider/PolicyParser.js,bin/javax/security/auth/callback/ConfirmationCallback.js,bin/javax/security/auth/callback/TextOutputCallback.js,bin/javax/swing/JPasswordField.js,bin/java/io/PushbackInputStream.js,bin/sun/security/util/Password.js,bin/sun/security/util/AuthResources.js,bin/java/security/AuthProvider.js,bin/javax/security/auth/DestroyFailedException.js,bin/java/security/cert/CertPath.js,bin/javax/security/auth/x500/X500PrivateCredential.js,bin/sun/security/krb5/Config.js,bin/sun/security/krb5/RealmException.js,bin/sun/security/krb5/KrbException.js,bin/sun/security/jgss/krb5/Krb5Util.js,bin/sun/security/krb5/Credentials.js,bin/sun/security/krb5/EncryptionKey.js,bin/javax/security/auth/kerberos/KerberosKey.js,bin/javax/security/auth/kerberos/KerberosTicket.js,bin/javax/security/auth/Refreshable.js,bin/sun/security/krb5/PrincipalName.js,bin/sun/security/krb5/Asn1Exception.js,bin/javax/security/auth/RefreshFailedException.js,bin/java/util/regex/Matcher.js,bin/java/util/regex/MatchResult.js,bin/javax/naming/ldap/InitialLdapContext.js,bin/javax/security/cert/CertificateException.js,bin/javax/security/cert/CertificateExpiredException.js,bin/javax/security/cert/CertificateNotYetValidException.js,bin/javax/security/cert/CertificateEncodingException.js,bin/org/ietf/jgss/GSSName.js,bin/org/ietf/jgss/GSSCredential.js,bin/sun/security/jgss/GSSUtil.js,bin/javax/security/sasl/AuthorizeCallback.js,bin/org/ietf/jgss/Oid.js,bin/org/ietf/jgss/MessageProp.js,bin/org/ietf/jgss/GSSContext.js,bin/org/ietf/jgss/GSSException.js,bin/org/ietf/jgss/GSSManager.js,bin/java/util/ServiceLoader.js,bin/java/lang/ThreadDeath.js,bin/java/lang/ArrayStoreException.js,bin/javax/swing/tree/DefaultTreeModel.js,bin/javax/swing/UnsupportedLookAndFeelException.js,bin/javax/swing/event/TreeSelectionEvent.js,bin/javax/swing/DefaultListModel.js,bin/javax/swing/JTextArea.js,bin/java/text/NumberFormat.js,bin/java/text/spi/NumberFormatProvider.js,bin/java/util/jar/Attributes.js,bin/java/net/JarURLConnection.js,bin/sun/net/www/ParseUtil.js,bin/sun/misc/ASCIICaseInsensitiveComparator.js,bin/java/nio/channels/FileChannel.js,bin/java/nio/channels/spi/AbstractInterruptibleChannel.js,bin/java/nio/channels/Channel.js,bin/java/nio/channels/InterruptibleChannel.js,bin/java/nio/channels/ByteChannel.js,bin/java/nio/channels/ReadableByteChannel.js,bin/java/nio/channels/WritableByteChannel.js,bin/java/nio/channels/GatheringByteChannel.js,bin/java/nio/channels/ScatteringByteChannel.js,bin/java/nio/MappedByteBuffer.js,bin/java/net/URLDecoder.js,bin/java/net/URLEncoder.js,bin/java/net/ServerSocket.js,bin/javax/swing/event/SwingPropertyChangeSupport.js,bin/javax/swing/SwingWorker.js,bin/java/util/concurrent/RunnableFuture.js,bin/java/util/concurrent/Future.js,bin/sun/swing/AccumulativeRunnable.js,bin/java/util/concurrent/FutureTask.js,bin/java/lang/UnsatisfiedLinkError.js,bin/java/net/Inet6Address.js,bin/java/net/SocketTimeoutException.js,bin/javax/script/ScriptEngineManager.js,bin/javax/accessibility/AccessibleRole.js,bin/javax/accessibility/AccessibleBundle.js,bin/javax/accessibility/AccessibleRelationSet.js,bin/javax/accessibility/AccessibleState.js,bin/sun/applet/AppletAudioClip.js,bin/javax/swing/event/EventListenerList.js,bin/java/lang/ExceptionInInitializerError.js,bin/sun/java2d/SunCompositeContext.js,bin/sun/java2d/pipe/RenderingEngine.js,bin/sun/awt/image/IntegerComponentRaster.js,bin/javax/swing/BufferStrategyPaintManager.js,bin/javax/swing/RepaintManager.js,bin/sun/font/FontDesignMetrics.js,bin/sun/awt/im/InputContext.js,bin/sun/awt/PeerEvent.js,bin/sun/awt/dnd/SunDropTargetContextPeer.js,bin/sun/awt/DesktopBrowse.js,bin/java/util/concurrent/atomic/AtomicLong.js,bin/sun/awt/util/IdentityLinkedList.js,bin/sun/awt/AWTAutoShutdown.js,bin/sun/awt/dnd/SunDragSourceContextPeer.js,bin/sun/misc/JavaSecurityAccess.js,bin/java/text/StringCharacterIterator.js,bin/sun/font/StandardGlyphVector.js,bin/sun/font/AttributeMap.js,bin/sun/font/AttributeValues.js,bin/sun/font/CompositeFont.js,bin/sun/font/Font2D.js,bin/sun/font/CreatedFontTracker.js,bin/sun/font/Font2DHandle.js,bin/sun/font/GlyphLayout.js,bin/sun/font/FontLineMetrics.js,bin/sun/font/CoreMetrics.js,bin/java/text/Bidi.js,bin/java/text/Annotation.js,bin/sun/awt/image/SunVolatileImage.js,bin/sun/java2d/pipe/hw/AccelSurface.js,bin/sun/java2d/pipe/hw/BufferedContextProvider.js,bin/sun/java2d/Surface.js,bin/sun/java2d/HeadlessGraphicsEnvironment.js,bin/sun/awt/image/SurfaceManager.js,bin/sun/awt/geom/Crossings.js,bin/sun/awt/ScrollPaneWheelScroller.js,bin/java/text/BreakIterator.js,bin/java/text/spi/BreakIteratorProvider.js,bin/javax/accessibility/AccessibleTextSequence.js,bin/sun/awt/image/IntegerInterleavedRaster.js,bin/sun/awt/UngrabEvent.js,bin/java/lang/Compiler.js,bin/java/util/concurrent/atomic/AtomicBoolean.js,bin/sun/java2d/cmm/PCMM.js,bin/sun/java2d/cmm/CMSManager.js,bin/sun/java2d/cmm/ColorTransform.js,bin/sun/java2d/cmm/ProfileDeferralMgr.js,bin/sun/java2d/cmm/ProfileDeferralInfo.js,bin/sun/java2d/cmm/ProfileActivator.js,bin/sun/awt/EventListenerAggregate.js,bin/java/util/TooManyListenersException.js,bin/sun/security/action/GetIntegerAction.js,bin/sun/awt/datatransfer/TransferableProxy.js,bin/sun/font/Decoration.js,bin/sun/font/FontResolver.js,bin/sun/text/CodePointIterator.js,bin/sun/font/GraphicComponent.js,bin/sun/font/TextLineComponent.js,bin/sun/font/LayoutPathImpl.js,bin/sun/awt/geom/Curve.js,bin/sun/font/BidiUtils.js,bin/sun/font/TextLabelFactory.js,bin/sun/font/ExtendedTextLabel.js,bin/sun/font/TextLabel.js,bin/sun/awt/geom/AreaOp.js,bin/sun/awt/im/InputMethodContext.js,bin/sun/awt/image/ImagingLib.js,bin/sun/awt/image/BytePackedRaster.js,bin/sun/awt/image/ShortComponentRaster.js,bin/sun/awt/image/OffScreenImageSource.js,bin/sun/java2d/StateTrackableDelegate.js,bin/sun/awt/image/BufImgSurfaceData.js,bin/sun/java2d/SurfaceData.js,bin/sun/java2d/DisposerTarget.js,bin/sun/awt/image/ShortInterleavedRaster.js,bin/sun/awt/image/ByteBandedRaster.js,bin/sun/awt/image/ShortBandedRaster.js,bin/javax/print/DocFlavor.js,bin/javax/print/PrintServiceLookup.js,bin/javax/print/StreamPrintServiceFactory.js,bin/javax/print/attribute/standard/Media.js,bin/javax/print/attribute/EnumSyntax.js,bin/javax/print/attribute/DocAttribute.js,bin/javax/print/attribute/Attribute.js,bin/javax/print/attribute/PrintRequestAttribute.js,bin/javax/print/attribute/PrintJobAttribute.js,bin/javax/print/attribute/standard/MediaPrintableArea.js,bin/javax/print/attribute/standard/MediaSize.js,bin/javax/print/attribute/Size2DSyntax.js,bin/javax/print/attribute/standard/MediaSizeName.js,bin/javax/print/attribute/standard/OrientationRequested.js,bin/sun/swing/PrintColorUIResource.js,bin/java/util/EnumSet.js,bin/javax/swing/DefaultComboBoxModel.js,bin/javax/swing/MutableComboBoxModel.js,bin/javax/swing/ToolTipManager.js,bin/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.js,bin/java/io/LineNumberReader.js,bin/java/util/PropertyPermission.js,bin/java/net/NetPermission.js,bin/sun/java2d/StateTracker.js,bin/java/lang/IllegalMonitorStateException.js,bin/java/io/InvalidClassException.js,bin/java/lang/TypeNotPresentException.js,bin/java/lang/reflect/MalformedParameterizedTypeException.js,bin/javax/crypto/KeyGenerator.js,bin/java/security/Signer.js,bin/java/security/Certificate.js,bin/java/security/interfaces/DSAPrivateKey.js,bin/java/security/interfaces/RSAPrivateCrtKey.js,bin/javax/net/ssl/KeyStoreBuilderParameters.js,bin/javax/crypto/JceSecurityManager.js,bin/javax/crypto/CryptoAllPermission.js,bin/sun/security/jca/ServiceId.js,bin/javax/crypto/JceSecurity.js,bin/javax/crypto/NullCipher.js,bin/javax/crypto/ExemptionMechanismException.js,bin/javax/crypto/spec/RC5ParameterSpec.js,bin/java/security/cert/CertStoreParameters.js,bin/java/util/LinkedHashSet.js,bin/java/util/XMLUtils.js,bin/javax/imageio/spi/ImageTranscoderSpi.js,bin/sun/util/ResourceBundleEnumeration.js,bin/sun/reflect/Reflection.js,bin/java/io/UTFDataFormatException.js,bin/java/io/WriteAbortedException.js,bin/javax/swing/DebugGraphics.js,bin/javax/swing/SortingFocusTraversalPolicy.js,bin/javax/swing/InternalFrameFocusTraversalPolicy.js,bin/javax/swing/LegacyGlueFocusTraversalPolicy.js,bin/javax/swing/KeyboardManager.js,bin/javax/swing/Autoscroller.js,bin/javax/swing/event/AncestorEvent.js,bin/sun/swing/AccessibleMethod.js,bin/javax/accessibility/AccessibleRelation.js,bin/javax/swing/text/StyledDocument.js,bin/java/util/regex/PatternSyntaxException.js,bin/sun/swing/plaf/synth/SynthFileChooserUIImpl.js,bin/javax/swing/plaf/basic/BasicHTML.js,bin/javax/swing/text/html/HTMLEditorKit.js,bin/javax/swing/text/StyledEditorKit.js,bin/javax/swing/text/html/HTMLDocument.js,bin/javax/swing/text/DefaultStyledDocument.js,bin/javax/swing/text/html/BlockView.js,bin/javax/swing/text/PlainDocument.js,bin/javax/swing/plaf/synth/SynthButtonUI.js,bin/javax/swing/plaf/synth/SynthCheckBoxUI.js,bin/javax/swing/plaf/synth/SynthRadioButtonUI.js,bin/javax/swing/plaf/synth/SynthToggleButtonUI.js,bin/javax/swing/plaf/synth/SynthCheckBoxMenuItemUI.js,bin/javax/swing/plaf/synth/SynthMenuItemUI.js,bin/javax/swing/plaf/synth/SynthColorChooserUI.js,bin/javax/swing/plaf/basic/BasicColorChooserUI.js,bin/javax/swing/plaf/ColorChooserUI.js,bin/javax/swing/plaf/synth/SynthComboBoxUI.js,bin/javax/swing/plaf/synth/SynthDesktopPaneUI.js,bin/javax/swing/plaf/synth/SynthDesktopIconUI.js,bin/javax/swing/plaf/synth/SynthEditorPaneUI.js,bin/javax/swing/plaf/synth/SynthFormattedTextFieldUI.js,bin/javax/swing/plaf/synth/SynthTextFieldUI.js,bin/javax/swing/plaf/synth/SynthInternalFrameUI.js,bin/javax/swing/plaf/synth/SynthLabelUI.js,bin/javax/swing/plaf/synth/SynthListUI.js,bin/javax/swing/plaf/basic/BasicListUI.js,bin/javax/swing/plaf/ListUI.js,bin/javax/swing/plaf/synth/SynthMenuBarUI.js,bin/javax/swing/plaf/synth/SynthMenuUI.js,bin/javax/swing/plaf/synth/SynthOptionPaneUI.js,bin/javax/swing/plaf/synth/SynthPanelUI.js,bin/javax/swing/plaf/basic/BasicPanelUI.js,bin/javax/swing/plaf/synth/SynthPasswordFieldUI.js,bin/javax/swing/plaf/synth/SynthSeparatorUI.js,bin/javax/swing/plaf/synth/SynthPopupMenuUI.js,bin/javax/swing/plaf/synth/SynthProgressBarUI.js,bin/javax/swing/plaf/synth/SynthRadioButtonMenuItemUI.js,bin/javax/swing/plaf/synth/SynthRootPaneUI.js,bin/javax/swing/plaf/synth/SynthScrollBarUI.js,bin/javax/swing/plaf/synth/SynthScrollPaneUI.js,bin/javax/swing/plaf/synth/SynthSliderUI.js,bin/javax/swing/plaf/synth/SynthSpinnerUI.js,bin/javax/swing/plaf/synth/SynthArrowButton.js,bin/javax/swing/plaf/synth/SynthSplitPaneUI.js,bin/javax/swing/plaf/synth/SynthTabbedPaneUI.js,bin/javax/swing/plaf/synth/SynthTableUI.js,bin/javax/swing/plaf/basic/BasicTableUI.js,bin/javax/swing/plaf/TableUI.js,bin/javax/swing/plaf/synth/SynthTableHeaderUI.js,bin/javax/swing/plaf/synth/SynthTextAreaUI.js,bin/javax/swing/plaf/synth/SynthTextPaneUI.js,bin/javax/swing/plaf/synth/SynthToolBarUI.js,bin/javax/swing/plaf/synth/SynthToolTipUI.js,bin/javax/swing/plaf/basic/BasicToolTipUI.js,bin/javax/swing/plaf/ToolTipUI.js,bin/javax/swing/plaf/synth/SynthTreeUI.js,bin/javax/swing/tree/DefaultTreeCellEditor.js,bin/javax/swing/plaf/synth/SynthViewportUI.js,bin/javax/swing/plaf/ViewportUI.js,bin/javax/swing/plaf/synth/DefaultSynthStyleFactory.js,bin/javax/swing/plaf/synth/SynthParser.js,bin/javax/swing/plaf/synth/SynthDefaultLookup.js,bin/javax/swing/FocusManager.js,bin/javax/swing/LayoutFocusTraversalPolicy.js,bin/sun/misc/Cleaner.js,bin/java/lang/ref/PhantomReference.js,bin/javax/swing/plaf/synth/SynthBorder.js,bin/javax/swing/event/MenuDragMouseEvent.js,bin/javax/swing/DefaultSingleSelectionModel.js,bin/javax/swing/OverlayLayout.js,bin/javax/swing/text/html/CSS.js,bin/javax/swing/text/html/HTML.js,bin/javax/swing/JEditorPane.js,bin/javax/accessibility/AccessibleHypertext.js,bin/javax/accessibility/AccessibleHyperlink.js,bin/javax/swing/text/StyleConstants.js,bin/javax/swing/plaf/basic/DefaultMenuLayout.js,bin/javax/swing/text/PasswordView.js,bin/javax/swing/text/FieldView.js,bin/javax/swing/text/PlainView.js,bin/javax/swing/text/TabSet.js,bin/javax/swing/SizeRequirements.js,bin/javax/swing/text/GlyphView.js,bin/javax/swing/text/TabableView.js,bin/javax/swing/JApplet.js,bin/javax/swing/text/WrappedPlainView.js,bin/javax/swing/text/StateInvariantError.js,bin/javax/swing/event/TreeExpansionEvent.js,bin/javax/swing/event/TreeModelEvent.js,bin/javax/swing/tree/FixedHeightLayoutCache.js,bin/javax/swing/tree/VariableHeightLayoutCache.js,bin/javax/swing/event/RowSorterEvent.js,bin/javax/swing/event/TableModelEvent.js,bin/sun/awt/shell/ShellFolderColumnInfo.js,bin/javax/swing/table/TableStringConverter.js,bin/javax/swing/table/TableColumnModel.js,bin/javax/swing/table/DefaultTableColumnModel.js,bin/javax/swing/event/TableColumnModelEvent.js,bin/javax/swing/SizeSequence.js,bin/javax/swing/SpinnerDateModel.js,bin/java/text/SimpleDateFormat.js,bin/java/util/GregorianCalendar.js,bin/java/util/concurrent/Callable.js,bin/java/security/GuardedObject.js,bin/java/util/Formatter.js,bin/java/text/Collator.js,bin/java/text/spi/CollatorProvider.js,bin/java/lang/StringCoding.js,bin/java/lang/ConditionalSpecialCasing.js,bin/javax/management/Query.js,bin/javax/management/AttributeValueExp.js,bin/javax/management/ValueExp.js,bin/sun/reflect/MethodAccessor.js,bin/sun/reflect/generics/repository/MethodRepository.js,bin/sun/reflect/generics/repository/ConstructorRepository.js,bin/sun/reflect/generics/tree/MethodTypeSignature.js,bin/sun/reflect/generics/factory/CoreReflectionFactory.js,bin/sun/reflect/generics/factory/GenericsFactory.js,bin/sun/reflect/generics/scope/MethodScope.js,bin/sun/reflect/generics/scope/AbstractScope.js,bin/sun/reflect/generics/scope/Scope.js,bin/sun/reflect/annotation/AnnotationParser.js,bin/java/lang/annotation/AnnotationFormatError.js,bin/java/lang/reflect/GenericSignatureFormatError.js,bin/sun/reflect/ConstantPool.js,bin/sun/reflect/annotation/ExceptionProxy.js,bin/java/lang/reflect/ReflectPermission.js,bin/java/lang/EnumConstantNotPresentException.js,bin/java/lang/annotation/AnnotationTypeMismatchException.js,bin/java/lang/annotation/IncompleteAnnotationException.js,bin/sun/misc/Unsafe.js,bin/sun/reflect/SignatureIterator.js,bin/sun/reflect/generics/scope/ClassScope.js,bin/java/io/SerialCallbackContext.js,bin/java/io/SerializablePermission.js,bin/java/lang/InheritableThreadLocal.js,bin/java/util/concurrent/RejectedExecutionException.js,bin/java/util/concurrent/ExecutorService.js,bin/java/util/concurrent/ThreadPoolExecutor.js,bin/java/util/concurrent/AbstractExecutorService.js,bin/java/util/concurrent/RejectedExecutionHandler.js,bin/java/util/concurrent/Executors.js,bin/java/util/concurrent/ThreadFactory.js,bin/java/util/concurrent/ScheduledExecutorService.js,bin/java/util/concurrent/ScheduledThreadPoolExecutor.js,bin/java/util/concurrent/RunnableScheduledFuture.js,bin/java/util/concurrent/ScheduledFuture.js,bin/java/util/concurrent/Delayed.js,bin/java/util/concurrent/BlockingQueue.js,bin/java/util/concurrent/ExecutorCompletionService.js,bin/java/util/concurrent/CompletionService.js,bin/java/util/concurrent/ConcurrentLinkedQueue.js,bin/java/util/concurrent/LinkedBlockingQueue.js,bin/java/util/concurrent/ArrayBlockingQueue.js,bin/java/util/concurrent/SynchronousQueue.js,bin/java/util/concurrent/PriorityBlockingQueue.js,bin/java/util/concurrent/DelayQueue.js,bin/java/util/concurrent/BlockingDeque.js,bin/java/util/concurrent/LinkedBlockingDeque.js,bin/java/util/concurrent/TimeUnit.js,bin/java/util/concurrent/Semaphore.js,bin/java/util/concurrent/CountDownLatch.js,bin/java/util/concurrent/CyclicBarrier.js,bin/java/util/concurrent/Exchanger.js,bin/java/util/concurrent/atomic/AtomicReference.js,bin/java/util/concurrent/ConcurrentSkipListMap.js,bin/java/util/concurrent/ConcurrentNavigableMap.js,bin/java/util/concurrent/ConcurrentSkipListSet.js,bin/java/util/concurrent/CopyOnWriteArraySet.js,bin/javax/security/auth/login/ConfigurationSpi.js,bin/sun/misc/ClassFileTransformer.js,bin/sun/misc/CompoundEnumeration.js,bin/sun/misc/Resource.js,bin/sun/misc/VM.js,bin/sun/misc/Launcher.js,bin/java/net/URLStreamHandlerFactory.js,bin/java/util/concurrent/locks/LockSupport.js,bin/sun/misc/SoftCache.js,bin/java/lang/StackOverflowError.js,bin/java/nio/channels/Selector.js,bin/javax/naming/spi/InitialContextFactoryBuilder.js,bin/javax/naming/NameImpl.js,bin/javax/naming/directory/InvalidSearchControlsException.js,bin/javax/naming/spi/ObjectFactoryBuilder.js,bin/java/rmi/server/ServerCloneException.js,bin/sun/rmi/transport/LiveRef.js,bin/sun/rmi/transport/ObjectTable.js,bin/java/rmi/server/RemoteObjectInvocationHandler.js,bin/sun/rmi/runtime/Log.js,bin/java/util/logging/StreamHandler.js,bin/java/rmi/ServerError.js,bin/java/rmi/server/Skeleton.js,bin/java/rmi/server/SkeletonNotFoundException.js,bin/sun/rmi/transport/Target.js,bin/sun/rmi/transport/tcp/TCPTransport.js,bin/sun/rmi/transport/Transport.js,bin/sun/rmi/server/Util.js,bin/java/rmi/activation/Activatable.js,bin/java/lang/management/MemoryMXBean.js,bin/javax/management/openmbean/InvalidKeyException.js,bin/javax/management/MXBean.js,bin/sun/net/www/MimeTable.js,bin/java/net/SecureCacheResponse.js,bin/java/net/CacheResponse.js,bin/sun/net/www/protocol/https/HttpsClient.js,bin/javax/net/ssl/HandshakeCompletedListener.js,bin/java/net/HttpRetryException.js,bin/java/net/ProxySelector.js,bin/java/net/CookieHandler.js,bin/java/net/ResponseCache.js,bin/java/net/CacheRequest.js,bin/sun/net/www/http/PosterOutputStream.js,bin/sun/net/www/http/ChunkedInputStream.js,bin/sun/net/www/http/Hurryable.js,bin/sun/net/www/http/ChunkedOutputStream.js,bin/sun/net/www/http/HttpCapture.js,bin/sun/net/www/protocol/http/AuthScheme.js,bin/sun/net/www/protocol/http/DigestAuthentication.js,bin/sun/net/ProgressSource.js,bin/sun/net/ApplicationProxy.js,bin/sun/net/ProgressMonitor.js,bin/sun/net/ProgressMeteringPolicy.js,bin/sun/net/www/protocol/http/HttpCallerInfo.js,bin/sun/net/www/HeaderParser.js,bin/sun/net/www/protocol/http/BasicAuthentication.js,bin/sun/net/www/protocol/http/NTLMAuthenticationProxy.js,bin/sun/net/www/protocol/http/NegotiateAuthentication.js,bin/sun/net/www/MeteredStream.js,bin/sun/net/www/protocol/https/HttpsURLConnectionImpl.js,bin/sun/net/util/IPAddressUtil.js,bin/java/security/Timestamp.js,bin/javax/swing/filechooser/FileNameExtensionFilter.js,bin/java/io/FilterWriter.js,bin/java/io/PipedWriter.js,bin/javax/accessibility/AccessibleAttributeSequence.js,bin/sun/awt/Graphics2Delegate.js,bin/sun/awt/image/ImageRepresentation.js,bin/sun/awt/image/ImageWatched.js,bin/sun/awt/image/ToolkitImage.js,bin/sun/awt/datatransfer/ToolkitThreadBlockedHandler.js,bin/java/nio/charset/CoderResult.js,bin/java/lang/CharacterData.js,bin/java/io/FilterReader.js,bin/java/io/PushbackReader.js,bin/java/io/PipedReader.js,bin/javax/swing/event/UndoableEditListener.js,bin/javax/swing/event/UndoableEditEvent.js,bin/javax/swing/undo/CannotRedoException.js,bin/javax/swing/undo/CannotUndoException.js,bin/javax/swing/text/Utilities.js,bin/javax/swing/text/SegmentCache.js,bin/javax/swing/text/LabelView.js,bin/javax/swing/DefaultBoundedRangeModel.js,bin/sun/swing/PrintingStatus.js,bin/sun/swing/text/TextComponentPrintable.js,bin/sun/swing/text/CountingPrintable.js,bin/javax/print/attribute/HashPrintRequestAttributeSet.js,bin/javax/print/attribute/HashAttributeSet.js,bin/java/util/concurrent/ExecutionException.js,bin/java/util/concurrent/TimeoutException.js,bin/javax/swing/text/TabStop.js,bin/javax/swing/text/ComponentView.js,bin/javax/swing/ViewportLayout.js,bin/javax/swing/table/DefaultTableModel.js,bin/sun/misc/JavaIODeleteOnExitAccess.js,bin/java/io/DeleteOnExitHook.js,bin/sun/misc/JavaIOFileAccess.js,bin/java/nio/channels/FileLock.js,bin/sun/awt/DefaultMouseInfoPeer.js,bin/sun/awt/ModalityEvent.js,bin/sun/awt/DebugSettings.js,bin/sun/awt/KeyboardFocusManagerPeerImpl.js,bin/sun/awt/image/URLImageSource.js,bin/sun/awt/image/InputStreamImageSource.js,bin/sun/awt/image/ImageFetchable.js,bin/sun/awt/image/FileImageSource.js,bin/sun/awt/image/ByteArrayImageSource.js,bin/sun/awt/im/SimpleInputMethodWindow.js,bin/sun/awt/im/InputMethodWindow.js,bin/sun/util/resources/LocaleData.js,bin/sun/util/resources/OpenListResourceBundle.js,bin/java/util/LocaleISOData.js,bin/java/util/ServiceConfigurationError.js,bin/java/text/spi/DateFormatSymbolsProvider.js,bin/java/text/spi/DecimalFormatSymbolsProvider.js,bin/java/util/spi/CurrencyNameProvider.js,bin/java/util/spi/TimeZoneNameProvider.js,bin/sun/reflect/FieldAccessor.js,bin/sun/reflect/generics/repository/FieldRepository.js,bin/sun/reflect/generics/tree/TypeSignature.js,bin/sun/reflect/generics/tree/ReturnType.js,bin/sun/reflect/generics/tree/TypeTree.js,bin/sun/reflect/generics/tree/FieldTypeSignature.js,bin/sun/reflect/generics/tree/BaseType.js,bin/sun/reflect/generics/tree/TypeArgument.js,bin/java/lang/ref/FinalReference.js,bin/sun/reflect/generics/visitor/Reifier.js,bin/sun/reflect/generics/visitor/TypeTreeVisitor.js,bin/sun/java2d/pipe/SpanIterator.js,bin/sun/java2d/pipe/RegionIterator.js,bin/sun/java2d/pipe/ShapeSpanIterator.js,bin/sun/awt/geom/PathConsumer2D.js,bin/sun/java2d/pipe/RegionSpanIterator.js,bin/sun/java2d/pipe/RegionClipSpanIterator.js,bin/java/nio/channels/spi/SelectorProvider.js,bin/sun/net/InetAddressCachePolicy.js,bin/java/io/Console.js,bin/sun/misc/JavaIOAccess.js,bin/java/lang/ProcessBuilder.js,bin/java/io/ExpiringCache.js,bin/java/io/IOError.js,bin/java/io/LineNumberInputStream.js,bin/java/io/SyncFailedException.js,bin/java/lang/ApplicationShutdownHooks.js,bin/java/lang/InstantiationError.js,bin/java/lang/NoSuchFieldError.js,bin/java/lang/Shutdown.js,bin/java/lang/StrictMath.js,bin/java/lang/UnknownError.js,bin/java/lang/annotation/Inherited.js,bin/java/lang/instrument/ClassDefinition.js,bin/java/lang/instrument/ClassFileTransformer.js,bin/java/lang/instrument/IllegalClassFormatException.js,bin/java/lang/instrument/Instrumentation.js,bin/java/lang/instrument/UnmodifiableClassException.js,bin/java/lang/management/ClassLoadingMXBean.js,bin/java/lang/management/CompilationMXBean.js,bin/java/lang/management/LockInfo.js,bin/java/lang/management/ManagementPermission.js,bin/java/lang/management/MemoryNotificationInfo.js,bin/java/lang/management/MemoryPoolMXBean.js,bin/java/lang/management/MemoryType.js,bin/java/lang/management/MonitorInfo.js,bin/java/lang/management/RuntimeMXBean.js,bin/java/lang/management/ThreadInfo.js,bin/java/lang/management/ThreadMXBean.js,bin/java/lang/ref/Finalizer.js,bin/java/lang/reflect/ReflectAccess.js,bin/java/math/BitSieve.js,bin/java/math/MutableBigInteger.js,bin/java/math/SignedMutableBigInteger.js,bin/java/net/AbstractPlainDatagramSocketImpl.js,bin/java/net/AbstractPlainSocketImpl.js,bin/java/net/ConnectException.js,bin/java/net/CookieManager.js,bin/java/net/CookiePolicy.js,bin/java/net/CookieStore.js,bin/java/net/DatagramSocketImplFactory.js,bin/java/net/HttpCookie.js,bin/java/net/IDN.js,bin/java/net/Inet4Address.js,bin/java/net/Inet4AddressImpl.js,bin/java/net/Inet6AddressImpl.js,bin/java/net/InetAddressImpl.js,bin/java/net/InterfaceAddress.js,bin/java/net/MulticastSocket.js,bin/java/net/NetUtil.js,bin/java/net/NetworkInterface.js,bin/java/net/NoRouteToHostException.js,bin/java/net/PortUnreachableException.js,bin/java/net/SocketImplFactory.js,bin/java/net/SocketInputStream.js,bin/java/net/SocketOutputStream.js,bin/java/net/SocksConsts.js,bin/java/net/SocksSocketImpl.js,bin/java/nio/Bits.js,bin/java/nio/ByteBufferAs-X-Buffer.js,bin/java/nio/Direct-X-Buffer-bin.js,bin/java/nio/Direct-X-Buffer.js,bin/java/nio/Heap-X-Buffer.js,bin/java/nio/StringCharBuffer.js,bin/java/nio/X-Buffer-bin.js,bin/java/nio/X-Buffer.js,bin/java/nio/channels/Channels.js,bin/java/nio/channels/DatagramChannel.js,bin/java/nio/channels/Pipe.js,bin/java/nio/channels/SelectableChannel.js,bin/java/nio/channels/SelectionKey.js,bin/java/nio/channels/ServerSocketChannel.js,bin/java/nio/channels/SocketChannel.js,bin/java/nio/channels/spi/AbstractSelectableChannel.js,bin/java/nio/channels/spi/AbstractSelectionKey.js,bin/java/nio/channels/spi/AbstractSelector.js,bin/java/nio/charset/Charset-X-Coder.js,bin/java/nio/charset/CoderMalfunctionError.js,bin/java/nio/charset/CodingErrorAction.js,bin/java/nio/charset/MalformedInputException.js,bin/java/nio/charset/UnmappableCharacterException.js,bin/java/nio/charset/spi/CharsetProvider.js,bin/java/rmi/Naming.js,bin/java/rmi/RMISecurityException.js,bin/java/rmi/ServerRuntimeException.js,bin/java/rmi/UnexpectedException.js,bin/java/rmi/activation/ActivateFailedException.js,bin/java/rmi/activation/ActivationDesc.js,bin/java/rmi/activation/ActivationException.js,bin/java/rmi/activation/ActivationGroup.js,bin/java/rmi/activation/ActivationGroupDesc.js,bin/java/rmi/activation/ActivationGroupID.js,bin/java/rmi/activation/ActivationID.js,bin/java/rmi/activation/ActivationInstantiator.js,bin/java/rmi/activation/ActivationMonitor.js,bin/java/rmi/activation/ActivationSystem.js,bin/java/rmi/activation/Activator.js,bin/java/rmi/activation/UnknownGroupException.js,bin/java/rmi/activation/UnknownObjectException.js,bin/java/rmi/dgc/DGC.js,bin/java/rmi/dgc/Lease.js,bin/java/rmi/dgc/VMID.js,bin/java/rmi/registry/RegistryHandler.js,bin/java/rmi/server/LoaderHandler.js,bin/java/rmi/server/LogStream.js,bin/java/rmi/server/ObjID.js,bin/java/rmi/server/RMIClassLoader.js,bin/java/rmi/server/RMIClassLoaderSpi.js,bin/java/rmi/server/RMIFailureHandler.js,bin/java/rmi/server/RMISocketFactory.js,bin/java/rmi/server/SkeletonMismatchException.js,bin/java/rmi/server/UID.js,bin/java/rmi/server/Unreferenced.js,bin/java/security/PolicySpi.js,bin/java/security/SecureRandomSpi.js,bin/java/security/SignedObject.js,bin/java/security/URIParameter.js,bin/java/security/UnresolvedPermissionCollection.js,bin/java/security/acl/AclNotFoundException.js,bin/java/security/cert/CRL.js,bin/java/security/cert/CRLException.js,bin/java/security/cert/CRLSelector.js,bin/java/security/cert/CertPathBuilder.js,bin/java/security/cert/CertPathBuilderException.js,bin/java/security/cert/CertPathBuilderResult.js,bin/java/security/cert/CertPathBuilderSpi.js,bin/java/security/cert/CertPathHelperImpl.js,bin/java/security/cert/CertPathParameters.js,bin/java/security/cert/CertPathValidator.js,bin/java/security/cert/CertPathValidatorException.js,bin/java/security/cert/CertPathValidatorResult.js,bin/java/security/cert/CertPathValidatorSpi.js,bin/java/security/cert/CertSelector.js,bin/java/security/cert/CertStore.js,bin/java/security/cert/CertStoreException.js,bin/java/security/cert/CertStoreSpi.js,bin/java/security/cert/CertificateFactorySpi.js,bin/java/security/cert/CollectionCertStoreParameters.js,bin/java/security/cert/LDAPCertStoreParameters.js,bin/java/security/cert/PKIXBuilderParameters.js,bin/java/security/cert/PKIXCertPathBuilderResult.js,bin/java/security/cert/PKIXCertPathChecker.js,bin/java/security/cert/PKIXCertPathValidatorResult.js,bin/java/security/cert/PKIXParameters.js,bin/java/security/cert/PolicyNode.js,bin/java/security/cert/PolicyQualifierInfo.js,bin/java/security/cert/TrustAnchor.js,bin/java/security/cert/X509CRL.js,bin/java/security/cert/X509CRLEntry.js,bin/java/security/cert/X509CRLSelector.js,bin/java/security/cert/X509CertSelector.js,bin/java/security/interfaces/DSAKeyPairGenerator.js,bin/java/security/interfaces/ECKey.js,bin/java/security/interfaces/ECPrivateKey.js,bin/java/security/interfaces/ECPublicKey.js,bin/java/security/interfaces/RSAMultiPrimePrivateCrtKey.js,bin/java/security/spec/DSAPrivateKeySpec.js,bin/java/security/spec/ECField.js,bin/java/security/spec/ECFieldF2m.js,bin/java/security/spec/ECFieldFp.js,bin/java/security/spec/ECGenParameterSpec.js,bin/java/security/spec/ECParameterSpec.js,bin/java/security/spec/ECPoint.js,bin/java/security/spec/ECPrivateKeySpec.js,bin/java/security/spec/ECPublicKeySpec.js,bin/java/security/spec/EllipticCurve.js,bin/java/security/spec/PSSParameterSpec.js,bin/java/security/spec/RSAKeyGenParameterSpec.js,bin/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.js,bin/java/security/spec/RSAOtherPrimeInfo.js,bin/java/security/spec/RSAPrivateCrtKeySpec.js,bin/java/security/spec/RSAPrivateKeySpec.js,bin/java/sql/BatchUpdateException.js,bin/java/sql/CallableStatement.js,bin/java/sql/ClientInfoStatus.js,bin/java/sql/DataTruncation.js,bin/java/sql/Driver.js,bin/java/sql/DriverPropertyInfo.js,bin/java/sql/RowIdLifetime.js,bin/java/sql/SQLClientInfoException.js,bin/java/sql/SQLDataException.js,bin/java/sql/SQLIntegrityConstraintViolationException.js,bin/java/sql/SQLInvalidAuthorizationSpecException.js,bin/java/sql/SQLNonTransientConnectionException.js,bin/java/sql/SQLOutput.js,bin/java/sql/SQLPermission.js,bin/java/sql/SQLRecoverableException.js,bin/java/sql/SQLSyntaxErrorException.js,bin/java/sql/SQLTimeoutException.js,bin/java/sql/SQLTransactionRollbackException.js,bin/java/sql/SQLTransientConnectionException.js,bin/java/sql/SQLTransientException.js,bin/java/text/BreakDictionary.js,bin/java/text/CharacterIteratorFieldDelegate.js,bin/java/text/ChoiceFormat.js,bin/java/text/CollationElementIterator.js,bin/java/text/CollationKey.js,bin/java/text/CollationRules.js,bin/java/text/DateFormatSymbols.js,bin/java/text/DecimalFormat.js,bin/java/text/DecimalFormatSymbols.js,bin/java/text/DictionaryBasedBreakIterator.js,bin/java/text/DigitList.js,bin/java/text/DontCareFieldPosition.js,bin/java/text/EntryPair.js,bin/java/text/MergeCollation.js,bin/java/text/Normalizer.js,bin/java/text/PatternEntry.js,bin/java/text/RBCollationTables.js,bin/java/text/RBTableBuilder.js,bin/java/text/RuleBasedBreakIterator.js,bin/java/text/RuleBasedCollationKey.js,bin/java/text/RuleBasedCollator.js,bin/java/util/ArrayDeque.js,bin/java/util/Currency.js,bin/java/util/DuplicateFormatFlagsException.js,bin/java/util/FormatFlagsConversionMismatchException.js,bin/java/util/Formattable.js,bin/java/util/FormattableFlags.js,bin/java/util/FormatterClosedException.js,bin/java/util/IllegalFormatCodePointException.js,bin/java/util/IllegalFormatConversionException.js,bin/java/util/IllegalFormatException.js,bin/java/util/IllegalFormatFlagsException.js,bin/java/util/IllegalFormatPrecisionException.js,bin/java/util/IllegalFormatWidthException.js,bin/java/util/InputMismatchException.js,bin/java/util/JapaneseImperialCalendar.js,bin/java/util/JumboEnumSet.js,bin/java/util/MissingFormatArgumentException.js,bin/java/util/MissingFormatWidthException.js,bin/java/util/Observable.js,bin/java/util/Observer.js,bin/java/util/PriorityQueue.js,bin/java/util/RegularEnumSet.js,bin/java/util/Scanner.js,bin/java/util/SimpleTimeZone.js,bin/java/util/Timer.js,bin/java/util/TimerTask.js,bin/java/util/UUID.js,bin/java/util/UnknownFormatConversionException.js,bin/java/util/UnknownFormatFlagsException.js,bin/java/util/concurrent/BrokenBarrierException.js,bin/java/util/concurrent/CancellationException.js,bin/java/util/concurrent/atomic/AtomicIntegerArray.js,bin/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.js,bin/java/util/concurrent/atomic/AtomicLongArray.js,bin/java/util/concurrent/atomic/AtomicLongFieldUpdater.js,bin/java/util/concurrent/atomic/AtomicMarkableReference.js,bin/java/util/concurrent/atomic/AtomicReferenceArray.js,bin/java/util/concurrent/atomic/AtomicStampedReference.js,bin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.js,bin/java/util/jar/JarException.js,bin/java/util/jar/JarVerifier.js,bin/java/util/jar/JavaUtilJarAccessImpl.js,bin/java/util/logging/ConsoleHandler.js,bin/java/util/logging/ErrorManager.js,bin/java/util/logging/FileHandler.js,bin/java/util/logging/Formatter.js,bin/java/util/logging/Logging.js,bin/java/util/logging/LoggingMXBean.js,bin/java/util/logging/LoggingPermission.js,bin/java/util/logging/MemoryHandler.js,bin/java/util/logging/SimpleFormatter.js,bin/java/util/logging/SocketHandler.js,bin/java/util/logging/XMLFormatter.js,bin/java/util/prefs/AbstractPreferences.js,bin/java/util/prefs/Base64.js,bin/java/util/prefs/InvalidPreferencesFormatException.js,bin/java/util/prefs/NodeChangeEvent.js,bin/java/util/prefs/NodeChangeListener.js,bin/java/util/prefs/PreferenceChangeEvent.js,bin/java/util/prefs/PreferenceChangeListener.js,bin/java/util/prefs/PreferencesFactory.js,bin/java/util/prefs/XmlSupport.js,bin/java/util/regex/ASCII.js,bin/java/util/zip/Adler32.js,bin/java/util/zip/CheckedInputStream.js,bin/java/util/zip/DataFormatException.js,bin/java/util/zip/DeflaterInputStream.js,bin/java/util/zip/InflaterOutputStream.js,bin/java/util/zip/ZStreamRef.js,bin/java/util/zip/ZipError.js,bin/javax/accessibility/AccessibleResourceBundle.js,bin/javax/accessibility/AccessibleStreamable.js,bin/javax/crypto/CipherInputStream.js,bin/javax/crypto/CipherOutputStream.js,bin/javax/crypto/CryptoPermissions.js,bin/javax/crypto/CryptoPolicyParser.js,bin/javax/crypto/EncryptedPrivateKeyInfo.js,bin/javax/crypto/ExemptionMechanismSpi.js,bin/javax/crypto/JarVerifier.js,bin/javax/crypto/KeyAgreement.js,bin/javax/crypto/NullCipherSpi.js,bin/javax/imageio/spi/DigraphNode.js,bin/javax/imageio/spi/PartiallyOrderedSet.js,bin/javax/imageio/stream/MemoryCache.js,bin/javax/management/AndQueryExp.js,bin/javax/management/AttributeChangeNotificationFilter.js,bin/javax/management/BetweenQueryExp.js,bin/javax/management/BinaryOpValueExp.js,bin/javax/management/BinaryRelQueryExp.js,bin/javax/management/BooleanValueExp.js,bin/javax/management/ClassAttributeValueExp.js,bin/javax/management/DefaultLoaderRepository.js,bin/javax/management/DescriptorAccess.js,bin/javax/management/InQueryExp.js,bin/javax/management/InstanceOfQueryExp.js,bin/javax/management/MatchQueryExp.js,bin/javax/management/NotQueryExp.js,bin/javax/management/NumericValueExp.js,bin/javax/management/OrQueryExp.js,bin/javax/management/PersistentMBean.js,bin/javax/management/QualifiedAttributeValueExp.js,bin/javax/management/StandardEmitterMBean.js,bin/javax/management/StandardMBean.js,bin/javax/management/StringValueExp.js,bin/javax/management/loading/DefaultLoaderRepository.js,bin/javax/management/loading/MLet.js,bin/javax/management/loading/MLetContent.js,bin/javax/management/loading/MLetMBean.js,bin/javax/management/loading/MLetObjectInputStream.js,bin/javax/management/loading/MLetParser.js,bin/javax/management/loading/PrivateMLet.js,bin/javax/management/modelmbean/DescriptorSupport.js,bin/javax/management/modelmbean/InvalidTargetObjectTypeException.js,bin/javax/management/modelmbean/ModelMBean.js,bin/javax/management/modelmbean/ModelMBeanAttributeInfo.js,bin/javax/management/modelmbean/ModelMBeanConstructorInfo.js,bin/javax/management/modelmbean/ModelMBeanInfo.js,bin/javax/management/modelmbean/ModelMBeanInfoSupport.js,bin/javax/management/modelmbean/ModelMBeanNotificationBroadcaster.js,bin/javax/management/modelmbean/ModelMBeanNotificationInfo.js,bin/javax/management/modelmbean/ModelMBeanOperationInfo.js,bin/javax/management/modelmbean/RequiredModelMBean.js,bin/javax/management/modelmbean/XMLParseException.js,bin/javax/management/monitor/CounterMonitor.js,bin/javax/management/monitor/CounterMonitorMBean.js,bin/javax/management/monitor/GaugeMonitor.js,bin/javax/management/monitor/GaugeMonitorMBean.js,bin/javax/management/monitor/Monitor.js,bin/javax/management/monitor/MonitorMBean.js,bin/javax/management/monitor/MonitorNotification.js,bin/javax/management/monitor/MonitorSettingException.js,bin/javax/management/monitor/StringMonitor.js,bin/javax/management/monitor/StringMonitorMBean.js,bin/javax/management/openmbean/InvalidOpenTypeException.js,bin/javax/management/openmbean/KeyAlreadyExistsException.js,bin/javax/management/openmbean/OpenMBeanConstructorInfo.js,bin/javax/management/openmbean/OpenMBeanConstructorInfoSupport.js,bin/javax/management/openmbean/OpenMBeanInfo.js,bin/javax/management/openmbean/OpenMBeanInfoSupport.js,bin/javax/management/relation/InvalidRelationIdException.js,bin/javax/management/relation/InvalidRelationServiceException.js,bin/javax/management/relation/InvalidRelationTypeException.js,bin/javax/management/relation/InvalidRoleInfoException.js,bin/javax/management/relation/InvalidRoleValueException.js,bin/javax/management/relation/MBeanServerNotificationFilter.js,bin/javax/management/relation/Relation.js,bin/javax/management/relation/RelationException.js,bin/javax/management/relation/RelationNotFoundException.js,bin/javax/management/relation/RelationNotification.js,bin/javax/management/relation/RelationService.js,bin/javax/management/relation/RelationServiceMBean.js,bin/javax/management/relation/RelationServiceNotRegisteredException.js,bin/javax/management/relation/RelationSupport.js,bin/javax/management/relation/RelationSupportMBean.js,bin/javax/management/relation/RelationType.js,bin/javax/management/relation/RelationTypeNotFoundException.js,bin/javax/management/relation/RelationTypeSupport.js,bin/javax/management/relation/Role.js,bin/javax/management/relation/RoleInfo.js,bin/javax/management/relation/RoleInfoNotFoundException.js,bin/javax/management/relation/RoleList.js,bin/javax/management/relation/RoleNotFoundException.js,bin/javax/management/relation/RoleResult.js,bin/javax/management/relation/RoleStatus.js,bin/javax/management/relation/RoleUnresolved.js,bin/javax/management/relation/RoleUnresolvedList.js,bin/javax/management/remote/JMXConnectionNotification.js,bin/javax/management/remote/JMXProviderException.js,bin/javax/management/remote/JMXServerErrorException.js,bin/javax/management/remote/rmi/NoCallStackClassLoader.js,bin/javax/management/remote/rmi/RMIConnection.js,bin/javax/management/remote/rmi/RMIConnectionImpl.js,bin/javax/management/remote/rmi/RMIIIOPServerImpl.js,bin/javax/management/remote/rmi/RMIJRMPServerImpl.js,bin/javax/management/timer/Timer.js,bin/javax/management/timer/TimerAlarmClockNotification.js,bin/javax/management/timer/TimerMBean.js,bin/javax/management/timer/TimerNotification.js,bin/javax/naming/BinaryRefAddr.js,bin/javax/naming/InsufficientResourcesException.js,bin/javax/naming/LinkException.js,bin/javax/naming/LinkLoopException.js,bin/javax/naming/MalformedLinkException.js,bin/javax/naming/ldap/ManageReferralControl.js,bin/javax/naming/ldap/PagedResultsControl.js,bin/javax/naming/ldap/Rfc2253Parser.js,bin/javax/naming/ldap/SortControl.js,bin/javax/naming/ldap/SortKey.js,bin/javax/naming/spi/ContinuationContext.js,bin/javax/naming/spi/ContinuationDirContext.js,bin/javax/naming/spi/DirObjectFactory.js,bin/javax/net/ssl/CertPathTrustManagerParameters.js,bin/javax/net/ssl/HandshakeCompletedEvent.js,bin/javax/net/ssl/SSLEngineResult.js,bin/javax/net/ssl/SSLHandshakeException.js,bin/javax/net/ssl/SSLKeyException.js,bin/javax/net/ssl/SSLProtocolException.js,bin/javax/net/ssl/SSLServerSocket.js,bin/javax/net/ssl/SSLSessionBindingEvent.js,bin/javax/net/ssl/SSLSessionBindingListener.js,bin/javax/net/ssl/SSLSessionContext.js,bin/javax/net/ssl/X509ExtendedKeyManager.js,bin/javax/print/AttributeException.js,bin/javax/print/CancelablePrintJob.js,bin/javax/print/Doc.js,bin/javax/print/DocPrintJob.js,bin/javax/print/FlavorException.js,bin/javax/print/MimeType.js,bin/javax/print/MultiDoc.js,bin/javax/print/MultiDocPrintJob.js,bin/javax/print/MultiDocPrintService.js,bin/javax/print/PrintException.js,bin/javax/print/ServiceUI.js,bin/javax/print/ServiceUIFactory.js,bin/javax/print/SimpleDoc.js,bin/javax/print/StreamPrintService.js,bin/javax/print/URIException.js,bin/javax/print/attribute/AttributeSetUtilities.js,bin/javax/print/attribute/DateTimeSyntax.js,bin/javax/print/attribute/DocAttributeSet.js,bin/javax/print/attribute/HashDocAttributeSet.js,bin/javax/print/attribute/HashPrintJobAttributeSet.js,bin/javax/print/attribute/HashPrintServiceAttributeSet.js,bin/javax/print/attribute/IntegerSyntax.js,bin/javax/print/attribute/PrintJobAttributeSet.js,bin/javax/print/attribute/PrintServiceAttribute.js,bin/javax/print/attribute/PrintServiceAttributeSet.js,bin/javax/print/attribute/ResolutionSyntax.js,bin/javax/print/attribute/SetOfIntegerSyntax.js,bin/javax/print/attribute/SupportedValuesAttribute.js,bin/javax/print/attribute/TextSyntax.js,bin/javax/print/attribute/URISyntax.js,bin/javax/print/attribute/UnmodifiableSetException.js,bin/javax/print/attribute/standard/Chromaticity.js,bin/javax/print/attribute/standard/ColorSupported.js,bin/javax/print/attribute/standard/Compression.js,bin/javax/print/attribute/standard/Copies.js,bin/javax/print/attribute/standard/CopiesSupported.js,bin/javax/print/attribute/standard/DateTimeAtCompleted.js,bin/javax/print/attribute/standard/DateTimeAtCreation.js,bin/javax/print/attribute/standard/DateTimeAtProcessing.js,bin/javax/print/attribute/standard/Destination.js,bin/javax/print/attribute/standard/DocumentName.js,bin/javax/print/attribute/standard/Fidelity.js,bin/javax/print/attribute/standard/Finishings.js,bin/javax/print/attribute/standard/JobHoldUntil.js,bin/javax/print/attribute/standard/JobImpressions.js,bin/javax/print/attribute/standard/JobImpressionsCompleted.js,bin/javax/print/attribute/standard/JobImpressionsSupported.js,bin/javax/print/attribute/standard/JobKOctets.js,bin/javax/print/attribute/standard/JobKOctetsProcessed.js,bin/javax/print/attribute/standard/JobKOctetsSupported.js,bin/javax/print/attribute/standard/JobMediaSheets.js,bin/javax/print/attribute/standard/JobMediaSheetsCompleted.js,bin/javax/print/attribute/standard/JobMediaSheetsSupported.js,bin/javax/print/attribute/standard/JobMessageFromOperator.js,bin/javax/print/attribute/standard/JobName.js,bin/javax/print/attribute/standard/JobOriginatingUserName.js,bin/javax/print/attribute/standard/JobPriority.js,bin/javax/print/attribute/standard/JobPrioritySupported.js,bin/javax/print/attribute/standard/JobSheets.js,bin/javax/print/attribute/standard/JobState.js,bin/javax/print/attribute/standard/JobStateReason.js,bin/javax/print/attribute/standard/JobStateReasons.js,bin/javax/print/attribute/standard/MediaName.js,bin/javax/print/attribute/standard/MediaTray.js,bin/javax/print/attribute/standard/MultipleDocumentHandling.js,bin/javax/print/attribute/standard/NumberOfDocuments.js,bin/javax/print/attribute/standard/NumberOfInterveningJobs.js,bin/javax/print/attribute/standard/NumberUp.js,bin/javax/print/attribute/standard/NumberUpSupported.js,bin/javax/print/attribute/standard/OutputDeviceAssigned.js,bin/javax/print/attribute/standard/PDLOverrideSupported.js,bin/javax/print/attribute/standard/PageRanges.js,bin/javax/print/attribute/standard/PagesPerMinute.js,bin/javax/print/attribute/standard/PagesPerMinuteColor.js,bin/javax/print/attribute/standard/PresentationDirection.js,bin/javax/print/attribute/standard/PrintQuality.js,bin/javax/print/attribute/standard/PrinterInfo.js,bin/javax/print/attribute/standard/PrinterIsAcceptingJobs.js,bin/javax/print/attribute/standard/PrinterLocation.js,bin/javax/print/attribute/standard/PrinterMakeAndModel.js,bin/javax/print/attribute/standard/PrinterMessageFromOperator.js,bin/javax/print/attribute/standard/PrinterMoreInfo.js,bin/javax/print/attribute/standard/PrinterMoreInfoManufacturer.js,bin/javax/print/attribute/standard/PrinterName.js,bin/javax/print/attribute/standard/PrinterResolution.js,bin/javax/print/attribute/standard/PrinterState.js,bin/javax/print/attribute/standard/PrinterStateReason.js,bin/javax/print/attribute/standard/PrinterStateReasons.js,bin/javax/print/attribute/standard/PrinterURI.js,bin/javax/print/attribute/standard/QueuedJobCount.js,bin/javax/print/attribute/standard/ReferenceUriSchemesSupported.js,bin/javax/print/attribute/standard/RequestingUserName.js,bin/javax/print/attribute/standard/Severity.js,bin/javax/print/attribute/standard/SheetCollate.js,bin/javax/print/attribute/standard/Sides.js,bin/javax/print/event/PrintEvent.js,bin/javax/print/event/PrintJobAdapter.js,bin/javax/print/event/PrintJobAttributeEvent.js,bin/javax/print/event/PrintJobAttributeListener.js,bin/javax/print/event/PrintJobEvent.js,bin/javax/print/event/PrintJobListener.js,bin/javax/print/event/PrintServiceAttributeEvent.js,bin/javax/print/event/PrintServiceAttributeListener.js,bin/javax/security/auth/callback/LanguageCallback.js,bin/javax/security/auth/kerberos/DelegationPermission.js,bin/javax/security/auth/kerberos/KeyImpl.js,bin/javax/security/auth/kerberos/ServicePermission.js,bin/javax/security/auth/login/AccountException.js,bin/javax/security/auth/login/AccountExpiredException.js,bin/javax/security/auth/login/AccountLockedException.js,bin/javax/security/auth/login/AccountNotFoundException.js,bin/javax/security/auth/login/CredentialException.js,bin/javax/security/auth/login/CredentialExpiredException.js,bin/javax/security/auth/login/CredentialNotFoundException.js,bin/javax/security/cert/CertificateParsingException.js,bin/javax/security/sasl/AuthenticationException.js,bin/javax/smartcardio/ATR.js,bin/javax/smartcardio/Card.js,bin/javax/smartcardio/CardChannel.js,bin/javax/smartcardio/CardException.js,bin/javax/smartcardio/CardNotPresentException.js,bin/javax/smartcardio/CardPermission.js,bin/javax/smartcardio/CardTerminal.js,bin/javax/smartcardio/CardTerminals.js,bin/javax/smartcardio/CommandAPDU.js,bin/javax/smartcardio/ResponseAPDU.js,bin/javax/smartcardio/TerminalFactory.js,bin/javax/smartcardio/TerminalFactorySpi.js,bin/javax/sound/sampled/ReverbType.js,bin/javax/sql/ConnectionEvent.js,bin/javax/sql/ConnectionEventListener.js,bin/javax/sql/ConnectionPoolDataSource.js,bin/javax/sql/PooledConnection.js,bin/javax/sql/StatementEvent.js,bin/javax/sql/StatementEventListener.js,bin/javax/sql/XAConnection.js,bin/javax/sql/XADataSource.js,bin/javax/sql/rowset/serial/SQLOutputImpl.js,bin/javax/sql/rowset/serial/SerialDatalink.js,bin/javax/sql/rowset/serial/SerialJavaObject.js,bin/javax/swing/DebugGraphicsFilter.js,bin/javax/swing/DebugGraphicsInfo.js,bin/javax/swing/DebugGraphicsObserver.js,bin/javax/swing/DefaultFocusManager.js,bin/javax/swing/DelegatingDefaultFocusManager.js,bin/javax/swing/GraphicsWrapper.js,bin/javax/swing/GroupLayout.js,bin/javax/swing/JTextPane.js,bin/javax/swing/LayoutComparator.js,bin/javax/swing/MultiUIDefaults.js,bin/javax/swing/ProgressMonitor.js,bin/javax/swing/ProgressMonitorInputStream.js,bin/javax/swing/Renderer.js,bin/javax/swing/ScrollPaneLayout.js,bin/javax/swing/SpinnerListModel.js,bin/javax/swing/Spring.js,bin/javax/swing/SpringLayout.js,bin/javax/swing/SwingPaintEventDispatcher.js,bin/javax/swing/TablePrintable.js,bin/javax/swing/TimerQueue.js,bin/javax/swing/border/SoftBevelBorder.js,bin/javax/swing/colorchooser/CenterLayout.js,bin/javax/swing/colorchooser/ColorChooserComponentFactory.js,bin/javax/swing/colorchooser/DefaultColorSelectionModel.js,bin/javax/swing/colorchooser/DefaultHSBChooserPanel.js,bin/javax/swing/colorchooser/DefaultPreviewPanel.js,bin/javax/swing/colorchooser/DefaultRGBChooserPanel.js,bin/javax/swing/colorchooser/DefaultSwatchChooserPanel.js,bin/javax/swing/colorchooser/SmartGridLayout.js,bin/javax/swing/colorchooser/SyntheticImage.js,bin/javax/swing/event/HyperlinkEvent.js,bin/javax/swing/event/HyperlinkListener.js,bin/javax/swing/event/InternalFrameAdapter.js,bin/javax/swing/event/MenuEvent.js,bin/javax/swing/event/TreeWillExpandListener.js,bin/javax/swing/plaf/basic/BasicCheckBoxUI.js,bin/javax/swing/plaf/basic/BasicFormattedTextFieldUI.js,bin/javax/swing/plaf/basic/BasicIconFactory.js,bin/javax/swing/plaf/basic/BasicViewportUI.js,bin/javax/swing/plaf/basic/CenterLayout.js,bin/javax/swing/plaf/metal/DefaultMetalTheme.js,bin/javax/swing/plaf/metal/MetalBorders.js,bin/javax/swing/plaf/metal/MetalBumps.js,bin/javax/swing/plaf/metal/MetalButtonUI.js,bin/javax/swing/plaf/metal/MetalCheckBoxIcon.js,bin/javax/swing/plaf/metal/MetalCheckBoxUI.js,bin/javax/swing/plaf/metal/MetalComboBoxButton.js,bin/javax/swing/plaf/metal/MetalComboBoxEditor.js,bin/javax/swing/plaf/metal/MetalComboBoxIcon.js,bin/javax/swing/plaf/metal/MetalComboBoxUI.js,bin/javax/swing/plaf/metal/MetalDesktopIconUI.js,bin/javax/swing/plaf/metal/MetalFileChooserUI.js,bin/javax/swing/plaf/metal/MetalFontDesktopProperty.js,bin/javax/swing/plaf/metal/MetalHighContrastTheme.js,bin/javax/swing/plaf/metal/MetalIconFactory.js,bin/javax/swing/plaf/metal/MetalInternalFrameTitlePane.js,bin/javax/swing/plaf/metal/MetalInternalFrameUI.js,bin/javax/swing/plaf/metal/MetalLabelUI.js,bin/javax/swing/plaf/metal/MetalLookAndFeel.js,bin/javax/swing/plaf/metal/MetalMenuBarUI.js,bin/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.js,bin/javax/swing/plaf/metal/MetalProgressBarUI.js,bin/javax/swing/plaf/metal/MetalRadioButtonUI.js,bin/javax/swing/plaf/metal/MetalRootPaneUI.js,bin/javax/swing/plaf/metal/MetalScrollBarUI.js,bin/javax/swing/plaf/metal/MetalScrollButton.js,bin/javax/swing/plaf/metal/MetalScrollPaneUI.js,bin/javax/swing/plaf/metal/MetalSeparatorUI.js,bin/javax/swing/plaf/metal/MetalSliderUI.js,bin/javax/swing/plaf/metal/MetalSplitPaneDivider.js,bin/javax/swing/plaf/metal/MetalSplitPaneUI.js,bin/javax/swing/plaf/metal/MetalTabbedPaneUI.js,bin/javax/swing/plaf/metal/MetalTextFieldUI.js,bin/javax/swing/plaf/metal/MetalTheme.js,bin/javax/swing/plaf/metal/MetalTitlePane.js,bin/javax/swing/plaf/metal/MetalToggleButtonUI.js,bin/javax/swing/plaf/metal/MetalToolBarUI.js,bin/javax/swing/plaf/metal/MetalToolTipUI.js,bin/javax/swing/plaf/metal/MetalTreeUI.js,bin/javax/swing/plaf/metal/MetalUtils.js,bin/javax/swing/plaf/metal/OceanTheme.js,bin/javax/swing/plaf/multi/MultiButtonUI.js,bin/javax/swing/plaf/multi/MultiColorChooserUI.js,bin/javax/swing/plaf/multi/MultiComboBoxUI.js,bin/javax/swing/plaf/multi/MultiDesktopIconUI.js,bin/javax/swing/plaf/multi/MultiDesktopPaneUI.js,bin/javax/swing/plaf/multi/MultiFileChooserUI.js,bin/javax/swing/plaf/multi/MultiInternalFrameUI.js,bin/javax/swing/plaf/multi/MultiLabelUI.js,bin/javax/swing/plaf/multi/MultiListUI.js,bin/javax/swing/plaf/multi/MultiLookAndFeel.js,bin/javax/swing/plaf/multi/MultiMenuBarUI.js,bin/javax/swing/plaf/multi/MultiMenuItemUI.js,bin/javax/swing/plaf/multi/MultiOptionPaneUI.js,bin/javax/swing/plaf/multi/MultiPanelUI.js,bin/javax/swing/plaf/multi/MultiPopupMenuUI.js,bin/javax/swing/plaf/multi/MultiProgressBarUI.js,bin/javax/swing/plaf/multi/MultiRootPaneUI.js,bin/javax/swing/plaf/multi/MultiScrollBarUI.js,bin/javax/swing/plaf/multi/MultiScrollPaneUI.js,bin/javax/swing/plaf/multi/MultiSeparatorUI.js,bin/javax/swing/plaf/multi/MultiSliderUI.js,bin/javax/swing/plaf/multi/MultiSpinnerUI.js,bin/javax/swing/plaf/multi/MultiSplitPaneUI.js,bin/javax/swing/plaf/multi/MultiTabbedPaneUI.js,bin/javax/swing/plaf/multi/MultiTableHeaderUI.js,bin/javax/swing/plaf/multi/MultiTableUI.js,bin/javax/swing/plaf/multi/MultiTextUI.js,bin/javax/swing/plaf/multi/MultiToolBarUI.js,bin/javax/swing/plaf/multi/MultiToolTipUI.js,bin/javax/swing/plaf/multi/MultiTreeUI.js,bin/javax/swing/plaf/multi/MultiViewportUI.js,bin/javax/swing/plaf/synth/DefaultMenuLayout.js,bin/javax/swing/plaf/synth/ImagePainter.js,bin/javax/swing/plaf/synth/ParsedSynthStyle.js,bin/javax/swing/plaf/synth/SynthComboPopup.js,bin/javax/swing/plaf/synth/SynthInternalFrameTitlePane.js,bin/javax/swing/plaf/synth/SynthSplitPaneDivider.js,bin/javax/swing/text/AbstractWriter.js,bin/javax/swing/text/AsyncBoxView.js,bin/javax/swing/text/ChangedCharSetException.js,bin/javax/swing/text/DefaultFormatterFactory.js,bin/javax/swing/text/DefaultTextUI.js,bin/javax/swing/text/ElementIterator.js,bin/javax/swing/text/GapContent.js,bin/javax/swing/text/GapVector.js,bin/javax/swing/text/GlyphPainter1.js,bin/javax/swing/text/GlyphPainter2.js,bin/javax/swing/text/IconView.js,bin/javax/swing/text/LayoutQueue.js,bin/javax/swing/text/MaskFormatter.js,bin/javax/swing/text/StringContent.js,bin/javax/swing/text/TableView.js,bin/javax/swing/text/TextLayoutStrategy.js,bin/javax/swing/text/WhitespaceBasedBreakIterator.js,bin/javax/swing/text/ZoneView.js,bin/javax/swing/text/html/AccessibleHTML.js,bin/javax/swing/text/html/BRView.js,bin/javax/swing/text/html/CommentView.js,bin/javax/swing/text/html/EditableView.js,bin/javax/swing/text/html/FormSubmitEvent.js,bin/javax/swing/text/html/FormView.js,bin/javax/swing/text/html/FrameSetView.js,bin/javax/swing/text/html/FrameView.js,bin/javax/swing/text/html/HRuleView.js,bin/javax/swing/text/html/HTMLFrameHyperlinkEvent.js,bin/javax/swing/text/html/HTMLWriter.js,bin/javax/swing/text/html/HiddenTagView.js,bin/javax/swing/text/html/ImageView.js,bin/javax/swing/text/html/InlineView.js,bin/javax/swing/text/html/IsindexView.js,bin/javax/swing/text/html/LineView.js,bin/javax/swing/text/html/ListView.js,bin/javax/swing/text/html/Map.js,bin/javax/swing/text/html/MinimalHTMLWriter.js,bin/javax/swing/text/html/NoFramesView.js,bin/javax/swing/text/html/ObjectView.js,bin/javax/swing/text/html/Option.js,bin/javax/swing/text/html/OptionComboBoxModel.js,bin/javax/swing/text/html/OptionListModel.js,bin/javax/swing/text/html/ParagraphView.js,bin/javax/swing/text/html/ResourceLoader.js,bin/javax/swing/text/html/TableView.js,bin/javax/swing/text/html/TextAreaDocument.js,bin/javax/swing/text/html/parser/AttributeList.js,bin/javax/swing/text/html/parser/ContentModel.js,bin/javax/swing/text/html/parser/ContentModelState.js,bin/javax/swing/text/html/parser/DTD.js,bin/javax/swing/text/html/parser/DTDConstants.js,bin/javax/swing/text/html/parser/DocumentParser.js,bin/javax/swing/text/html/parser/Element.js,bin/javax/swing/text/html/parser/Entity.js,bin/javax/swing/text/html/parser/Parser.js,bin/javax/swing/text/html/parser/ParserDelegator.js,bin/javax/swing/text/html/parser/ResourceLoader.js,bin/javax/swing/text/html/parser/TagElement.js,bin/javax/swing/text/html/parser/TagStack.js,bin/javax/swing/text/rtf/AbstractFilter.js,bin/javax/swing/text/rtf/Constants.js,bin/javax/swing/text/rtf/MockAttributeSet.js,bin/javax/swing/text/rtf/RTFAttribute.js,bin/javax/swing/text/rtf/RTFAttributes.js,bin/javax/swing/text/rtf/RTFEditorKit.js,bin/javax/swing/text/rtf/RTFGenerator.js,bin/javax/swing/text/rtf/RTFParser.js,bin/javax/swing/text/rtf/RTFReader.js,bin/javax/swing/tree/ExpandVetoException.js,bin/javax/swing/undo/StateEdit.js,bin/javax/swing/undo/StateEditable.js,bin/javax/swing/undo/UndoManager.js,bin/javax/swing/undo/UndoableEditSupport.js,bin/javax/xml/crypto/AlgorithmMethod.js,bin/javax/xml/crypto/Data.js,bin/javax/xml/crypto/KeySelector.js,bin/javax/xml/crypto/KeySelectorException.js,bin/javax/xml/crypto/KeySelectorResult.js,bin/javax/xml/crypto/MarshalException.js,bin/javax/xml/crypto/NoSuchMechanismException.js,bin/javax/xml/crypto/NodeSetData.js,bin/javax/xml/crypto/OctetStreamData.js,bin/javax/xml/crypto/URIDereferencer.js,bin/javax/xml/crypto/URIReference.js,bin/javax/xml/crypto/URIReferenceException.js,bin/javax/xml/crypto/XMLCryptoContext.js,bin/javax/xml/crypto/XMLStructure.js,bin/javax/xml/crypto/dom/DOMCryptoContext.js,bin/javax/xml/crypto/dom/DOMStructure.js,bin/javax/xml/crypto/dom/DOMURIReference.js,bin/javax/xml/crypto/dsig/CanonicalizationMethod.js,bin/javax/xml/crypto/dsig/DigestMethod.js,bin/javax/xml/crypto/dsig/Manifest.js,bin/javax/xml/crypto/dsig/Reference.js,bin/javax/xml/crypto/dsig/SignatureMethod.js,bin/javax/xml/crypto/dsig/SignatureProperties.js,bin/javax/xml/crypto/dsig/SignatureProperty.js,bin/javax/xml/crypto/dsig/SignedInfo.js,bin/javax/xml/crypto/dsig/Transform.js,bin/javax/xml/crypto/dsig/TransformException.js,bin/javax/xml/crypto/dsig/TransformService.js,bin/javax/xml/crypto/dsig/XMLObject.js,bin/javax/xml/crypto/dsig/XMLSignContext.js,bin/javax/xml/crypto/dsig/XMLSignature.js,bin/javax/xml/crypto/dsig/XMLSignatureException.js,bin/javax/xml/crypto/dsig/XMLSignatureFactory.js,bin/javax/xml/crypto/dsig/XMLValidateContext.js,bin/javax/xml/crypto/dsig/dom/DOMSignContext.js,bin/javax/xml/crypto/dsig/dom/DOMValidateContext.js,bin/javax/xml/crypto/dsig/keyinfo/KeyInfo.js,bin/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.js,bin/javax/xml/crypto/dsig/keyinfo/KeyName.js,bin/javax/xml/crypto/dsig/keyinfo/KeyValue.js,bin/javax/xml/crypto/dsig/keyinfo/PGPData.js,bin/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.js,bin/javax/xml/crypto/dsig/keyinfo/X509Data.js,bin/javax/xml/crypto/dsig/keyinfo/X509IssuerSerial.js,bin/javax/xml/crypto/dsig/spec/C14NMethodParameterSpec.js,bin/javax/xml/crypto/dsig/spec/DigestMethodParameterSpec.js,bin/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.js,bin/javax/xml/crypto/dsig/spec/HMACParameterSpec.js,bin/javax/xml/crypto/dsig/spec/SignatureMethodParameterSpec.js,bin/javax/xml/crypto/dsig/spec/TransformParameterSpec.js,bin/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.js,bin/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.js,bin/javax/xml/crypto/dsig/spec/XPathType.js,bin/javax/xml/crypto/dsig/spec/XSLTTransformParameterSpec.js,bin/org/ietf/jgss/ChannelBinding.js,bin/org/jcp/xml/dsig/internal/DigesterOutputStream.js,bin/org/jcp/xml/dsig/internal/MacOutputStream.js,bin/org/jcp/xml/dsig/internal/SignerOutputStream.js,bin/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.js,bin/org/jcp/xml/dsig/internal/dom/ApacheData.js,bin/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.js,bin/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.js,bin/org/jcp/xml/dsig/internal/dom/ApacheTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.js,bin/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14N11Method.js,bin/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.js,bin/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyName.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyValue.js,bin/org/jcp/xml/dsig/internal/dom/DOMManifest.js,bin/org/jcp/xml/dsig/internal/dom/DOMPGPData.js,bin/org/jcp/xml/dsig/internal/dom/DOMReference.js,bin/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.js,bin/org/jcp/xml/dsig/internal/dom/DOMStructure.js,bin/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.js,bin/org/jcp/xml/dsig/internal/dom/DOMTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.js,bin/org/jcp/xml/dsig/internal/dom/DOMUtils.js,bin/org/jcp/xml/dsig/internal/dom/DOMX509Data.js,bin/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.js,bin/org/jcp/xml/dsig/internal/dom/DOMXMLObject.js,bin/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.js,bin/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.js,bin/org/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.js,bin/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.js,bin/org/jcp/xml/dsig/internal/dom/Utils.js,bin/org/jcp/xml/dsig/internal/dom/XMLDSigRI.js,bin/sun/applet/AppletClassLoader.js,bin/sun/applet/AppletEvent.js,bin/sun/applet/AppletEventMulticaster.js,bin/sun/applet/AppletIOException.js,bin/sun/applet/AppletIllegalArgumentException.js,bin/sun/applet/AppletImageRef.js,bin/sun/applet/AppletListener.js,bin/sun/applet/AppletMessageHandler.js,bin/sun/applet/AppletObjectInputStream.js,bin/sun/applet/AppletPanel.js,bin/sun/applet/AppletProps.js,bin/sun/applet/AppletResourceLoader.js,bin/sun/applet/AppletSecurity.js,bin/sun/applet/AppletSecurityException.js,bin/sun/applet/AppletThreadGroup.js,bin/sun/applet/AppletViewer.js,bin/sun/applet/AppletViewerFactory.js,bin/sun/applet/AppletViewerPanel.js,bin/sun/applet/Main.js,bin/sun/applet/resources/MsgAppletViewer.js,bin/sun/applet/resources/MsgAppletViewer_de.js,bin/sun/applet/resources/MsgAppletViewer_es.js,bin/sun/applet/resources/MsgAppletViewer_fr.js,bin/sun/applet/resources/MsgAppletViewer_it.js,bin/sun/applet/resources/MsgAppletViewer_ja.js,bin/sun/applet/resources/MsgAppletViewer_ko.js,bin/sun/applet/resources/MsgAppletViewer_pt_BR.js,bin/sun/applet/resources/MsgAppletViewer_sv.js,bin/sun/applet/resources/MsgAppletViewer_zh_CN.js,bin/sun/applet/resources/MsgAppletViewer_zh_TW.js,bin/sun/audio/AudioData.js,bin/sun/audio/AudioDataStream.js,bin/sun/audio/AudioDevice.js,bin/sun/audio/AudioPlayer.js,bin/sun/audio/AudioSecurityAction.js,bin/sun/audio/AudioSecurityExceptionAction.js,bin/sun/audio/AudioStream.js,bin/sun/audio/AudioStreamSequence.js,bin/sun/audio/AudioTranslatorStream.js,bin/sun/audio/ContinuousAudioDataStream.js,bin/sun/audio/InvalidAudioFormatException.js,bin/sun/audio/NativeAudioStream.js,bin/sun/awt/AWTCharset.js,bin/sun/awt/AWTSecurityManager.js,bin/sun/awt/CharsetString.js,bin/sun/awt/ComponentAccessor.js,bin/sun/awt/CustomCursor.js,bin/sun/awt/FocusingTextField.js,bin/sun/awt/FontConfiguration.js,bin/sun/awt/FontDescriptor.js,bin/sun/awt/GlobalCursorManager.js,bin/sun/awt/HKSCS.js,bin/sun/awt/HorizBagLayout.js,bin/sun/awt/Mutex.js,bin/sun/awt/NativeLibLoader.js,bin/sun/awt/OrientableFlowLayout.js,bin/sun/awt/PaintEventDispatcher.js,bin/sun/awt/PlatformFont.js,bin/sun/awt/RepaintArea.js,bin/sun/awt/SunDisplayChanger.js,bin/sun/awt/Symbol.js,bin/sun/awt/TracedEventQueue.js,bin/sun/awt/VariableGridLayout.js,bin/sun/awt/VerticalBagLayout.js,bin/sun/awt/WindowAccessor.js,bin/sun/awt/WindowIDProvider.js,bin/sun/awt/datatransfer/ClipboardTransferable.js,bin/sun/awt/datatransfer/SunClipboard.js,bin/sun/awt/event/IgnorePaintEvent.js,bin/sun/awt/geom/ChainEnd.js,bin/sun/awt/geom/CurveLink.js,bin/sun/awt/geom/Edge.js,bin/sun/awt/geom/Order0.js,bin/sun/awt/geom/Order1.js,bin/sun/awt/geom/Order2.js,bin/sun/awt/geom/Order3.js,bin/sun/awt/im/CompositionAreaHandler.js,bin/sun/awt/im/InputMethodAdapter.js,bin/sun/awt/im/InputMethodJFrame.js,bin/sun/awt/im/InputMethodLocator.js,bin/sun/awt/im/InputMethodManager.js,bin/sun/awt/im/InputMethodPopupMenu.js,bin/sun/awt/image/BadDepthException.js,bin/sun/awt/image/BufImgSurfaceManager.js,bin/sun/awt/image/BufImgVolatileSurfaceManager.js,bin/sun/awt/image/BufferedImageDevice.js,bin/sun/awt/image/BufferedImageGraphicsConfig.js,bin/sun/awt/image/DataBufferNative.js,bin/sun/awt/image/GifImageDecoder.js,bin/sun/awt/image/ImageAccessException.js,bin/sun/awt/image/ImageConsumerQueue.js,bin/sun/awt/image/ImageDecoder.js,bin/sun/awt/image/ImageFetcher.js,bin/sun/awt/image/ImageFormatException.js,bin/sun/awt/image/JPEGImageDecoder.js,bin/sun/awt/image/NativeLibLoader.js,bin/sun/awt/image/OffScreenImage.js,bin/sun/awt/image/PNGImageDecoder.js,bin/sun/awt/image/PixelConverter.js,bin/sun/awt/image/VolatileSurfaceManager.js,bin/sun/awt/image/WritableRasterNative.js,bin/sun/awt/image/XbmImageDecoder.js,bin/sun/awt/shell/DefaultShellFolder.js,bin/sun/awt/shell/ShellFolderManager.js,bin/sun/dc/DuctusRenderingEngine.js,bin/sun/font/CMap.js,bin/sun/font/CharToGlyphMapper.js,bin/sun/font/CompositeFontDescriptor.js,bin/sun/font/CompositeGlyphMapper.js,bin/sun/font/CompositeStrike.js,bin/sun/font/DelegatingShape.js,bin/sun/font/ExtendedTextSourceLabel.js,bin/sun/font/FileFont.js,bin/sun/font/FileFontStrike.js,bin/sun/font/FontFamily.js,bin/sun/font/FontManagerNativeLibrary.js,bin/sun/font/FontRunIterator.js,bin/sun/font/FontScaler.js,bin/sun/font/FontScalerException.js,bin/sun/font/FontStrike.js,bin/sun/font/FontStrikeDesc.js,bin/sun/font/FontStrikeDisposer.js,bin/sun/font/FreetypeFontScaler.js,bin/sun/font/GlyphList.js,bin/sun/font/NullFontScaler.js,bin/sun/font/PhysicalFont.js,bin/sun/font/PhysicalStrike.js,bin/sun/font/Script.js,bin/sun/font/ScriptRun.js,bin/sun/font/ScriptRunData.js,bin/sun/font/StandardTextSource.js,bin/sun/font/StrikeCache.js,bin/sun/font/StrikeMetrics.js,bin/sun/font/SunLayoutEngine.js,bin/sun/font/TextRecord.js,bin/sun/font/TextSource.js,bin/sun/font/TextSourceLabel.js,bin/sun/font/TrueTypeFont.js,bin/sun/font/TrueTypeGlyphMapper.js,bin/sun/font/Type1Font.js,bin/sun/font/Type1GlyphMapper.js,bin/sun/font/Underline.js,bin/sun/instrument/InstrumentationImpl.js,bin/sun/instrument/TransformerManager.js,bin/sun/io/ByteToCharASCII.js,bin/sun/io/ByteToCharBig5.js,bin/sun/io/ByteToCharBig5_HKSCS.js,bin/sun/io/ByteToCharBig5_Solaris.js,bin/sun/io/ByteToCharConverter.js,bin/sun/io/ByteToCharCp037.js,bin/sun/io/ByteToCharCp1006.js,bin/sun/io/ByteToCharCp1025.js,bin/sun/io/ByteToCharCp1026.js,bin/sun/io/ByteToCharCp1046.js,bin/sun/io/ByteToCharCp1047.js,bin/sun/io/ByteToCharCp1097.js,bin/sun/io/ByteToCharCp1098.js,bin/sun/io/ByteToCharCp1112.js,bin/sun/io/ByteToCharCp1122.js,bin/sun/io/ByteToCharCp1123.js,bin/sun/io/ByteToCharCp1124.js,bin/sun/io/ByteToCharCp1140.js,bin/sun/io/ByteToCharCp1141.js,bin/sun/io/ByteToCharCp1142.js,bin/sun/io/ByteToCharCp1143.js,bin/sun/io/ByteToCharCp1144.js,bin/sun/io/ByteToCharCp1145.js,bin/sun/io/ByteToCharCp1146.js,bin/sun/io/ByteToCharCp1147.js,bin/sun/io/ByteToCharCp1148.js,bin/sun/io/ByteToCharCp1149.js,bin/sun/io/ByteToCharCp1250.js,bin/sun/io/ByteToCharCp1251.js,bin/sun/io/ByteToCharCp1252.js,bin/sun/io/ByteToCharCp1253.js,bin/sun/io/ByteToCharCp1254.js,bin/sun/io/ByteToCharCp1255.js,bin/sun/io/ByteToCharCp1256.js,bin/sun/io/ByteToCharCp1257.js,bin/sun/io/ByteToCharCp1258.js,bin/sun/io/ByteToCharCp1381.js,bin/sun/io/ByteToCharCp1383.js,bin/sun/io/ByteToCharCp273.js,bin/sun/io/ByteToCharCp277.js,bin/sun/io/ByteToCharCp278.js,bin/sun/io/ByteToCharCp280.js,bin/sun/io/ByteToCharCp284.js,bin/sun/io/ByteToCharCp285.js,bin/sun/io/ByteToCharCp297.js,bin/sun/io/ByteToCharCp33722.js,bin/sun/io/ByteToCharCp420.js,bin/sun/io/ByteToCharCp424.js,bin/sun/io/ByteToCharCp437.js,bin/sun/io/ByteToCharCp500.js,bin/sun/io/ByteToCharCp737.js,bin/sun/io/ByteToCharCp775.js,bin/sun/io/ByteToCharCp834.js,bin/sun/io/ByteToCharCp838.js,bin/sun/io/ByteToCharCp850.js,bin/sun/io/ByteToCharCp852.js,bin/sun/io/ByteToCharCp855.js,bin/sun/io/ByteToCharCp856.js,bin/sun/io/ByteToCharCp857.js,bin/sun/io/ByteToCharCp858.js,bin/sun/io/ByteToCharCp860.js,bin/sun/io/ByteToCharCp861.js,bin/sun/io/ByteToCharCp862.js,bin/sun/io/ByteToCharCp863.js,bin/sun/io/ByteToCharCp864.js,bin/sun/io/ByteToCharCp865.js,bin/sun/io/ByteToCharCp866.js,bin/sun/io/ByteToCharCp868.js,bin/sun/io/ByteToCharCp869.js,bin/sun/io/ByteToCharCp870.js,bin/sun/io/ByteToCharCp871.js,bin/sun/io/ByteToCharCp874.js,bin/sun/io/ByteToCharCp875.js,bin/sun/io/ByteToCharCp918.js,bin/sun/io/ByteToCharCp921.js,bin/sun/io/ByteToCharCp922.js,bin/sun/io/ByteToCharCp930.js,bin/sun/io/ByteToCharCp933.js,bin/sun/io/ByteToCharCp935.js,bin/sun/io/ByteToCharCp937.js,bin/sun/io/ByteToCharCp939.js,bin/sun/io/ByteToCharCp942.js,bin/sun/io/ByteToCharCp942C.js,bin/sun/io/ByteToCharCp943.js,bin/sun/io/ByteToCharCp943C.js,bin/sun/io/ByteToCharCp948.js,bin/sun/io/ByteToCharCp949.js,bin/sun/io/ByteToCharCp949C.js,bin/sun/io/ByteToCharCp950.js,bin/sun/io/ByteToCharCp964.js,bin/sun/io/ByteToCharCp970.js,bin/sun/io/ByteToCharDBCS_ASCII.js,bin/sun/io/ByteToCharDBCS_EBCDIC.js,bin/sun/io/ByteToCharDoubleByte.js,bin/sun/io/ByteToCharEUC.js,bin/sun/io/ByteToCharEUC_CN.js,bin/sun/io/ByteToCharEUC_JP.js,bin/sun/io/ByteToCharEUC_JP_LINUX.js,bin/sun/io/ByteToCharEUC_JP_Solaris.js,bin/sun/io/ByteToCharEUC_KR.js,bin/sun/io/ByteToCharEUC_TW.js,bin/sun/io/ByteToCharGB18030.js,bin/sun/io/ByteToCharGB18030DB.js,bin/sun/io/ByteToCharGBK.js,bin/sun/io/ByteToCharHKSCS.js,bin/sun/io/ByteToCharHKSCS_2001.js,bin/sun/io/ByteToCharISCII91.js,bin/sun/io/ByteToCharISO2022.js,bin/sun/io/ByteToCharISO2022CN.js,bin/sun/io/ByteToCharISO2022JP.js,bin/sun/io/ByteToCharISO2022KR.js,bin/sun/io/ByteToCharISO8859_1.js,bin/sun/io/ByteToCharISO8859_13.js,bin/sun/io/ByteToCharISO8859_15.js,bin/sun/io/ByteToCharISO8859_2.js,bin/sun/io/ByteToCharISO8859_3.js,bin/sun/io/ByteToCharISO8859_4.js,bin/sun/io/ByteToCharISO8859_5.js,bin/sun/io/ByteToCharISO8859_6.js,bin/sun/io/ByteToCharISO8859_7.js,bin/sun/io/ByteToCharISO8859_8.js,bin/sun/io/ByteToCharISO8859_9.js,bin/sun/io/ByteToCharJIS0201.js,bin/sun/io/ByteToCharJIS0208.js,bin/sun/io/ByteToCharJIS0208_Solaris.js,bin/sun/io/ByteToCharJIS0212.js,bin/sun/io/ByteToCharJIS0212_Solaris.js,bin/sun/io/ByteToCharJISAutoDetect.js,bin/sun/io/ByteToCharJohab.js,bin/sun/io/ByteToCharKOI8_R.js,bin/sun/io/ByteToCharMS874.js,bin/sun/io/ByteToCharMS932.js,bin/sun/io/ByteToCharMS932DB.js,bin/sun/io/ByteToCharMS936.js,bin/sun/io/ByteToCharMS949.js,bin/sun/io/ByteToCharMS950.js,bin/sun/io/ByteToCharMS950_HKSCS.js,bin/sun/io/ByteToCharMacArabic.js,bin/sun/io/ByteToCharMacCentralEurope.js,bin/sun/io/ByteToCharMacCroatian.js,bin/sun/io/ByteToCharMacCyrillic.js,bin/sun/io/ByteToCharMacDingbat.js,bin/sun/io/ByteToCharMacGreek.js,bin/sun/io/ByteToCharMacHebrew.js,bin/sun/io/ByteToCharMacIceland.js,bin/sun/io/ByteToCharMacRoman.js,bin/sun/io/ByteToCharMacRomania.js,bin/sun/io/ByteToCharMacSymbol.js,bin/sun/io/ByteToCharMacThai.js,bin/sun/io/ByteToCharMacTurkish.js,bin/sun/io/ByteToCharMacUkraine.js,bin/sun/io/ByteToCharPCK.js,bin/sun/io/ByteToCharSJIS.js,bin/sun/io/ByteToCharSingleByte.js,bin/sun/io/ByteToCharTIS620.js,bin/sun/io/ByteToCharUTF16.js,bin/sun/io/ByteToCharUTF8.js,bin/sun/io/ByteToCharUnicode.js,bin/sun/io/ByteToCharUnicodeBig.js,bin/sun/io/ByteToCharUnicodeBigUnmarked.js,bin/sun/io/ByteToCharUnicodeLittle.js,bin/sun/io/ByteToCharUnicodeLittleUnmarked.js,bin/sun/io/CharToByteASCII.js,bin/sun/io/CharToByteBig5.js,bin/sun/io/CharToByteBig5_HKSCS.js,bin/sun/io/CharToByteBig5_Solaris.js,bin/sun/io/CharToByteConverter.js,bin/sun/io/CharToByteCp037.js,bin/sun/io/CharToByteCp1006.js,bin/sun/io/CharToByteCp1025.js,bin/sun/io/CharToByteCp1026.js,bin/sun/io/CharToByteCp1046.js,bin/sun/io/CharToByteCp1047.js,bin/sun/io/CharToByteCp1097.js,bin/sun/io/CharToByteCp1098.js,bin/sun/io/CharToByteCp1112.js,bin/sun/io/CharToByteCp1122.js,bin/sun/io/CharToByteCp1123.js,bin/sun/io/CharToByteCp1124.js,bin/sun/io/CharToByteCp1140.js,bin/sun/io/CharToByteCp1141.js,bin/sun/io/CharToByteCp1142.js,bin/sun/io/CharToByteCp1143.js,bin/sun/io/CharToByteCp1144.js,bin/sun/io/CharToByteCp1145.js,bin/sun/io/CharToByteCp1146.js,bin/sun/io/CharToByteCp1147.js,bin/sun/io/CharToByteCp1148.js,bin/sun/io/CharToByteCp1149.js,bin/sun/io/CharToByteCp1250.js,bin/sun/io/CharToByteCp1251.js,bin/sun/io/CharToByteCp1252.js,bin/sun/io/CharToByteCp1253.js,bin/sun/io/CharToByteCp1254.js,bin/sun/io/CharToByteCp1255.js,bin/sun/io/CharToByteCp1256.js,bin/sun/io/CharToByteCp1257.js,bin/sun/io/CharToByteCp1258.js,bin/sun/io/CharToByteCp1381.js,bin/sun/io/CharToByteCp1383.js,bin/sun/io/CharToByteCp273.js,bin/sun/io/CharToByteCp277.js,bin/sun/io/CharToByteCp278.js,bin/sun/io/CharToByteCp280.js,bin/sun/io/CharToByteCp284.js,bin/sun/io/CharToByteCp285.js,bin/sun/io/CharToByteCp297.js,bin/sun/io/CharToByteCp33722.js,bin/sun/io/CharToByteCp420.js,bin/sun/io/CharToByteCp424.js,bin/sun/io/CharToByteCp437.js,bin/sun/io/CharToByteCp500.js,bin/sun/io/CharToByteCp737.js,bin/sun/io/CharToByteCp775.js,bin/sun/io/CharToByteCp834.js,bin/sun/io/CharToByteCp838.js,bin/sun/io/CharToByteCp850.js,bin/sun/io/CharToByteCp852.js,bin/sun/io/CharToByteCp855.js,bin/sun/io/CharToByteCp856.js,bin/sun/io/CharToByteCp857.js,bin/sun/io/CharToByteCp858.js,bin/sun/io/CharToByteCp860.js,bin/sun/io/CharToByteCp861.js,bin/sun/io/CharToByteCp862.js,bin/sun/io/CharToByteCp863.js,bin/sun/io/CharToByteCp864.js,bin/sun/io/CharToByteCp865.js,bin/sun/io/CharToByteCp866.js,bin/sun/io/CharToByteCp868.js,bin/sun/io/CharToByteCp869.js,bin/sun/io/CharToByteCp870.js,bin/sun/io/CharToByteCp871.js,bin/sun/io/CharToByteCp874.js,bin/sun/io/CharToByteCp875.js,bin/sun/io/CharToByteCp918.js,bin/sun/io/CharToByteCp921.js,bin/sun/io/CharToByteCp922.js,bin/sun/io/CharToByteCp930.js,bin/sun/io/CharToByteCp933.js,bin/sun/io/CharToByteCp935.js,bin/sun/io/CharToByteCp937.js,bin/sun/io/CharToByteCp939.js,bin/sun/io/CharToByteCp942.js,bin/sun/io/CharToByteCp942C.js,bin/sun/io/CharToByteCp943.js,bin/sun/io/CharToByteCp943C.js,bin/sun/io/CharToByteCp948.js,bin/sun/io/CharToByteCp949.js,bin/sun/io/CharToByteCp949C.js,bin/sun/io/CharToByteCp950.js,bin/sun/io/CharToByteCp964.js,bin/sun/io/CharToByteCp970.js,bin/sun/io/CharToByteDBCS_ASCII.js,bin/sun/io/CharToByteDBCS_EBCDIC.js,bin/sun/io/CharToByteDoubleByte.js,bin/sun/io/CharToByteEUC.js,bin/sun/io/CharToByteEUC_CN.js,bin/sun/io/CharToByteEUC_JP.js,bin/sun/io/CharToByteEUC_JP_LINUX.js,bin/sun/io/CharToByteEUC_JP_Solaris.js,bin/sun/io/CharToByteEUC_KR.js,bin/sun/io/CharToByteEUC_TW.js,bin/sun/io/CharToByteGB18030.js,bin/sun/io/CharToByteGBK.js,bin/sun/io/CharToByteHKSCS.js,bin/sun/io/CharToByteHKSCS_2001.js,bin/sun/io/CharToByteISCII91.js,bin/sun/io/CharToByteISO2022.js,bin/sun/io/CharToByteISO2022CN_CNS.js,bin/sun/io/CharToByteISO2022CN_GB.js,bin/sun/io/CharToByteISO2022JP.js,bin/sun/io/CharToByteISO2022KR.js,bin/sun/io/CharToByteISO8859_1.js,bin/sun/io/CharToByteISO8859_13.js,bin/sun/io/CharToByteISO8859_15.js,bin/sun/io/CharToByteISO8859_2.js,bin/sun/io/CharToByteISO8859_3.js,bin/sun/io/CharToByteISO8859_4.js,bin/sun/io/CharToByteISO8859_5.js,bin/sun/io/CharToByteISO8859_6.js,bin/sun/io/CharToByteISO8859_7.js,bin/sun/io/CharToByteISO8859_8.js,bin/Native.js,bin/Security.js,bin/Toolkit.js,bin/PriviledgedAction.js,bin/PrivilegedAction.js,bin/JSToolkit.js,bin/ToolkitNative.js,bin/test/JSToolkit.js,bin/test/PrivilegedAction.js,bin/test/Security.js,bin/test/Toolkit.js,bin/test/AccessController.js,bin/CellListener.js,bin/LifeCells.js,bin/MainWindow.js,bin/Neighbor.js,bin/SimulationListener.js,bin/TanSugd3.js,bin/TanSugd3S.js,bin/test/Point2D.js,bin/jalview/ws/uimodel/PDBRestResponse.js,bin/jalview/ws/uimodel/PDBRestRequest.js,bin/jalview/ws/uimodel/AlignAnalysisUIText.js,bin/jalview/ws/seqfetcher/DbSourceProxyImpl.js,bin/jalview/ws/seqfetcher/DbSourceProxy.js,bin/jalview/ws/seqfetcher/ASequenceFetcher.js,bin/jalview/ws/rest/params/Tree.js,bin/jalview/ws/rest/params/SeqVector.js,bin/jalview/ws/rest/params/SeqIdVector.js,bin/jalview/ws/rest/params/SeqGroupIndexVector.js,bin/jalview/ws/rest/params/JobConstant.js,bin/jalview/ws/rest/params/AnnotationFile.js,bin/jalview/ws/rest/params/Alignment.js,bin/jalview/ws/rest/RestServiceDescription.js,bin/jalview/ws/rest/RestJobThread.js,bin/jalview/ws/rest/RestJob.js,bin/jalview/ws/rest/RestClient.js,bin/jalview/ws/rest/NoValidInputDataException.js,bin/jalview/ws/rest/InputType.js,bin/jalview/ws/rest/HttpResultSet.js,bin/jalview/ws/rest/AlignmentProcessor.js,bin/jalview/ws/params/simple/StringChoiceParameter.js,bin/jalview/ws/params/simple/Parameter.js,bin/jalview/ws/params/simple/Option.js,bin/jalview/ws/params/simple/IntegerParameter.js,bin/jalview/ws/params/simple/BooleanOption.js,bin/jalview/ws/params/WsParamSetI.js,bin/jalview/ws/params/ValueConstrainI.js,bin/jalview/ws/params/ParameterI.js,bin/jalview/ws/params/ParamManager.js,bin/jalview/ws/params/ParamDatastoreI.js,bin/jalview/ws/params/OptionI.js,bin/jalview/ws/params/InvalidArgumentException.js,bin/jalview/ws/params/AutoCalcSetting.js,bin/jalview/ws/params/ArgumentI.js,bin/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.js,bin/jalview/ws/jws2/jabaws2/Jws2Instance.js,bin/jalview/ws/jws2/dm/JabaWsParamSet.js,bin/jalview/ws/jws2/dm/JabaValueConstrain.js,bin/jalview/ws/jws2/dm/JabaParameter.js,bin/jalview/ws/jws2/dm/JabaOption.js,bin/jalview/ws/jws2/dm/AAConSettings.js,bin/jalview/ws/jws2/SequenceAnnotationWSClient.js,bin/jalview/ws/jws2/RNAalifoldClient.js,bin/jalview/ws/jws2/ParameterUtils.js,bin/jalview/ws/jws2/MsaWSThread.js,bin/jalview/ws/jws2/MsaWSClient.js,bin/jalview/ws/jws2/Jws2Discoverer.js,bin/jalview/ws/jws2/Jws2Client.js,bin/jalview/ws/jws2/JabawsMsaInterfaceAlignCalcWorker.js,bin/jalview/ws/jws2/JabawsCalcWorker.js,bin/jalview/ws/jws2/JabaWsServerQuery.js,bin/jalview/ws/jws2/JabaPreset.js,bin/jalview/ws/jws2/JabaParamStore.js,bin/jalview/ws/jws2/JWs2Job.js,bin/jalview/ws/jws2/JPred301Client.js,bin/jalview/ws/jws2/AbstractJabaCalcWorker.js,bin/jalview/ws/jws2/AWS2Thread.js,bin/jalview/ws/jws2/AADisorderClient.js,bin/jalview/ws/jws2/AAConClient.js,bin/jalview/ws/jws1/WSJob.js,bin/jalview/ws/jws1/WS1Client.js,bin/jalview/ws/jws1/SeqSearchWSThread.js,bin/jalview/ws/jws1/SeqSearchWSClient.js,bin/jalview/ws/jws1/MsaWSThread.js,bin/jalview/ws/jws1/MsaWSClient.js,bin/jalview/ws/jws1/JWS1Thread.js,bin/jalview/ws/jws1/JPredThread.js,bin/jalview/ws/jws1/JPredClient.js,bin/jalview/ws/jws1/Discoverer.js,bin/jalview/ws/jws1/Annotate3D.js,bin/jalview/ws/io/mime/MimeTypes.js,bin/jalview/ws/io/mime/JalviewMimeContentHandler.js,bin/jalview/ws/io/mime/HttpContentHandler.js,bin/jalview/ws/ebi/EBIFetchClient.js,bin/jalview/ws/dbsources/das/datamodel/JalviewSource.js,bin/jalview/ws/dbsources/das/datamodel/DasSourceRegistry.js,bin/jalview/ws/dbsources/das/datamodel/DasSequenceSource.js,bin/jalview/ws/dbsources/das/api/jalviewSourceI.js,bin/jalview/ws/dbsources/das/api/DasSourceRegistryI.js,bin/jalview/ws/dbsources/Xfam.js,bin/jalview/ws/dbsources/UnprotName.js,bin/jalview/ws/dbsources/Uniprot.js,bin/jalview/ws/dbsources/RfamSeed.js,bin/jalview/ws/dbsources/RfamFull.js,bin/jalview/ws/dbsources/Rfam.js,bin/jalview/ws/dbsources/PfamSeed.js,bin/jalview/ws/dbsources/PfamFull.js,bin/jalview/ws/dbsources/Pfam.js,bin/jalview/ws/dbsources/Pdb.js,bin/jalview/ws/dbsources/PDBRestClient.js,bin/jalview/ws/dbsources/GeneDbSource.js,bin/jalview/ws/dbsources/EmblXmlSource.js,bin/jalview/ws/dbsources/EmblSource.js,bin/jalview/ws/dbsources/EmblCdsSouce.js,bin/jalview/ws/dbsources/EbiFileRetrievedProxy.js,bin/jalview/ws/WSMenuEntryProviderI.js,bin/jalview/ws/WSClientI.js,bin/jalview/ws/WSClient.js,bin/jalview/ws/SequenceFetcher.js,bin/jalview/ws/JobStateSummary.js,bin/jalview/ws/HttpClientUtils.js,bin/jalview/ws/DasSequenceFeatureFetcher.js,bin/jalview/ws/DBRefFetcher.js,bin/jalview/ws/AWsJob.js,bin/jalview/ws/AWSThread.js,bin/jalview/workers/StrucConsensusThread.js,bin/jalview/workers/ConservationThread.js,bin/jalview/workers/ConsensusThread.js,bin/jalview/workers/ComplementConsensusThread.js,bin/jalview/workers/AlignCalcWorker.js,bin/jalview/workers/AlignCalcManager.js,bin/jalview/viewmodel/styles/ViewStyle.js,bin/jalview/viewmodel/seqfeatures/FeaturesDisplayed.js,bin/jalview/viewmodel/seqfeatures/FeatureSettingsModel.js,bin/jalview/viewmodel/seqfeatures/FeatureRendererSettings.js,bin/jalview/viewmodel/seqfeatures/FeatureRendererModel.js,bin/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.js,bin/jalview/viewmodel/PCAModel.js,bin/jalview/viewmodel/AlignmentViewport.js,bin/jalview/util/jarInputStreamProvider.js,bin/jalview/util/UrlLink.js,bin/jalview/util/TableSorter.js,bin/jalview/util/StringUtils.js,bin/jalview/util/ShiftList.js,bin/jalview/util/ReverseListIterator.js,bin/jalview/util/QuickSort.js,bin/jalview/util/Platform.js,bin/jalview/util/ParseHtmlBodyAndLinks.js,bin/jalview/util/MessageManager.js,bin/jalview/util/MappingUtils.js,bin/jalview/util/MapList.js,bin/jalview/util/ImageMaker.js,bin/jalview/util/GroupUrlLink.js,bin/jalview/util/Format.js,bin/jalview/util/DBRefUtils.js,bin/jalview/util/Comparison.js,bin/jalview/util/ColorUtils.js,bin/jalview/util/BrowserLauncher.js,bin/jalview/util/AWTConsole.js,bin/jalview/structures/models/SequenceStructureBindingModel.js,bin/jalview/structures/models/AAStructureBindingModel.js,bin/jalview/structure/VamsasSource.js,bin/jalview/structure/VamsasListener.js,bin/jalview/structure/StructureSelectionManager.js,bin/jalview/structure/StructureMappingcommandSet.js,bin/jalview/structure/StructureMapping.js,bin/jalview/structure/StructureListener.js,bin/jalview/structure/SequenceListener.js,bin/jalview/structure/SelectionSource.js,bin/jalview/structure/SelectionListener.js,bin/jalview/structure/SecondaryStructureListener.js,bin/jalview/structure/CommandListener.js,bin/jalview/structure/AtomSpec.js,bin/jalview/structure/AlignmentViewPanelListener.js,bin/jalview/schemes/ZappoColourScheme.js,bin/jalview/schemes/UserColourScheme.js,bin/jalview/schemes/TurnColourScheme.js,bin/jalview/schemes/TaylorColourScheme.js,bin/jalview/schemes/TCoffeeColourScheme.js,bin/jalview/schemes/StrandColourScheme.js,bin/jalview/schemes/ScoreMatrix.js,bin/jalview/schemes/ScoreColourScheme.js,bin/jalview/schemes/ResidueProperties.js,bin/jalview/schemes/ResidueColourScheme.js,bin/jalview/schemes/RNAInteractionColourScheme.js,bin/jalview/schemes/RNAHelicesColourChooser.js,bin/jalview/schemes/RNAHelicesColour.js,bin/jalview/schemes/PurinePyrimidineColourScheme.js,bin/jalview/schemes/PIDColourScheme.js,bin/jalview/schemes/NucleotideColourScheme.js,bin/jalview/schemes/HydrophobicColourScheme.js,bin/jalview/schemes/HelixColourScheme.js,bin/jalview/schemes/GraduatedColor.js,bin/jalview/schemes/FollowerColourScheme.js,bin/jalview/schemes/CovariationColourScheme.js,bin/jalview/schemes/Consensus.js,bin/jalview/schemes/ColourSchemeProperty.js,bin/jalview/schemes/ColourSchemeI.js,bin/jalview/schemes/ClustalxColourScheme.js,bin/jalview/schemes/BuriedColourScheme.js,bin/jalview/schemes/Blosum62ColourScheme.js,bin/jalview/schemes/AnnotationColourGradient.js,bin/jalview/schemabinding/version2/descriptors/WebServiceParameterSetDescriptor.js,bin/jalview/schemabinding/version2/descriptors/ViewportDescriptor.js,bin/jalview/schemabinding/version2/descriptors/VamsasModelDescriptor.js,bin/jalview/schemabinding/version2/descriptors/VAMSASDescriptor.js,bin/jalview/schemabinding/version2/descriptors/UserColoursDescriptor.js,bin/jalview/schemabinding/version2/descriptors/UserColourSchemeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/TreeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/ThresholdLineDescriptor.js,bin/jalview/schemabinding/version2/descriptors/StructureStateDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SettingDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceTypeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceSetPropertiesDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceSetDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SecondaryStructureDescriptor.js,bin/jalview/schemabinding/version2/descriptors/RnaViewerDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PropertyDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PdbidsDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PdbentryItemDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PdbentryDescriptor.js,bin/jalview/schemabinding/version2/descriptors/OtherDataDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MappingDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MappingChoiceDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MapListTypeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MapListToDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MapListFromDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JalviewUserColoursDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JalviewModelDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JSeqDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JGroupDescriptor.js,bin/jalview/schemabinding/version2/descriptors/HiddenColumnsDescriptor.js,bin/jalview/schemabinding/version2/descriptors/GroupDescriptor.js,bin/jalview/schemabinding/version2/descriptors/FeaturesDescriptor.js,bin/jalview/schemabinding/version2/descriptors/FeatureSettingsDescriptor.js,bin/jalview/schemabinding/version2/descriptors/FeatureDescriptor.js,bin/jalview/schemabinding/version2/descriptors/DBRefDescriptor.js,bin/jalview/schemabinding/version2/descriptors/ColourDescriptor.js,bin/jalview/schemabinding/version2/descriptors/CalcIdParamDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationElementDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationColourSchemeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AlcodonFrameDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AlcodonDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AlcodMapDescriptor.js,bin/jalview/schemabinding/version2/WebServiceParameterSet.js,bin/jalview/schemabinding/version2/Viewport.js,bin/jalview/schemabinding/version2/VamsasModel.js,bin/jalview/schemabinding/version2/VAMSAS.js,bin/jalview/schemabinding/version2/UserColours.js,bin/jalview/schemabinding/version2/UserColourScheme.js,bin/jalview/schemabinding/version2/Tree.js,bin/jalview/schemabinding/version2/ThresholdLine.js,bin/jalview/schemabinding/version2/StructureState.js,bin/jalview/schemabinding/version2/Setting.js,bin/jalview/schemabinding/version2/SequenceType.js,bin/jalview/schemabinding/version2/SequenceSetProperties.js,bin/jalview/schemabinding/version2/SequenceSet.js,bin/jalview/schemabinding/version2/Sequence.js,bin/jalview/schemabinding/version2/SecondaryStructure.js,bin/jalview/schemabinding/version2/RnaViewer.js,bin/jalview/schemabinding/version2/Property.js,bin/jalview/schemabinding/version2/Pdbids.js,bin/jalview/schemabinding/version2/PdbentryItem.js,bin/jalview/schemabinding/version2/Pdbentry.js,bin/jalview/schemabinding/version2/OtherData.js,bin/jalview/schemabinding/version2/MappingChoice.js,bin/jalview/schemabinding/version2/Mapping.js,bin/jalview/schemabinding/version2/MapListType.js,bin/jalview/schemabinding/version2/MapListTo.js,bin/jalview/schemabinding/version2/MapListFrom.js,bin/jalview/schemabinding/version2/JalviewUserColours.js,bin/jalview/schemabinding/version2/JalviewModelSequence.js,bin/jalview/schemabinding/version2/JalviewModel.js,bin/jalview/schemabinding/version2/JSeq.js,bin/jalview/schemabinding/version2/JGroup.js,bin/jalview/schemabinding/version2/HiddenColumns.js,bin/jalview/schemabinding/version2/Group.js,bin/jalview/schemabinding/version2/Features.js,bin/jalview/schemabinding/version2/FeatureSettings.js,bin/jalview/schemabinding/version2/Feature.js,bin/jalview/schemabinding/version2/DBRef.js,bin/jalview/schemabinding/version2/Colour.js,bin/jalview/schemabinding/version2/CalcIdParam.js,bin/jalview/schemabinding/version2/AnnotationElement.js,bin/jalview/schemabinding/version2/AnnotationColours.js,bin/jalview/schemabinding/version2/AnnotationColourScheme.js,bin/jalview/schemabinding/version2/Annotation.js,bin/jalview/schemabinding/version2/AlcodonFrame.js,bin/jalview/schemabinding/version2/Alcodon.js,bin/jalview/schemabinding/version2/AlcodMap.js,bin/jalview/rest/RestHandler.js,bin/jalview/renderer/seqfeatures/FeatureRenderer.js,bin/jalview/renderer/AwtRenderPanelI.js,bin/jalview/renderer/AnnotationRenderer.js,bin/jalview/math/RotatableMatrix.js,bin/jalview/math/Matrix.js,bin/jalview/math/AlignmentDimension.js,bin/jalview/json/binding/v1/SequencePojo.js,bin/jalview/json/binding/v1/SequenceGrpPojo.js,bin/jalview/json/binding/v1/SequenceFeaturesPojo.js,bin/jalview/json/binding/v1/BioJSRepositoryPojo.js,bin/jalview/json/binding/v1/BioJSReleasePojo.js,bin/jalview/json/binding/v1/AppSettingsPojo.js,bin/jalview/json/binding/v1/AnnotationPojo.js,bin/jalview/json/binding/v1/AlignmentPojo.js,bin/jalview/json/binding/v1/AlignmentAnnotationPojo.js,bin/jalview/jbgui/PDBDocFieldPreferences.js,bin/jalview/jbgui/GWsPreferences.js,bin/jalview/jbgui/GWebserviceInfo.js,bin/jalview/jbgui/GUserDefinedColours.js,bin/jalview/jbgui/GTreePanel.js,bin/jalview/jbgui/GStructureViewer.js,bin/jalview/jbgui/GStructureChooser.js,bin/jalview/jbgui/GSplitFrame.js,bin/jalview/jbgui/GSliderPanel.js,bin/jalview/jbgui/GSequenceLink.js,bin/jalview/jbgui/GRnaStructureViewer.js,bin/jalview/jbgui/GRestServiceEditorPane.js,bin/jalview/jbgui/GRestInputParamEditDialog.js,bin/jalview/jbgui/GPreferences.js,bin/jalview/jbgui/GPairwiseAlignPanel.js,bin/jalview/jbgui/GPDBSearchPanel.js,bin/jalview/jbgui/GPCAPanel.js,bin/jalview/jbgui/GFontChooser.js,bin/jalview/jbgui/GFinder.js,bin/jalview/jbgui/GDesktop.js,bin/jalview/jbgui/GDasSourceBrowser.js,bin/jalview/jbgui/GCutAndPasteTransfer.js,bin/jalview/jbgui/GCutAndPasteHtmlTransfer.js,bin/jalview/jbgui/GAlignmentPanel.js,bin/jalview/jbgui/GAlignFrame.js,bin/jalview/jbgui/GAlignExportSettings.js,bin/jalview/javascript/MouseOverStructureListener.js,bin/jalview/javascript/MouseOverListener.js,bin/jalview/javascript/JsSelectionSender.js,bin/jalview/javascript/JsCallBack.js,bin/jalview/javascript/JalviewLiteJsApi.js,bin/jalview/javascript/JSFunctionExec.js,bin/jalview/io/vamsas/Tree.js,bin/jalview/io/vamsas/Sequencemapping.js,bin/jalview/io/vamsas/Sequencefeature.js,bin/jalview/io/vamsas/Rangetype.js,bin/jalview/io/vamsas/LocalDocSyncObject.js,bin/jalview/io/vamsas/Dbref.js,bin/jalview/io/vamsas/DatastoreRegistry.js,bin/jalview/io/vamsas/DatastoreItem.js,bin/jalview/io/vamsas/Datasetsequence.js,bin/jalview/io/packed/SimpleDataProvider.js,bin/jalview/io/packed/ParsePackedSet.js,bin/jalview/io/packed/JalviewDataset.js,bin/jalview/io/packed/DataProvider.js,bin/jalview/io/WSWUBlastClient.js,bin/jalview/io/VamsasAppDatastore.js,bin/jalview/io/TCoffeeScoreFile.js,bin/jalview/io/StockholmFile.js,bin/jalview/io/SimpleBlastFile.js,bin/jalview/io/SequenceAnnotationReport.js,bin/jalview/io/RnamlFile.js,bin/jalview/io/PileUpfile.js,bin/jalview/io/PhylipFile.js,bin/jalview/io/PfamFile.js,bin/jalview/io/PIRFile.js,bin/jalview/io/NewickFile.js,bin/jalview/io/ModellerDescription.js,bin/jalview/io/MatrixFile.js,bin/jalview/io/MSFfile.js,bin/jalview/io/JnetAnnotationMaker.js,bin/jalview/io/JalviewFileView.js,bin/jalview/io/JalviewFileFilter.js,bin/jalview/io/JalviewFileChooser.js,bin/jalview/io/JSONFile.js,bin/jalview/io/JPredFile.js,bin/jalview/io/InputStreamParser.js,bin/jalview/io/IdentifyFile.js,bin/jalview/io/HtmlSvgOutput.js,bin/jalview/io/HtmlFile.js,bin/jalview/io/HTMLOutput.js,bin/jalview/io/Gff3File.js,bin/jalview/io/FormatAdapter.js,bin/jalview/io/FileParse.js,bin/jalview/io/FileLoader.js,bin/jalview/io/FeaturesFile.js,bin/jalview/io/FastaFile.js,bin/jalview/io/DBRefFile.js,bin/jalview/io/ClustalFile.js,bin/jalview/io/ClansFile.js,bin/jalview/io/BioJsHTMLOutput.js,bin/jalview/io/BLCFile.js,bin/jalview/io/AppletFormatAdapter.js,bin/jalview/io/AnnotationFile.js,bin/jalview/io/AlignmentProperties.js,bin/jalview/io/AlignFile.js,bin/jalview/io/AMSAFile.js,bin/jalview/httpserver/HttpServer.js,bin/jalview/httpserver/AbstractRequestHandler.js,bin/jalview/gui/WsPreferences.js,bin/jalview/gui/WsParamSetManager.js,bin/jalview/gui/WsJobParameters.js,bin/jalview/gui/WebserviceInfo.js,bin/jalview/gui/ViewSelectionMenu.js,bin/jalview/gui/VamsasApplication.js,bin/jalview/gui/UserQuestionnaireCheck.js,bin/jalview/gui/UserDefinedColours.js,bin/jalview/gui/TreePanel.js,bin/jalview/gui/TreeCanvas.js,bin/jalview/gui/TextColourChooser.js,bin/jalview/gui/StructureViewerBase.js,bin/jalview/gui/StructureViewer.js,bin/jalview/gui/StructureChooser.js,bin/jalview/gui/SplitFrame.js,bin/jalview/gui/SplashScreen.js,bin/jalview/gui/SliderPanel.js,bin/jalview/gui/SequenceRenderer.js,bin/jalview/gui/SequenceFetcher.js,bin/jalview/gui/SeqPanel.js,bin/jalview/gui/SeqCanvas.js,bin/jalview/gui/ScalePanel.js,bin/jalview/gui/SVGOptions.js,bin/jalview/gui/RotatableCanvas.js,bin/jalview/gui/RestServiceEditorPane.js,bin/jalview/gui/RestInputParamEditDialog.js,bin/jalview/gui/RedundancyPanel.js,bin/jalview/gui/PromptUserConfig.js,bin/jalview/gui/ProgressBar.js,bin/jalview/gui/Preferences.js,bin/jalview/gui/PopupMenu.js,bin/jalview/gui/PairwiseAlignPanel.js,bin/jalview/gui/PaintRefresher.js,bin/jalview/gui/PDBSearchPanel.js,bin/jalview/gui/PCAPanel.js,bin/jalview/gui/OverviewPanel.js,bin/jalview/gui/OptsParametersContainerI.js,bin/jalview/gui/OptsAndParamsPage.js,bin/jalview/gui/OOMWarning.js,bin/jalview/gui/MenuChooser.js,bin/jalview/gui/JvSwingUtils.js,bin/jalview/gui/JalviewDialog.js,bin/jalview/gui/JalviewChimeraBindingModel.js,bin/jalview/gui/JalviewChangeSupport.js,bin/jalview/gui/JalviewAppender.js,bin/jalview/gui/Jalview2XML_V1.js,bin/jalview/gui/Jalview2XML.js,bin/jalview/gui/JDatabaseTree.js,bin/jalview/gui/IdwidthAdjuster.js,bin/jalview/gui/IdPanel.js,bin/jalview/gui/IdCanvas.js,bin/jalview/gui/IProgressIndicatorHandler.js,bin/jalview/gui/IProgressIndicator.js,bin/jalview/gui/Help.js,bin/jalview/gui/HTMLOptions.js,bin/jalview/gui/FontChooser.js,bin/jalview/gui/Finder.js,bin/jalview/gui/FeatureSettings.js,bin/jalview/gui/FeatureRenderer.js,bin/jalview/gui/FeatureColourChooser.js,bin/jalview/gui/EditNameDialog.js,bin/jalview/gui/EPSOptions.js,bin/jalview/gui/Desktop.js,bin/jalview/gui/DasSourceBrowser.js,bin/jalview/gui/CutAndPasteTransfer.js,bin/jalview/gui/CutAndPasteHtmlTransfer.js,bin/jalview/gui/Console.js,bin/jalview/gui/ChimeraViewFrame.js,bin/jalview/gui/BlogReader.js,bin/jalview/gui/AssociatePdbFileWithSeq.js,bin/jalview/gui/AppVarnaBinding.js,bin/jalview/gui/AppVarna.js,bin/jalview/gui/AppJmolBinding.js,bin/jalview/gui/AppJmol.js,bin/jalview/gui/AnnotationRowFilter.js,bin/jalview/gui/AnnotationPanel.js,bin/jalview/gui/AnnotationLabels.js,bin/jalview/gui/AnnotationExporter.js,bin/jalview/gui/AnnotationColumnChooser.js,bin/jalview/gui/AnnotationColourChooser.js,bin/jalview/gui/AnnotationChooser.js,bin/jalview/gui/AlignmentPanel.js,bin/jalview/gui/AlignViewport.js,bin/jalview/gui/AlignFrame.js,bin/jalview/gui/AlignExportSettings.js,bin/jalview/ext/varna/VarnaCommands.js,bin/jalview/ext/varna/RnaModel.js,bin/jalview/ext/varna/JalviewVarnaBinding.js,bin/jalview/ext/rbvi/chimera/JalviewChimeraBinding.js,bin/jalview/ext/rbvi/chimera/ChimeraListener.js,bin/jalview/ext/rbvi/chimera/ChimeraCommands.js,bin/jalview/ext/paradise/Annotate3D.js,bin/jalview/ext/jmol/PDBFileWithJmol.js,bin/jalview/ext/jmol/JmolCommands.js,bin/jalview/ext/jmol/JalviewJmolBinding.js,bin/jalview/exceptions/NoFileSelectedException.js,bin/jalview/exceptions/JalviewException.js,bin/jalview/datamodel/xdb/embl/Qualifier.js,bin/jalview/datamodel/xdb/embl/EmblSequence.js,bin/jalview/datamodel/xdb/embl/EmblFile.js,bin/jalview/datamodel/xdb/embl/EmblFeatureLocations.js,bin/jalview/datamodel/xdb/embl/EmblFeatureLocElement.js,bin/jalview/datamodel/xdb/embl/EmblFeature.js,bin/jalview/datamodel/xdb/embl/EmblError.js,bin/jalview/datamodel/xdb/embl/EmblEntry.js,bin/jalview/datamodel/xdb/embl/BasePosition.js,bin/jalview/datamodel/UniprotSequence.js,bin/jalview/datamodel/UniprotProteinName.js,bin/jalview/datamodel/UniprotFile.js,bin/jalview/datamodel/UniprotEntry.js,bin/jalview/datamodel/StructureViewerModel.js,bin/jalview/datamodel/SequencePoint.js,bin/jalview/datamodel/SequenceNode.js,bin/jalview/datamodel/SequenceI.js,bin/jalview/datamodel/SequenceGroup.js,bin/jalview/datamodel/SequenceFeature.js,bin/jalview/datamodel/SequenceDummy.js,bin/jalview/datamodel/SequenceCollectionI.js,bin/jalview/datamodel/Sequence.js,bin/jalview/datamodel/SeqCigar.js,bin/jalview/datamodel/SecondaryStructureAnnotation.js,bin/jalview/datamodel/SearchResults.js,bin/jalview/datamodel/RnaViewerModel.js,bin/jalview/datamodel/ProvenanceEntry.js,bin/jalview/datamodel/Provenance.js,bin/jalview/datamodel/PDBEntry.js,bin/jalview/datamodel/NodeTransformI.js,bin/jalview/datamodel/Mapping.js,bin/jalview/datamodel/IncompleteCodonException.js,bin/jalview/datamodel/HiddenSequences.js,bin/jalview/datamodel/GraphLine.js,bin/jalview/datamodel/FeatureProperties.js,bin/jalview/datamodel/DBRefSource.js,bin/jalview/datamodel/DBRefEntry.js,bin/jalview/datamodel/ColumnSelection.js,bin/jalview/datamodel/CigarSimple.js,bin/jalview/datamodel/CigarCigar.js,bin/jalview/datamodel/CigarBase.js,bin/jalview/datamodel/CigarArray.js,bin/jalview/datamodel/BinarySequence.js,bin/jalview/datamodel/BinaryNode.js,bin/jalview/datamodel/Annotation.js,bin/jalview/datamodel/AnnotatedCollectionI.js,bin/jalview/datamodel/AlignmentView.js,bin/jalview/datamodel/AlignmentOrder.js,bin/jalview/datamodel/AlignmentI.js,bin/jalview/datamodel/AlignmentExportData.js,bin/jalview/datamodel/AlignmentAnnotation.js,bin/jalview/datamodel/Alignment.js,bin/jalview/datamodel/AlignedCodonFrame.js,bin/jalview/datamodel/AlignedCodon.js,bin/jalview/datamodel/ASequenceI.js,bin/jalview/datamodel/ASequence.js,bin/jalview/controller/FeatureSettingsControllerGuiI.js,bin/jalview/controller/FeatureSettingsController.js,bin/jalview/controller/AlignViewController.js,bin/jalview/commands/TrimRegionCommand.js,bin/jalview/commands/SlideSequencesCommand.js,bin/jalview/commands/RemoveGapsCommand.js,bin/jalview/commands/RemoveGapColCommand.js,bin/jalview/commands/OrderCommand.js,bin/jalview/commands/EditCommand.js,bin/jalview/commands/CommandI.js,bin/jalview/commands/ChangeCaseCommand.js,bin/jalview/binding/Viewport.js,bin/jalview/binding/VamsasModel.js,bin/jalview/binding/VAMSAS.js,bin/jalview/binding/UserColours.js,bin/jalview/binding/UserColourScheme.js,bin/jalview/binding/Tree.js,bin/jalview/binding/Setting.js,bin/jalview/binding/SequenceType.js,bin/jalview/binding/SequenceSet.js,bin/jalview/binding/Sequence.js,bin/jalview/binding/Property.js,bin/jalview/binding/Pdbids.js,bin/jalview/binding/PdbentryItem.js,bin/jalview/binding/Pdbentry.js,bin/jalview/binding/JalviewUserColours.js,bin/jalview/binding/JalviewModelSequence.js,bin/jalview/binding/JalviewModel.js,bin/jalview/binding/JSeq.js,bin/jalview/binding/JGroup.js,bin/jalview/binding/Features.js,bin/jalview/binding/FeatureSettings.js,bin/jalview/binding/Feature.js,bin/jalview/binding/Colour.js,bin/jalview/binding/AnnotationElement.js,bin/jalview/binding/Annotation.js,bin/jalview/binding/Alignment.js,bin/jalview/bin/JalviewLiteURLRetrieve.js,bin/jalview/bin/JalviewLite.js,bin/jalview/bin/Jalview.js,bin/jalview/bin/Cache.js,bin/jalview/appletgui/UserDefinedColours.js,bin/jalview/appletgui/TreePanel.js,bin/jalview/appletgui/TreeCanvas.js,bin/jalview/appletgui/Tooltip.js,bin/jalview/appletgui/TitledPanel.js,bin/jalview/appletgui/SplitFrame.js,bin/jalview/appletgui/SliderPanel.js,bin/jalview/appletgui/SequenceRenderer.js,bin/jalview/appletgui/SeqPanel.js,bin/jalview/appletgui/SeqCanvas.js,bin/jalview/appletgui/ScalePanel.js,bin/jalview/appletgui/RotatableCanvas.js,bin/jalview/appletgui/RedundancyPanel.js,bin/jalview/appletgui/PairwiseAlignPanel.js,bin/jalview/appletgui/PaintRefresher.js,bin/jalview/appletgui/PCAPanel.js,bin/jalview/appletgui/OverviewPanel.js,bin/jalview/appletgui/JVDialog.js,bin/jalview/appletgui/IdwidthAdjuster.js,bin/jalview/appletgui/IdPanel.js,bin/jalview/appletgui/IdCanvas.js,bin/jalview/appletgui/FontChooser.js,bin/jalview/appletgui/Finder.js,bin/jalview/appletgui/FeatureSettings.js,bin/jalview/appletgui/FeatureRenderer.js,bin/jalview/appletgui/FeatureColourChooser.js,bin/jalview/appletgui/ExtJmol.js,bin/jalview/appletgui/EmbmenuFrame.js,bin/jalview/appletgui/EditNameDialog.js,bin/jalview/appletgui/CutAndPasteTransfer.js,bin/jalview/appletgui/AppletJmolBinding.js,bin/jalview/appletgui/AppletJmol.js,bin/jalview/appletgui/AnnotationRowFilter.js,bin/jalview/appletgui/AnnotationPanel.js,bin/jalview/appletgui/AnnotationLabels.js,bin/jalview/appletgui/AnnotationColumnChooser.js,bin/jalview/appletgui/AnnotationColourChooser.js,bin/jalview/appletgui/AlignmentPanel.js,bin/jalview/appletgui/AlignViewport.js,bin/jalview/appletgui/AlignFrame.js,bin/jalview/appletgui/APopupMenu.js,bin/jalview/api/structures/JalviewStructureDisplayI.js,bin/jalview/api/analysis/ViewBasedAnalysisI.js,bin/jalview/api/analysis/ScoreModelI.js,bin/jalview/api/ViewStyleI.js,bin/jalview/api/StructureSelectionManagerProvider.js,bin/jalview/api/SplitContainerI.js,bin/jalview/api/SequenceStructureBinding.js,bin/jalview/api/SequenceRenderer.js,bin/jalview/api/RotatableCanvasI.js,bin/jalview/api/OOMHandlerI.js,bin/jalview/api/FeaturesDisplayedI.js,bin/jalview/api/FeatureSettingsModelI.js,bin/jalview/api/FeatureSettingsControllerI.js,bin/jalview/api/FeatureRenderer.js,bin/jalview/api/ComplexAlignFile.js,bin/jalview/api/AlignmentViewPanel.js,bin/jalview/api/AlignViewportI.js,bin/jalview/api/AlignViewControllerI.js,bin/jalview/api/AlignViewControllerGuiI.js,bin/jalview/api/AlignExportSettingI.js,bin/jalview/api/AlignCalcWorkerI.js,bin/jalview/api/AlignCalcManagerI.js,bin/jalview/analysis/scoremodels/SWScoreModel.js,bin/jalview/analysis/scoremodels/PairwiseSeqScoreModel.js,bin/jalview/analysis/scoremodels/PIDScoreModel.js,bin/jalview/analysis/scoremodels/FeatureScoreModel.js,bin/jalview/analysis/WUSSParseException.js,bin/jalview/analysis/StructureFrequency.js,bin/jalview/analysis/SequenceIdMatcher.js,bin/jalview/analysis/SeqsetUtils.js,bin/jalview/analysis/SecStrConsensus.js,bin/jalview/analysis/Rna.js,bin/jalview/analysis/ParseProperties.js,bin/jalview/analysis/PCA.js,bin/jalview/analysis/NJTree.js,bin/jalview/analysis/Grouping.js,bin/jalview/analysis/Finder.js,bin/jalview/analysis/Dna.js,bin/jalview/analysis/CrossRef.js,bin/jalview/analysis/Conservation.js,bin/jalview/analysis/CodonComparator.js,bin/jalview/analysis/CodingUtils.js,bin/jalview/analysis/AnnotationSorter.js,bin/jalview/analysis/AlignmentUtils.js,bin/jalview/analysis/AlignmentSorter.js,bin/jalview/analysis/AlignmentAnnotationUtils.js,bin/jalview/analysis/AlignSeq.js,bin/jalview/analysis/AAFrequency.js,bin/org/jmol/viewer/Viewer.js,bin/org/exolab/castor/xml/Unmarshaller.js,bin/org/exolab/castor/mapping/Mapping.js,bin/netscape/javascript/JSObject.js,bin/netscape/javascript/JSException.js,bin/javajs/util/ZipTools.js,bin/javajs/util/ZipData.js,bin/javajs/util/XmlUtil.js,bin/javajs/util/V3d.js,bin/javajs/util/V3.js,bin/javajs/util/T4.js,bin/javajs/util/T3i.js,bin/javajs/util/T3d.js,bin/javajs/util/T3.js,bin/javajs/util/StringDataReader.js,bin/javajs/util/SB.js,bin/javajs/util/Rdr.js,bin/javajs/util/Quat.js,bin/javajs/util/PT.js,bin/javajs/util/P4.js,bin/javajs/util/P3i.js,bin/javajs/util/P3.js,bin/javajs/util/OC.js,bin/javajs/util/Measure.js,bin/javajs/util/Matrix.js,bin/javajs/util/M4.js,bin/javajs/util/M34.js,bin/javajs/util/M3.js,bin/javajs/util/Lst.js,bin/javajs/util/ListDataReader.js,bin/javajs/util/LimitedLineReader.js,bin/javajs/util/Encoding.js,bin/javajs/util/Eigen.js,bin/javajs/util/DataReader.js,bin/javajs/util/DF.js,bin/javajs/util/CompoundDocument.js,bin/javajs/util/CompoundDocHeader.js,bin/javajs/util/CompoundDocDirEntry.js,bin/javajs/util/CifDataParser.js,bin/javajs/util/CU.js,bin/javajs/util/BinaryDocument.js,bin/javajs/util/Base64.js,bin/javajs/util/BS.js,bin/javajs/util/BC.js,bin/javajs/util/BArray.js,bin/javajs/util/ArrayDataReader.js,bin/javajs/util/AjaxURLStreamHandlerFactory.js,bin/javajs/util/AjaxURLStreamHandler.js,bin/javajs/util/AjaxURLConnection.js,bin/javajs/util/AU.js,bin/javajs/util/A4.js,bin/javajs/swing/TableColumn.js,bin/javajs/swing/TableCellRenderer.js,bin/javajs/swing/SwingConstants.js,bin/javajs/swing/ListSelectionModel.js,bin/javajs/swing/JTextPane.js,bin/javajs/swing/JTextField.js,bin/javajs/swing/JTable.js,bin/javajs/swing/JSplitPane.js,bin/javajs/swing/JScrollPane.js,bin/javajs/swing/JRadioButtonMenuItem.js,bin/javajs/swing/JPopupMenu.js,bin/javajs/swing/JPanel.js,bin/javajs/swing/JMenuItem.js,bin/javajs/swing/JMenu.js,bin/javajs/swing/JLabel.js,bin/javajs/swing/JEditorPane.js,bin/javajs/swing/JDialog.js,bin/javajs/swing/JContentPane.js,bin/javajs/swing/JComponentImp.js,bin/javajs/swing/JComponent.js,bin/javajs/swing/JComboBox.js,bin/javajs/swing/JCheckBoxMenuItem.js,bin/javajs/swing/JCheckBox.js,bin/javajs/swing/JButton.js,bin/javajs/swing/Insets.js,bin/javajs/swing/GridBagLayout.js,bin/javajs/swing/GridBagConstraints.js,bin/javajs/swing/Grid.js,bin/javajs/swing/FlowLayout.js,bin/javajs/swing/Document.js,bin/javajs/swing/ColumnSelectionModel.js,bin/javajs/swing/Cell.js,bin/javajs/swing/ButtonGroup.js,bin/javajs/swing/AbstractTableModel.js,bin/javajs/swing/AbstractButton.js,bin/javajs/img/PpmEncoder.js,bin/javajs/img/PngEncoder.js,bin/javajs/img/PdfEncoder.js,bin/javajs/img/JpgEncoder.js,bin/javajs/img/Jpg64Encoder.js,bin/javajs/img/ImageEncoder.js,bin/javajs/img/GifEncoder.js,bin/javajs/img/CRCEncoder.js,bin/javajs/img/BMPDecoder.js,bin/javajs/export/PDFObject.js,bin/javajs/export/PDFCreator.js,bin/javajs/awt/event/WindowListener.js,bin/javajs/awt/event/WindowEvent.js,bin/javajs/awt/event/ItemEvent.js,bin/javajs/awt/event/Event.js,bin/javajs/awt/event/ActionListener.js,bin/javajs/awt/event/ActionEvent.js,bin/javajs/awt/LayoutManager.js,bin/javajs/awt/Font.js,bin/javajs/awt/Dimension.js,bin/javajs/awt/Container.js,bin/javajs/awt/Component.js,bin/javajs/awt/Color.js,bin/javajs/awt/BorderLayout.js,bin/javajs/api/ZInputStream.js,bin/javajs/api/SwingController.js,bin/javajs/api/SC.js,bin/javajs/api/PlatformViewer.js,bin/javajs/api/JmolObjectInterface.js,bin/javajs/api/JSONEncodable.js,bin/javajs/api/JSInterface.js,bin/javajs/api/Interface.js,bin/javajs/api/HTMLWindowEvent.js,bin/javajs/api/HTMLElement.js,bin/javajs/api/GenericZipTools.js,bin/javajs/api/GenericZipInputStream.js,bin/javajs/api/GenericPlatform.js,bin/javajs/api/GenericMouseInterface.js,bin/javajs/api/GenericMenuInterface.js,bin/javajs/api/GenericLineReader.js,bin/javajs/api/GenericImageEncoder.js,bin/javajs/api/GenericImageDialog.js,bin/javajs/api/GenericFileInterface.js,bin/javajs/api/GenericColor.js,bin/javajs/api/GenericCifDataParser.js,bin/javajs/api/GenericBinaryDocument.js,bin/javajs/api/FontManager.js,bin/javajs/api/EventManager.js,bin/javajs/api/EigenInterface.js,bin/javajs/api/BytePoster.js,bin/javajs/J2SRequireImport.js,bin/javajs/J2SIgnoreImport.js,bin/jalview/jsdev/api/VarnaRNA.js,bin/jalview/jsdev/GenericFileAdapter.js,bin/jalview/jsdev/Constants.js,bin/fr/orsay/lri/varna/models/rna/RNA.js,bin/com/stevesoft/pat/wrap/WriterWrap.js,bin/com/stevesoft/pat/wrap/StringWrap.js,bin/com/stevesoft/pat/wrap/StringBufferWrap.js,bin/com/stevesoft/pat/wrap/RandomAccessFileWrap.js,bin/com/stevesoft/pat/wrap/CharArrayWrap.js,bin/com/stevesoft/pat/wrap/CharArrayBufferWrap.js,bin/com/stevesoft/pat/patInt.js,bin/com/stevesoft/pat/patInf.js,bin/com/stevesoft/pat/parsePerl.js,bin/com/stevesoft/pat/oneChar.js,bin/com/stevesoft/pat/lookAhead.js,bin/com/stevesoft/pat/WantMoreTextReplaceRule.js,bin/com/stevesoft/pat/Validator.js,bin/com/stevesoft/pat/UniValidator.js,bin/com/stevesoft/pat/Transformer.js,bin/com/stevesoft/pat/TransPat.js,bin/com/stevesoft/pat/SubMark.js,bin/com/stevesoft/pat/StringRule.js,bin/com/stevesoft/pat/StringLike.js,bin/com/stevesoft/pat/StringBufferLike.js,bin/com/stevesoft/pat/StrPos.js,bin/com/stevesoft/pat/Start.js,bin/com/stevesoft/pat/SpecialRule.js,bin/com/stevesoft/pat/Skipped.js,bin/com/stevesoft/pat/SkipBMH.js,bin/com/stevesoft/pat/Skip2.js,bin/com/stevesoft/pat/Skip.js,bin/com/stevesoft/pat/RuleHolder.js,bin/com/stevesoft/pat/Rthings.js,bin/com/stevesoft/pat/RightRule.js,bin/com/stevesoft/pat/Replacer.js,bin/com/stevesoft/pat/ReplaceRule.js,bin/com/stevesoft/pat/RegexWriter.js,bin/com/stevesoft/pat/RegexTokenizer.js,bin/com/stevesoft/pat/RegexReader.js,bin/com/stevesoft/pat/Regex.js,bin/com/stevesoft/pat/RegSyntaxError.js,bin/com/stevesoft/pat/RegSyntax.js,bin/com/stevesoft/pat/RegRes.js,bin/com/stevesoft/pat/RegOpt.js,bin/com/stevesoft/pat/Range.js,bin/com/stevesoft/pat/RBuffer.js,bin/com/stevesoft/pat/PushRule.js,bin/com/stevesoft/pat/Pthings.js,bin/com/stevesoft/pat/Prop.js,bin/com/stevesoft/pat/PopRule.js,bin/com/stevesoft/pat/PatternSub.js,bin/com/stevesoft/pat/Pattern.js,bin/com/stevesoft/pat/PartialBuffer.js,bin/com/stevesoft/pat/OrMark.js,bin/com/stevesoft/pat/Or.js,bin/com/stevesoft/pat/NullRule.js,bin/com/stevesoft/pat/NullPattern.js,bin/com/stevesoft/pat/NotImplementedError.js,bin/com/stevesoft/pat/NonDirFileRegex.js,bin/com/stevesoft/pat/NoPattern.js,bin/com/stevesoft/pat/Multi_stage2.js,bin/com/stevesoft/pat/MultiMin.js,bin/com/stevesoft/pat/Multi.js,bin/com/stevesoft/pat/LeftRule.js,bin/com/stevesoft/pat/Group.js,bin/com/stevesoft/pat/FileRegex.js,bin/com/stevesoft/pat/FastMulti.js,bin/com/stevesoft/pat/FastBracket.js,bin/com/stevesoft/pat/End.js,bin/com/stevesoft/pat/DotMulti.js,bin/com/stevesoft/pat/DirFileRegex.js,bin/com/stevesoft/pat/CustomEndpoint.js,bin/com/stevesoft/pat/Custom.js,bin/com/stevesoft/pat/Ctrl.js,bin/com/stevesoft/pat/CodeRule.js,bin/com/stevesoft/pat/ChangeRule.js,bin/com/stevesoft/pat/CaseMgr.js,bin/com/stevesoft/pat/Bracket.js,bin/com/stevesoft/pat/Boundary.js,bin/com/stevesoft/pat/Bits.js,bin/com/stevesoft/pat/BasicStringBufferLike.js,bin/com/stevesoft/pat/Backup.js,bin/com/stevesoft/pat/BackRefRule.js,bin/com/stevesoft/pat/BackMatch.js,bin/com/stevesoft/pat/BackG.js,bin/com/stevesoft/pat/Any.js,bin/com/stevesoft/pat/AmpersandRule.js,bin/awt2swing/TextField.js,bin/awt2swing/TextArea.js,bin/awt2swing/Scrollbar.js,bin/awt2swing/ScrollPane.js,bin/awt2swing/PopupMenu.js,bin/awt2swing/Panel.js,bin/awt2swing/MenuItem.js,bin/awt2swing/MenuBar.js,bin/awt2swing/Menu.js,bin/awt2swing/Label.js,bin/awt2swing/Frame.js,bin/awt2swing/CheckboxMenuItem.js,bin/awt2swing/Checkbox.js,bin/MCview/Residue.js,bin/MCview/PDBfile.js,bin/MCview/PDBChain.js,bin/MCview/Bond.js,bin/MCview/Atom.js,bin/awt2swing/Button.js,bin/awt2swing/Canvas.js,bin/awt2swing/Choice.js,bin/jalview/appletgui/Cache.js,bin/com/stevesoft/pat/Util.js,bin/jalview/jsdev/Regex.js,bin/jalview/jsdev/RegexJS.js,bin/com/stevesoft/pat/MessageManager.js,bin/jalview/jsdev/api/RegexInterface.js,bin/jalview/jsdev/api/RegExpInterface.js,bin/jalview/jsdev/RegExp.js,bin/jalview/jsdev/JavaScriptRegExp.js,bin/jalview/jsdev/JSRegex.js,bin/swingjs/JSEvent.js,bin/swingjs/JSThread.js,bin/swingjs/api/JSFunction.js,bin/swingjs/JSImage.js,bin/swingjs/api/DOMNode.js
-j2s.compiler.abbreviation.prefix=$_
-j2s.output.path=bin
-j2s.abandoned.resources.list=
-j2s.compiler.status=enable
+#Java2Script Configuration
+#Thu Jul 23 16:06:48 BST 2015
+j2s.compiler.abbreviation=false
+j2s.resources.list=bin/JStest.js,bin/com/sun/awt/AWTUtilities.js,bin/com/sun/awt/SecurityWarning.js,bin/com/sun/beans/ObjectHandler.js,bin/com/sun/beans/TypeResolver.js,bin/com/sun/beans/WeakCache.js,bin/com/sun/beans/WildcardTypeImpl.js,bin/com/sun/beans/editors/BooleanEditor.js,bin/com/sun/beans/editors/ByteEditor.js,bin/com/sun/beans/editors/ColorEditor.js,bin/com/sun/beans/editors/DoubleEditor.js,bin/com/sun/beans/editors/EnumEditor.js,bin/com/sun/beans/editors/FloatEditor.js,bin/com/sun/beans/editors/FontEditor.js,bin/com/sun/beans/editors/IntegerEditor.js,bin/com/sun/beans/editors/LongEditor.js,bin/com/sun/beans/editors/NumberEditor.js,bin/com/sun/beans/editors/ShortEditor.js,bin/com/sun/beans/editors/StringEditor.js,bin/com/sun/beans/finder/ClassFinder.js,bin/com/sun/beans/finder/PrimitiveTypeMap.js,bin/com/sun/beans/infos/ComponentBeanInfo.js,bin/com/sun/crypto/provider/AESCipher.js,bin/com/sun/crypto/provider/AESConstants.js,bin/com/sun/crypto/provider/AESCrypt.js,bin/com/sun/crypto/provider/AESKeyGenerator.js,bin/com/sun/crypto/provider/AESParameters.js,bin/com/sun/crypto/provider/AESWrapCipher.js,bin/com/sun/crypto/provider/ARCFOURCipher.js,bin/com/sun/crypto/provider/BlockCipherParamsCore.js,bin/com/sun/crypto/provider/BlowfishCipher.js,bin/com/sun/crypto/provider/BlowfishConstants.js,bin/com/sun/crypto/provider/BlowfishCrypt.js,bin/com/sun/crypto/provider/BlowfishKeyGenerator.js,bin/com/sun/crypto/provider/BlowfishParameters.js,bin/com/sun/crypto/provider/CipherBlockChaining.js,bin/com/sun/crypto/provider/CipherCore.js,bin/com/sun/crypto/provider/CipherFeedback.js,bin/com/sun/crypto/provider/CipherTextStealing.js,bin/com/sun/crypto/provider/CipherWithWrappingSpi.js,bin/com/sun/crypto/provider/ConstructKeys.js,bin/com/sun/crypto/provider/CounterMode.js,bin/com/sun/crypto/provider/DESCipher.js,bin/com/sun/crypto/provider/DESConstants.js,bin/com/sun/crypto/provider/DESCrypt.js,bin/com/sun/crypto/provider/DESKey.js,bin/com/sun/crypto/provider/DESKeyFactory.js,bin/com/sun/crypto/provider/DESKeyGenerator.js,bin/com/sun/crypto/provider/DESParameters.js,bin/com/sun/crypto/provider/DESedeCipher.js,bin/com/sun/crypto/provider/DESedeCrypt.js,bin/com/sun/crypto/provider/DESedeKey.js,bin/com/sun/crypto/provider/DESedeKeyFactory.js,bin/com/sun/crypto/provider/DESedeKeyGenerator.js,bin/com/sun/crypto/provider/DESedeParameters.js,bin/com/sun/crypto/provider/DESedeWrapCipher.js,bin/com/sun/crypto/provider/DHKeyAgreement.js,bin/com/sun/crypto/provider/DHKeyFactory.js,bin/com/sun/crypto/provider/DHKeyPairGenerator.js,bin/com/sun/crypto/provider/DHParameterGenerator.js,bin/com/sun/crypto/provider/DHParameters.js,bin/com/sun/crypto/provider/DHPrivateKey.js,bin/com/sun/crypto/provider/DHPublicKey.js,bin/com/sun/crypto/provider/ElectronicCodeBook.js,bin/com/sun/crypto/provider/EncryptedPrivateKeyInfo.js,bin/com/sun/crypto/provider/FeedbackCipher.js,bin/com/sun/crypto/provider/HmacCore.js,bin/com/sun/crypto/provider/HmacMD5.js,bin/com/sun/crypto/provider/HmacMD5KeyGenerator.js,bin/com/sun/crypto/provider/HmacPKCS12PBESHA1.js,bin/com/sun/crypto/provider/HmacSHA1.js,bin/com/sun/crypto/provider/HmacSHA1KeyGenerator.js,bin/com/sun/crypto/provider/ISO10126Padding.js,bin/com/sun/crypto/provider/JceKeyStore.js,bin/com/sun/crypto/provider/KeyGeneratorCore.js,bin/com/sun/crypto/provider/KeyProtector.js,bin/com/sun/crypto/provider/OAEPParameters.js,bin/com/sun/crypto/provider/OutputFeedback.js,bin/com/sun/crypto/provider/PBECipherCore.js,bin/com/sun/crypto/provider/PBEKey.js,bin/com/sun/crypto/provider/PBEKeyFactory.js,bin/com/sun/crypto/provider/PBEParameters.js,bin/com/sun/crypto/provider/PBEWithMD5AndDESCipher.js,bin/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.js,bin/com/sun/crypto/provider/PBKDF2HmacSHA1Factory.js,bin/com/sun/crypto/provider/PBKDF2KeyImpl.js,bin/com/sun/crypto/provider/PCBC.js,bin/com/sun/crypto/provider/PKCS12PBECipherCore.js,bin/com/sun/crypto/provider/PKCS5Padding.js,bin/com/sun/crypto/provider/Padding.js,bin/com/sun/crypto/provider/PrivateKeyInfo.js,bin/com/sun/crypto/provider/RC2Cipher.js,bin/com/sun/crypto/provider/RC2Crypt.js,bin/com/sun/crypto/provider/RC2Parameters.js,bin/com/sun/crypto/provider/RSACipher.js,bin/com/sun/crypto/provider/SslMacCore.js,bin/com/sun/crypto/provider/SunJCE.js,bin/com/sun/crypto/provider/SymmetricCipher.js,bin/com/sun/crypto/provider/TlsKeyMaterialGenerator.js,bin/com/sun/crypto/provider/TlsMasterSecretGenerator.js,bin/com/sun/crypto/provider/TlsPrfGenerator.js,bin/com/sun/crypto/provider/TlsRsaPremasterSecretGenerator.js,bin/com/sun/crypto/provider/ai.js,bin/com/sun/demo/jvmti/hprof/Tracker.js,bin/com/sun/imageio/plugins/bmp/BMPConstants.js,bin/com/sun/imageio/plugins/bmp/BMPImageReader.js,bin/com/sun/imageio/plugins/bmp/BMPImageReaderSpi.js,bin/com/sun/imageio/plugins/bmp/BMPImageWriter.js,bin/com/sun/imageio/plugins/bmp/BMPImageWriterSpi.js,bin/com/sun/imageio/plugins/bmp/BMPMetadata.js,bin/com/sun/imageio/plugins/bmp/BMPMetadataFormat.js,bin/com/sun/imageio/plugins/bmp/BMPMetadataFormatResources.js,bin/com/sun/imageio/plugins/common/BitFile.js,bin/com/sun/imageio/plugins/common/BogusColorSpace.js,bin/com/sun/imageio/plugins/common/I18N.js,bin/com/sun/imageio/plugins/common/I18NImpl.js,bin/com/sun/imageio/plugins/common/ImageUtil.js,bin/com/sun/imageio/plugins/common/InputStreamAdapter.js,bin/com/sun/imageio/plugins/common/LZWCompressor.js,bin/com/sun/imageio/plugins/common/LZWStringTable.js,bin/com/sun/imageio/plugins/common/PaletteBuilder.js,bin/com/sun/imageio/plugins/common/ReaderUtil.js,bin/com/sun/imageio/plugins/common/StandardMetadataFormat.js,bin/com/sun/imageio/plugins/common/StandardMetadataFormatResources.js,bin/com/sun/imageio/plugins/common/SubImageInputStream.js,bin/com/sun/imageio/plugins/gif/GIFImageMetadata.js,bin/com/sun/imageio/plugins/gif/GIFImageMetadataFormat.js,bin/com/sun/imageio/plugins/gif/GIFImageMetadataFormatResources.js,bin/com/sun/imageio/plugins/gif/GIFImageReader.js,bin/com/sun/imageio/plugins/gif/GIFImageReaderSpi.js,bin/com/sun/imageio/plugins/gif/GIFImageWriter.js,bin/com/sun/imageio/plugins/gif/GIFImageWriterSpi.js,bin/com/sun/imageio/plugins/gif/GIFMetadata.js,bin/com/sun/imageio/plugins/gif/GIFStreamMetadata.js,bin/com/sun/imageio/plugins/gif/GIFStreamMetadataFormat.js,bin/com/sun/imageio/plugins/gif/GIFStreamMetadataFormatResources.js,bin/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.js,bin/com/sun/imageio/plugins/gif/GIFWritableStreamMetadata.js,bin/com/sun/imageio/plugins/jpeg/AdobeMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/COMMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/DHTMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/DQTMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/DRIMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/JPEG.js,bin/com/sun/imageio/plugins/jpeg/JPEGBuffer.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageMetadataFormat.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageMetadataFormatResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageReader.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageReaderResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageReaderSpi.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageWriter.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageWriterResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGImageWriterSpi.js,bin/com/sun/imageio/plugins/jpeg/JPEGMetadata.js,bin/com/sun/imageio/plugins/jpeg/JPEGMetadataFormat.js,bin/com/sun/imageio/plugins/jpeg/JPEGMetadataFormatResources.js,bin/com/sun/imageio/plugins/jpeg/JPEGStreamMetadataFormat.js,bin/com/sun/imageio/plugins/jpeg/JPEGStreamMetadataFormatResources.js,bin/com/sun/imageio/plugins/jpeg/MarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/SOFMarkerSegment.js,bin/com/sun/imageio/plugins/jpeg/SOSMarkerSegment.js,bin/com/sun/imageio/plugins/png/PNGImageReader.js,bin/com/sun/imageio/plugins/png/PNGImageReaderSpi.js,bin/com/sun/imageio/plugins/png/PNGImageWriter.js,bin/com/sun/imageio/plugins/png/PNGImageWriterSpi.js,bin/com/sun/imageio/plugins/png/PNGMetadata.js,bin/com/sun/imageio/plugins/png/PNGMetadataFormat.js,bin/com/sun/imageio/plugins/png/PNGMetadataFormatResources.js,bin/com/sun/imageio/plugins/png/RowFilter.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageReader.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageReaderSpi.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageWriter.js,bin/com/sun/imageio/plugins/wbmp/WBMPImageWriterSpi.js,bin/com/sun/imageio/plugins/wbmp/WBMPMetadata.js,bin/com/sun/imageio/plugins/wbmp/WBMPMetadataFormat.js,bin/com/sun/imageio/spi/FileImageInputStreamSpi.js,bin/com/sun/imageio/spi/FileImageOutputStreamSpi.js,bin/com/sun/imageio/spi/InputStreamImageInputStreamSpi.js,bin/com/sun/imageio/spi/OutputStreamImageOutputStreamSpi.js,bin/com/sun/imageio/spi/RAFImageInputStreamSpi.js,bin/com/sun/imageio/spi/RAFImageOutputStreamSpi.js,bin/com/sun/imageio/stream/CloseableDisposerRecord.js,bin/com/sun/imageio/stream/StreamCloser.js,bin/com/sun/imageio/stream/StreamFinalizer.js,bin/com/sun/inputmethods/internal/indicim/DevanagariInputMethodDescriptor.js,bin/com/sun/inputmethods/internal/indicim/DevanagariTables.js,bin/com/sun/inputmethods/internal/indicim/IndicInputMethod.js,bin/com/sun/inputmethods/internal/indicim/IndicInputMethodImpl.js,bin/com/sun/inputmethods/internal/thaiim/ThaiInputMethod.js,bin/com/sun/inputmethods/internal/thaiim/ThaiInputMethodDescriptor.js,bin/com/sun/inputmethods/internal/thaiim/ThaiInputMethodImpl.js,bin/com/sun/inputmethods/internal/thaiim/ThaiRules.js,bin/com/sun/jarsigner/ContentSigner.js,bin/com/sun/jarsigner/ContentSignerParameters.js,bin/com/sun/java/browser/dom/DOMAccessException.js,bin/com/sun/java/browser/dom/DOMAccessor.js,bin/com/sun/java/browser/dom/DOMAction.js,bin/com/sun/java/browser/dom/DOMService.js,bin/com/sun/java/browser/dom/DOMServiceProvider.js,bin/com/sun/java/browser/dom/DOMUnsupportedException.js,bin/com/sun/java/browser/net/ProxyInfo.js,bin/com/sun/java/browser/net/ProxyService.js,bin/com/sun/java/browser/net/ProxyServiceProvider.js,bin/com/sun/java/swing/Painter.js,bin/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.js,bin/com/sun/java/swing/plaf/gtk/GTKColorType.js,bin/com/sun/java/swing/plaf/gtk/GTKConstants.js,bin/com/sun/java/swing/plaf/gtk/GTKEngine.js,bin/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.js,bin/com/sun/java/swing/plaf/gtk/GTKGraphicsUtils.js,bin/com/sun/java/swing/plaf/gtk/GTKIconFactory.js,bin/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.js,bin/com/sun/java/swing/plaf/gtk/GTKPainter.js,bin/com/sun/java/swing/plaf/gtk/GTKRegion.js,bin/com/sun/java/swing/plaf/gtk/GTKStyle.js,bin/com/sun/java/swing/plaf/gtk/GTKStyleFactory.js,bin/com/sun/java/swing/plaf/gtk/Metacity.js,bin/com/sun/java/swing/plaf/gtk/PangoFonts.js,bin/com/sun/java/swing/plaf/gtk/XColors.js,bin/com/sun/java/swing/plaf/motif/MotifBorders.js,bin/com/sun/java/swing/plaf/motif/MotifButtonListener.js,bin/com/sun/java/swing/plaf/motif/MotifButtonUI.js,bin/com/sun/java/swing/plaf/motif/MotifCheckBoxMenuItemUI.js,bin/com/sun/java/swing/plaf/motif/MotifCheckBoxUI.js,bin/com/sun/java/swing/plaf/motif/MotifComboBoxUI.js,bin/com/sun/java/swing/plaf/motif/MotifDesktopIconUI.js,bin/com/sun/java/swing/plaf/motif/MotifDesktopPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifEditorPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifFileChooserUI.js,bin/com/sun/java/swing/plaf/motif/MotifGraphicsUtils.js,bin/com/sun/java/swing/plaf/motif/MotifIconFactory.js,bin/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.js,bin/com/sun/java/swing/plaf/motif/MotifInternalFrameUI.js,bin/com/sun/java/swing/plaf/motif/MotifLabelUI.js,bin/com/sun/java/swing/plaf/motif/MotifLookAndFeel.js,bin/com/sun/java/swing/plaf/motif/MotifMenuBarUI.js,bin/com/sun/java/swing/plaf/motif/MotifMenuItemUI.js,bin/com/sun/java/swing/plaf/motif/MotifMenuMouseListener.js,bin/com/sun/java/swing/plaf/motif/MotifMenuMouseMotionListener.js,bin/com/sun/java/swing/plaf/motif/MotifMenuUI.js,bin/com/sun/java/swing/plaf/motif/MotifOptionPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifPasswordFieldUI.js,bin/com/sun/java/swing/plaf/motif/MotifPopupMenuSeparatorUI.js,bin/com/sun/java/swing/plaf/motif/MotifPopupMenuUI.js,bin/com/sun/java/swing/plaf/motif/MotifProgressBarUI.js,bin/com/sun/java/swing/plaf/motif/MotifRadioButtonMenuItemUI.js,bin/com/sun/java/swing/plaf/motif/MotifRadioButtonUI.js,bin/com/sun/java/swing/plaf/motif/MotifScrollBarButton.js,bin/com/sun/java/swing/plaf/motif/MotifScrollBarUI.js,bin/com/sun/java/swing/plaf/motif/MotifScrollPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifSeparatorUI.js,bin/com/sun/java/swing/plaf/motif/MotifSliderUI.js,bin/com/sun/java/swing/plaf/motif/MotifSplitPaneDivider.js,bin/com/sun/java/swing/plaf/motif/MotifSplitPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifTabbedPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextAreaUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextFieldUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextPaneUI.js,bin/com/sun/java/swing/plaf/motif/MotifTextUI.js,bin/com/sun/java/swing/plaf/motif/MotifToggleButtonUI.js,bin/com/sun/java/swing/plaf/motif/MotifTreeCellRenderer.js,bin/com/sun/java/swing/plaf/motif/MotifTreeUI.js,bin/com/sun/java/swing/plaf/nimbus/AbstractRegionPainter.js,bin/com/sun/java/swing/plaf/nimbus/DerivedColor.js,bin/com/sun/java/swing/plaf/nimbus/DropShadowEffect.js,bin/com/sun/java/swing/plaf/nimbus/Effect.js,bin/com/sun/java/swing/plaf/nimbus/EffectUtils.js,bin/com/sun/java/swing/plaf/nimbus/ImageCache.js,bin/com/sun/java/swing/plaf/nimbus/ImageScalingHelper.js,bin/com/sun/java/swing/plaf/nimbus/InnerGlowEffect.js,bin/com/sun/java/swing/plaf/nimbus/InnerShadowEffect.js,bin/com/sun/java/swing/plaf/nimbus/LoweredBorder.js,bin/com/sun/java/swing/plaf/nimbus/NimbusIcon.js,bin/com/sun/java/swing/plaf/nimbus/NimbusLookAndFeel.js,bin/com/sun/java/swing/plaf/nimbus/NimbusStyle.js,bin/com/sun/java/swing/plaf/nimbus/OuterGlowEffect.js,bin/com/sun/java/swing/plaf/nimbus/ShadowEffect.js,bin/com/sun/java/swing/plaf/nimbus/State.js,bin/com/sun/java/swing/plaf/nimbus/SynthPainterImpl.js,bin/com/sun/java/swing/plaf/nimbus/TableScrollPaneCorner.js,bin/com/sun/java/swing/plaf/nimbus/ToolBarSeparatorPainter.js,bin/com/sun/java/swing/plaf/windows/AnimationController.js,bin/com/sun/java/swing/plaf/windows/DesktopProperty.js,bin/com/sun/java/swing/plaf/windows/TMSchema.js,bin/com/sun/java/swing/plaf/windows/WindowsBorders.js,bin/com/sun/java/swing/plaf/windows/WindowsButtonListener.js,bin/com/sun/java/swing/plaf/windows/WindowsButtonUI.js,bin/com/sun/java/swing/plaf/windows/WindowsCheckBoxMenuItemUI.js,bin/com/sun/java/swing/plaf/windows/WindowsCheckBoxUI.js,bin/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.js,bin/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.js,bin/com/sun/java/swing/plaf/windows/WindowsDesktopIconUI.js,bin/com/sun/java/swing/plaf/windows/WindowsDesktopManager.js,bin/com/sun/java/swing/plaf/windows/WindowsDesktopPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsEditorPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.js,bin/com/sun/java/swing/plaf/windows/WindowsGraphicsUtils.js,bin/com/sun/java/swing/plaf/windows/WindowsIconFactory.js,bin/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.js,bin/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.js,bin/com/sun/java/swing/plaf/windows/WindowsLabelUI.js,bin/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuItemUIAccessor.js,bin/com/sun/java/swing/plaf/windows/WindowsMenuUI.js,bin/com/sun/java/swing/plaf/windows/WindowsOptionPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPasswordFieldUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPopupMenuSeparatorUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPopupMenuUI.js,bin/com/sun/java/swing/plaf/windows/WindowsPopupWindow.js,bin/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsRadioButtonMenuItemUI.js,bin/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI.js,bin/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsScrollPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSeparatorUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSliderUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSpinnerUI.js,bin/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.js,bin/com/sun/java/swing/plaf/windows/WindowsSplitPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextAreaUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextPaneUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTextUI.js,bin/com/sun/java/swing/plaf/windows/WindowsToggleButtonUI.js,bin/com/sun/java/swing/plaf/windows/WindowsToolBarSeparatorUI.js,bin/com/sun/java/swing/plaf/windows/WindowsToolBarUI.js,bin/com/sun/java/swing/plaf/windows/WindowsTreeUI.js,bin/com/sun/java/swing/plaf/windows/XPStyle.js,bin/com/sun/java/util/jar/pack/AdaptiveCoding.js,bin/com/sun/java/util/jar/pack/Attribute.js,bin/com/sun/java/util/jar/pack/BandStructure.js,bin/com/sun/java/util/jar/pack/ClassReader.js,bin/com/sun/java/util/jar/pack/ClassWriter.js,bin/com/sun/java/util/jar/pack/Code.js,bin/com/sun/java/util/jar/pack/Coding.js,bin/com/sun/java/util/jar/pack/CodingChooser.js,bin/com/sun/java/util/jar/pack/CodingMethod.js,bin/com/sun/java/util/jar/pack/ConstantPool.js,bin/com/sun/java/util/jar/pack/Constants.js,bin/com/sun/java/util/jar/pack/Driver.js,bin/com/sun/java/util/jar/pack/DriverResource.js,bin/com/sun/java/util/jar/pack/Fixups.js,bin/com/sun/java/util/jar/pack/Histogram.js,bin/com/sun/java/util/jar/pack/Instruction.js,bin/com/sun/java/util/jar/pack/NativeUnpack.js,bin/com/sun/java/util/jar/pack/Package.js,bin/com/sun/java/util/jar/pack/PackageReader.js,bin/com/sun/java/util/jar/pack/PackageWriter.js,bin/com/sun/java/util/jar/pack/PackerImpl.js,bin/com/sun/java/util/jar/pack/PopulationCoding.js,bin/com/sun/java/util/jar/pack/PropMap.js,bin/com/sun/java/util/jar/pack/UnpackerImpl.js,bin/com/sun/java/util/jar/pack/Utils.js,bin/com/sun/jdi/AbsentInformationException.js,bin/com/sun/jdi/Accessible.js,bin/com/sun/jdi/ArrayReference.js,bin/com/sun/jdi/ArrayType.js,bin/com/sun/jdi/BooleanType.js,bin/com/sun/jdi/BooleanValue.js,bin/com/sun/jdi/Bootstrap.js,bin/com/sun/jdi/ByteType.js,bin/com/sun/jdi/ByteValue.js,bin/com/sun/jdi/CharType.js,bin/com/sun/jdi/CharValue.js,bin/com/sun/jdi/ClassLoaderReference.js,bin/com/sun/jdi/ClassNotLoadedException.js,bin/com/sun/jdi/ClassNotPreparedException.js,bin/com/sun/jdi/ClassObjectReference.js,bin/com/sun/jdi/ClassType.js,bin/com/sun/jdi/DoubleType.js,bin/com/sun/jdi/DoubleValue.js,bin/com/sun/jdi/Field.js,bin/com/sun/jdi/FloatType.js,bin/com/sun/jdi/FloatValue.js,bin/com/sun/jdi/IncompatibleThreadStateException.js,bin/com/sun/jdi/InconsistentDebugInfoException.js,bin/com/sun/jdi/IntegerType.js,bin/com/sun/jdi/IntegerValue.js,bin/com/sun/jdi/InterfaceType.js,bin/com/sun/jdi/InternalException.js,bin/com/sun/jdi/InvalidCodeIndexException.js,bin/com/sun/jdi/InvalidLineNumberException.js,bin/com/sun/jdi/InvalidStackFrameException.js,bin/com/sun/jdi/InvalidTypeException.js,bin/com/sun/jdi/InvocationException.js,bin/com/sun/jdi/JDIPermission.js,bin/com/sun/jdi/LocalVariable.js,bin/com/sun/jdi/Locatable.js,bin/com/sun/jdi/Location.js,bin/com/sun/jdi/LongType.js,bin/com/sun/jdi/LongValue.js,bin/com/sun/jdi/Method.js,bin/com/sun/jdi/Mirror.js,bin/com/sun/jdi/MonitorInfo.js,bin/com/sun/jdi/NativeMethodException.js,bin/com/sun/jdi/ObjectCollectedException.js,bin/com/sun/jdi/ObjectReference.js,bin/com/sun/jdi/PathSearchingVirtualMachine.js,bin/com/sun/jdi/PrimitiveType.js,bin/com/sun/jdi/PrimitiveValue.js,bin/com/sun/jdi/ReferenceType.js,bin/com/sun/jdi/ShortType.js,bin/com/sun/jdi/ShortValue.js,bin/com/sun/jdi/StackFrame.js,bin/com/sun/jdi/StringReference.js,bin/com/sun/jdi/ThreadGroupReference.js,bin/com/sun/jdi/ThreadReference.js,bin/com/sun/jdi/Type.js,bin/com/sun/jdi/TypeComponent.js,bin/com/sun/jdi/VMCannotBeModifiedException.js,bin/com/sun/jdi/VMDisconnectedException.js,bin/com/sun/jdi/VMMismatchException.js,bin/com/sun/jdi/VMOutOfMemoryException.js,bin/com/sun/jdi/Value.js,bin/com/sun/jdi/VirtualMachine.js,bin/com/sun/jdi/VirtualMachineManager.js,bin/com/sun/jdi/VoidType.js,bin/com/sun/jdi/VoidValue.js,bin/com/sun/jdi/connect/AttachingConnector.js,bin/com/sun/jdi/connect/Connector.js,bin/com/sun/jdi/connect/IllegalConnectorArgumentsException.js,bin/com/sun/jdi/connect/LaunchingConnector.js,bin/com/sun/jdi/connect/ListeningConnector.js,bin/com/sun/jdi/connect/Transport.js,bin/com/sun/jdi/connect/TransportTimeoutException.js,bin/com/sun/jdi/connect/VMStartException.js,bin/com/sun/jdi/connect/spi/ClosedConnectionException.js,bin/com/sun/jdi/connect/spi/Connection.js,bin/com/sun/jdi/connect/spi/TransportService.js,bin/com/sun/jdi/event/AccessWatchpointEvent.js,bin/com/sun/jdi/event/BreakpointEvent.js,bin/com/sun/jdi/event/ClassPrepareEvent.js,bin/com/sun/jdi/event/ClassUnloadEvent.js,bin/com/sun/jdi/event/Event.js,bin/com/sun/jdi/event/EventIterator.js,bin/com/sun/jdi/event/EventQueue.js,bin/com/sun/jdi/event/EventSet.js,bin/com/sun/jdi/event/ExceptionEvent.js,bin/com/sun/jdi/event/LocatableEvent.js,bin/com/sun/jdi/event/MethodEntryEvent.js,bin/com/sun/jdi/event/MethodExitEvent.js,bin/com/sun/jdi/event/ModificationWatchpointEvent.js,bin/com/sun/jdi/event/MonitorContendedEnterEvent.js,bin/com/sun/jdi/event/MonitorContendedEnteredEvent.js,bin/com/sun/jdi/event/MonitorWaitEvent.js,bin/com/sun/jdi/event/MonitorWaitedEvent.js,bin/com/sun/jdi/event/StepEvent.js,bin/com/sun/jdi/event/ThreadDeathEvent.js,bin/com/sun/jdi/event/ThreadStartEvent.js,bin/com/sun/jdi/event/VMDeathEvent.js,bin/com/sun/jdi/event/VMDisconnectEvent.js,bin/com/sun/jdi/event/VMStartEvent.js,bin/com/sun/jdi/event/WatchpointEvent.js,bin/com/sun/jdi/request/AccessWatchpointRequest.js,bin/com/sun/jdi/request/BreakpointRequest.js,bin/com/sun/jdi/request/ClassPrepareRequest.js,bin/com/sun/jdi/request/ClassUnloadRequest.js,bin/com/sun/jdi/request/DuplicateRequestException.js,bin/com/sun/jdi/request/EventRequest.js,bin/com/sun/jdi/request/EventRequestManager.js,bin/com/sun/jdi/request/ExceptionRequest.js,bin/com/sun/jdi/request/InvalidRequestStateException.js,bin/com/sun/jdi/request/MethodEntryRequest.js,bin/com/sun/jdi/request/MethodExitRequest.js,bin/com/sun/jdi/request/ModificationWatchpointRequest.js,bin/com/sun/jdi/request/MonitorContendedEnterRequest.js,bin/com/sun/jdi/request/MonitorContendedEnteredRequest.js,bin/com/sun/jdi/request/MonitorWaitRequest.js,bin/com/sun/jdi/request/MonitorWaitedRequest.js,bin/com/sun/jdi/request/StepRequest.js,bin/com/sun/jdi/request/ThreadDeathRequest.js,bin/com/sun/jdi/request/ThreadStartRequest.js,bin/com/sun/jdi/request/VMDeathRequest.js,bin/com/sun/jdi/request/WatchpointRequest.js,bin/com/sun/jmx/defaults/JmxProperties.js,bin/com/sun/jmx/defaults/ServiceName.js,bin/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.js,bin/com/sun/jmx/interceptor/MBeanServerInterceptor.js,bin/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.js,bin/com/sun/jmx/mbeanserver/ConvertingMethod.js,bin/com/sun/jmx/mbeanserver/DescriptorCache.js,bin/com/sun/jmx/mbeanserver/DynamicMBean2.js,bin/com/sun/jmx/mbeanserver/GetPropertyAction.js,bin/com/sun/jmx/mbeanserver/Introspector.js,bin/com/sun/jmx/mbeanserver/JmxMBeanServer.js,bin/com/sun/jmx/mbeanserver/JmxMBeanServerBuilder.js,bin/com/sun/jmx/mbeanserver/MBeanAnalyzer.js,bin/com/sun/jmx/mbeanserver/MBeanInstantiator.js,bin/com/sun/jmx/mbeanserver/MBeanIntrospector.js,bin/com/sun/jmx/mbeanserver/MBeanServerDelegateImpl.js,bin/com/sun/jmx/mbeanserver/MBeanSupport.js,bin/com/sun/jmx/mbeanserver/MXBeanIntrospector.js,bin/com/sun/jmx/mbeanserver/MXBeanLookup.js,bin/com/sun/jmx/mbeanserver/MXBeanProxy.js,bin/com/sun/jmx/mbeanserver/MXBeanSupport.js,bin/com/sun/jmx/mbeanserver/ModifiableClassLoaderRepository.js,bin/com/sun/jmx/mbeanserver/NamedObject.js,bin/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.js,bin/com/sun/jmx/mbeanserver/OpenConverter.js,bin/com/sun/jmx/mbeanserver/PerInterface.js,bin/com/sun/jmx/mbeanserver/Repository.js,bin/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.js,bin/com/sun/jmx/mbeanserver/StandardMBeanIntrospector.js,bin/com/sun/jmx/mbeanserver/StandardMBeanSupport.js,bin/com/sun/jmx/mbeanserver/SunJmxMBeanServer.js,bin/com/sun/jmx/mbeanserver/Util.js,bin/com/sun/jmx/mbeanserver/WeakIdentityHashMap.js,bin/com/sun/jmx/remote/internal/ArrayNotificationBuffer.js,bin/com/sun/jmx/remote/internal/ArrayQueue.js,bin/com/sun/jmx/remote/internal/ClientCommunicatorAdmin.js,bin/com/sun/jmx/remote/internal/ClientListenerInfo.js,bin/com/sun/jmx/remote/internal/ClientNotifForwarder.js,bin/com/sun/jmx/remote/internal/NotificationBuffer.js,bin/com/sun/jmx/remote/internal/NotificationBufferFilter.js,bin/com/sun/jmx/remote/internal/ProxyInputStream.js,bin/com/sun/jmx/remote/internal/ProxyRef.js,bin/com/sun/jmx/remote/internal/RMIExporter.js,bin/com/sun/jmx/remote/internal/ServerCommunicatorAdmin.js,bin/com/sun/jmx/remote/internal/ServerNotifForwarder.js,bin/com/sun/jmx/remote/internal/Unmarshal.js,bin/com/sun/jmx/remote/protocol/iiop/ClientProvider.js,bin/com/sun/jmx/remote/protocol/iiop/ServerProvider.js,bin/com/sun/jmx/remote/protocol/rmi/ClientProvider.js,bin/com/sun/jmx/remote/protocol/rmi/ServerProvider.js,bin/com/sun/jmx/remote/security/FileLoginModule.js,bin/com/sun/jmx/remote/security/JMXPluggableAuthenticator.js,bin/com/sun/jmx/remote/security/JMXSubjectDomainCombiner.js,bin/com/sun/jmx/remote/security/MBeanServerAccessController.js,bin/com/sun/jmx/remote/security/MBeanServerFileAccessController.js,bin/com/sun/jmx/remote/security/NotificationAccessController.js,bin/com/sun/jmx/remote/security/SubjectDelegator.js,bin/com/sun/jmx/remote/util/ClassLoaderWithRepository.js,bin/com/sun/jmx/remote/util/ClassLogger.js,bin/com/sun/jmx/remote/util/EnvHelp.js,bin/com/sun/jmx/remote/util/OrderClassLoaders.js,bin/com/sun/jmx/snmp/BerDecoder.js,bin/com/sun/jmx/snmp/BerEncoder.js,bin/com/sun/jmx/snmp/BerException.js,bin/com/sun/jmx/snmp/EnumRowStatus.js,bin/com/sun/jmx/snmp/Enumerated.js,bin/com/sun/jmx/snmp/IPAcl/ASCII_CharStream.js,bin/com/sun/jmx/snmp/IPAcl/AclEntryImpl.js,bin/com/sun/jmx/snmp/IPAcl/AclImpl.js,bin/com/sun/jmx/snmp/IPAcl/GroupImpl.js,bin/com/sun/jmx/snmp/IPAcl/Host.js,bin/com/sun/jmx/snmp/IPAcl/JDMAccess.js,bin/com/sun/jmx/snmp/IPAcl/JDMAclBlock.js,bin/com/sun/jmx/snmp/IPAcl/JDMAclItem.js,bin/com/sun/jmx/snmp/IPAcl/JDMCommunities.js,bin/com/sun/jmx/snmp/IPAcl/JDMCommunity.js,bin/com/sun/jmx/snmp/IPAcl/JDMEnterprise.js,bin/com/sun/jmx/snmp/IPAcl/JDMHost.js,bin/com/sun/jmx/snmp/IPAcl/JDMHostInform.js,bin/com/sun/jmx/snmp/IPAcl/JDMHostName.js,bin/com/sun/jmx/snmp/IPAcl/JDMHostTrap.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformBlock.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformCommunity.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformInterestedHost.js,bin/com/sun/jmx/snmp/IPAcl/JDMInformItem.js,bin/com/sun/jmx/snmp/IPAcl/JDMIpAddress.js,bin/com/sun/jmx/snmp/IPAcl/JDMIpMask.js,bin/com/sun/jmx/snmp/IPAcl/JDMIpV6Address.js,bin/com/sun/jmx/snmp/IPAcl/JDMManagers.js,bin/com/sun/jmx/snmp/IPAcl/JDMNetMask.js,bin/com/sun/jmx/snmp/IPAcl/JDMNetMaskV6.js,bin/com/sun/jmx/snmp/IPAcl/JDMSecurityDefs.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapBlock.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapCommunity.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapInterestedHost.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapItem.js,bin/com/sun/jmx/snmp/IPAcl/JDMTrapNum.js,bin/com/sun/jmx/snmp/IPAcl/JJTParserState.js,bin/com/sun/jmx/snmp/IPAcl/NetMaskImpl.js,bin/com/sun/jmx/snmp/IPAcl/Node.js,bin/com/sun/jmx/snmp/IPAcl/OwnerImpl.js,bin/com/sun/jmx/snmp/IPAcl/ParseError.js,bin/com/sun/jmx/snmp/IPAcl/ParseException.js,bin/com/sun/jmx/snmp/IPAcl/Parser.js,bin/com/sun/jmx/snmp/IPAcl/ParserConstants.js,bin/com/sun/jmx/snmp/IPAcl/ParserTokenManager.js,bin/com/sun/jmx/snmp/IPAcl/ParserTreeConstants.js,bin/com/sun/jmx/snmp/IPAcl/PermissionImpl.js,bin/com/sun/jmx/snmp/IPAcl/PrincipalImpl.js,bin/com/sun/jmx/snmp/IPAcl/SimpleNode.js,bin/com/sun/jmx/snmp/IPAcl/SnmpAcl.js,bin/com/sun/jmx/snmp/IPAcl/Token.js,bin/com/sun/jmx/snmp/IPAcl/TokenMgrError.js,bin/com/sun/jmx/snmp/InetAddressAcl.js,bin/com/sun/jmx/snmp/ServiceName.js,bin/com/sun/jmx/snmp/SnmpAckPdu.js,bin/com/sun/jmx/snmp/SnmpBadSecurityLevelException.js,bin/com/sun/jmx/snmp/SnmpCounter.js,bin/com/sun/jmx/snmp/SnmpCounter64.js,bin/com/sun/jmx/snmp/SnmpEngine.js,bin/com/sun/jmx/snmp/SnmpEngineFactory.js,bin/com/sun/jmx/snmp/SnmpEngineId.js,bin/com/sun/jmx/snmp/SnmpEngineParameters.js,bin/com/sun/jmx/snmp/SnmpGauge.js,bin/com/sun/jmx/snmp/SnmpInt.js,bin/com/sun/jmx/snmp/SnmpIpAddress.js,bin/com/sun/jmx/snmp/SnmpMessage.js,bin/com/sun/jmx/snmp/SnmpMsg.js,bin/com/sun/jmx/snmp/SnmpNull.js,bin/com/sun/jmx/snmp/SnmpOpaque.js,bin/com/sun/jmx/snmp/SnmpParams.js,bin/com/sun/jmx/snmp/SnmpPdu.js,bin/com/sun/jmx/snmp/SnmpPduBulk.js,bin/com/sun/jmx/snmp/SnmpPduBulkType.js,bin/com/sun/jmx/snmp/SnmpPduFactory.js,bin/com/sun/jmx/snmp/SnmpPduFactoryBER.js,bin/com/sun/jmx/snmp/SnmpPduRequest.js,bin/com/sun/jmx/snmp/SnmpPduRequestType.js,bin/com/sun/jmx/snmp/SnmpPduTrap.js,bin/com/sun/jmx/snmp/SnmpScopedPduBulk.js,bin/com/sun/jmx/snmp/SnmpScopedPduPacket.js,bin/com/sun/jmx/snmp/SnmpScopedPduRequest.js,bin/com/sun/jmx/snmp/SnmpSecurityException.js,bin/com/sun/jmx/snmp/SnmpSecurityParameters.js,bin/com/sun/jmx/snmp/SnmpStatusException.js,bin/com/sun/jmx/snmp/SnmpString.js,bin/com/sun/jmx/snmp/SnmpStringFixed.js,bin/com/sun/jmx/snmp/SnmpTooBigException.js,bin/com/sun/jmx/snmp/SnmpUnknownAccContrModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownModelLcdException.js,bin/com/sun/jmx/snmp/SnmpUnknownMsgProcModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownSecModelException.js,bin/com/sun/jmx/snmp/SnmpUnknownSubSystemException.js,bin/com/sun/jmx/snmp/SnmpUnsignedInt.js,bin/com/sun/jmx/snmp/SnmpUsmKeyHandler.js,bin/com/sun/jmx/snmp/SnmpV3Message.js,bin/com/sun/jmx/snmp/SnmpValue.js,bin/com/sun/jmx/snmp/ThreadContext.js,bin/com/sun/jmx/snmp/UserAcl.js,bin/com/sun/jmx/snmp/agent/SnmpEntryOid.js,bin/com/sun/jmx/snmp/agent/SnmpErrorHandlerAgent.js,bin/com/sun/jmx/snmp/agent/SnmpGenericMetaServer.js,bin/com/sun/jmx/snmp/agent/SnmpGenericObjectServer.js,bin/com/sun/jmx/snmp/agent/SnmpIndex.js,bin/com/sun/jmx/snmp/agent/SnmpMib.js,bin/com/sun/jmx/snmp/agent/SnmpMibAgent.js,bin/com/sun/jmx/snmp/agent/SnmpMibAgentMBean.js,bin/com/sun/jmx/snmp/agent/SnmpMibEntry.js,bin/com/sun/jmx/snmp/agent/SnmpMibGroup.js,bin/com/sun/jmx/snmp/agent/SnmpMibHandler.js,bin/com/sun/jmx/snmp/agent/SnmpMibNode.js,bin/com/sun/jmx/snmp/agent/SnmpMibOid.js,bin/com/sun/jmx/snmp/agent/SnmpMibRequest.js,bin/com/sun/jmx/snmp/agent/SnmpMibRequestImpl.js,bin/com/sun/jmx/snmp/agent/SnmpMibSubRequest.js,bin/com/sun/jmx/snmp/agent/SnmpMibTable.js,bin/com/sun/jmx/snmp/agent/SnmpRequestTree.js,bin/com/sun/jmx/snmp/agent/SnmpStandardMetaServer.js,bin/com/sun/jmx/snmp/agent/SnmpStandardObjectServer.js,bin/com/sun/jmx/snmp/agent/SnmpTableCallbackHandler.js,bin/com/sun/jmx/snmp/agent/SnmpTableEntryFactory.js,bin/com/sun/jmx/snmp/agent/SnmpTableEntryNotification.js,bin/com/sun/jmx/snmp/agent/SnmpTableSupport.js,bin/com/sun/jmx/snmp/agent/SnmpUserDataFactory.js,bin/com/sun/jmx/snmp/daemon/ClientHandler.js,bin/com/sun/jmx/snmp/daemon/CommunicationException.js,bin/com/sun/jmx/snmp/daemon/CommunicatorServer.js,bin/com/sun/jmx/snmp/daemon/CommunicatorServerMBean.js,bin/com/sun/jmx/snmp/daemon/SnmpAdaptorServer.js,bin/com/sun/jmx/snmp/daemon/SnmpAdaptorServerMBean.js,bin/com/sun/jmx/snmp/daemon/SnmpInformHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpMibTree.js,bin/com/sun/jmx/snmp/daemon/SnmpRequestHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.js,bin/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.js,bin/com/sun/jmx/snmp/defaults/DefaultPaths.js,bin/com/sun/jmx/snmp/defaults/SnmpProperties.js,bin/com/sun/jmx/snmp/internal/SnmpAccessControlModel.js,bin/com/sun/jmx/snmp/internal/SnmpAccessControlSubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpDecryptedPdu.js,bin/com/sun/jmx/snmp/internal/SnmpEngineImpl.js,bin/com/sun/jmx/snmp/internal/SnmpIncomingRequest.js,bin/com/sun/jmx/snmp/internal/SnmpIncomingResponse.js,bin/com/sun/jmx/snmp/internal/SnmpLcd.js,bin/com/sun/jmx/snmp/internal/SnmpModel.js,bin/com/sun/jmx/snmp/internal/SnmpModelLcd.js,bin/com/sun/jmx/snmp/internal/SnmpMsgProcessingModel.js,bin/com/sun/jmx/snmp/internal/SnmpMsgProcessingSubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpOutgoingRequest.js,bin/com/sun/jmx/snmp/internal/SnmpSecurityCache.js,bin/com/sun/jmx/snmp/internal/SnmpSecurityModel.js,bin/com/sun/jmx/snmp/internal/SnmpSecuritySubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpSubSystem.js,bin/com/sun/jmx/snmp/internal/SnmpTools.js,bin/com/sun/jmx/snmp/mpm/SnmpMsgTranslator.js,bin/com/sun/jmx/snmp/tasks/Task.js,bin/com/sun/jmx/snmp/tasks/TaskServer.js,bin/com/sun/jmx/snmp/tasks/ThreadService.js,bin/com/sun/jndi/cosnaming/CNBindingEnumeration.js,bin/com/sun/jndi/cosnaming/CNCtx.js,bin/com/sun/jndi/cosnaming/CNCtxFactory.js,bin/com/sun/jndi/cosnaming/CNNameParser.js,bin/com/sun/jndi/cosnaming/CorbanameUrl.js,bin/com/sun/jndi/cosnaming/ExceptionMapper.js,bin/com/sun/jndi/cosnaming/IiopUrl.js,bin/com/sun/jndi/cosnaming/OrbReuseTracker.js,bin/com/sun/jndi/cosnaming/RemoteToCorba.js,bin/com/sun/jndi/dns/DnsClient.js,bin/com/sun/jndi/dns/DnsContext.js,bin/com/sun/jndi/dns/DnsContextFactory.js,bin/com/sun/jndi/dns/DnsName.js,bin/com/sun/jndi/dns/DnsNameParser.js,bin/com/sun/jndi/dns/DnsUrl.js,bin/com/sun/jndi/dns/Header.js,bin/com/sun/jndi/dns/NameNode.js,bin/com/sun/jndi/dns/Resolver.js,bin/com/sun/jndi/dns/ResourceRecord.js,bin/com/sun/jndi/dns/ResourceRecords.js,bin/com/sun/jndi/dns/ZoneNode.js,bin/com/sun/jndi/ldap/BasicControl.js,bin/com/sun/jndi/ldap/Ber.js,bin/com/sun/jndi/ldap/BerDecoder.js,bin/com/sun/jndi/ldap/BerEncoder.js,bin/com/sun/jndi/ldap/BindingWithControls.js,bin/com/sun/jndi/ldap/ClientId.js,bin/com/sun/jndi/ldap/Connection.js,bin/com/sun/jndi/ldap/DefaultResponseControlFactory.js,bin/com/sun/jndi/ldap/DigestClientId.js,bin/com/sun/jndi/ldap/EntryChangeResponseControl.js,bin/com/sun/jndi/ldap/EventQueue.js,bin/com/sun/jndi/ldap/EventSupport.js,bin/com/sun/jndi/ldap/Filter.js,bin/com/sun/jndi/ldap/LdapAttribute.js,bin/com/sun/jndi/ldap/LdapBindingEnumeration.js,bin/com/sun/jndi/ldap/LdapClient.js,bin/com/sun/jndi/ldap/LdapClientFactory.js,bin/com/sun/jndi/ldap/LdapCtx.js,bin/com/sun/jndi/ldap/LdapCtxFactory.js,bin/com/sun/jndi/ldap/LdapEntry.js,bin/com/sun/jndi/ldap/LdapName.js,bin/com/sun/jndi/ldap/LdapNameParser.js,bin/com/sun/jndi/ldap/LdapNamingEnumeration.js,bin/com/sun/jndi/ldap/LdapPoolManager.js,bin/com/sun/jndi/ldap/LdapReferralContext.js,bin/com/sun/jndi/ldap/LdapReferralException.js,bin/com/sun/jndi/ldap/LdapRequest.js,bin/com/sun/jndi/ldap/LdapResult.js,bin/com/sun/jndi/ldap/LdapSchemaCtx.js,bin/com/sun/jndi/ldap/LdapSchemaParser.js,bin/com/sun/jndi/ldap/LdapSearchEnumeration.js,bin/com/sun/jndi/ldap/LdapURL.js,bin/com/sun/jndi/ldap/ManageReferralControl.js,bin/com/sun/jndi/ldap/NameClassPairWithControls.js,bin/com/sun/jndi/ldap/NamingEventNotifier.js,bin/com/sun/jndi/ldap/NotifierArgs.js,bin/com/sun/jndi/ldap/Obj.js,bin/com/sun/jndi/ldap/PersistentSearchControl.js,bin/com/sun/jndi/ldap/ReferralEnumeration.js,bin/com/sun/jndi/ldap/SearchResultWithControls.js,bin/com/sun/jndi/ldap/ServiceLocator.js,bin/com/sun/jndi/ldap/SimpleClientId.js,bin/com/sun/jndi/ldap/UnsolicitedResponseImpl.js,bin/com/sun/jndi/ldap/VersionHelper.js,bin/com/sun/jndi/ldap/VersionHelper12.js,bin/com/sun/jndi/ldap/ext/StartTlsResponseImpl.js,bin/com/sun/jndi/ldap/pool/ConnectionDesc.js,bin/com/sun/jndi/ldap/pool/Connections.js,bin/com/sun/jndi/ldap/pool/ConnectionsRef.js,bin/com/sun/jndi/ldap/pool/ConnectionsWeakRef.js,bin/com/sun/jndi/ldap/pool/Pool.js,bin/com/sun/jndi/ldap/pool/PoolCallback.js,bin/com/sun/jndi/ldap/pool/PoolCleaner.js,bin/com/sun/jndi/ldap/pool/PooledConnection.js,bin/com/sun/jndi/ldap/pool/PooledConnectionFactory.js,bin/com/sun/jndi/ldap/sasl/DefaultCallbackHandler.js,bin/com/sun/jndi/ldap/sasl/LdapSasl.js,bin/com/sun/jndi/ldap/sasl/SaslInputStream.js,bin/com/sun/jndi/ldap/sasl/SaslOutputStream.js,bin/com/sun/jndi/rmi/registry/ReferenceWrapper.js,bin/com/sun/jndi/rmi/registry/RegistryContext.js,bin/com/sun/jndi/rmi/registry/RegistryContextFactory.js,bin/com/sun/jndi/rmi/registry/RemoteReference.js,bin/com/sun/jndi/toolkit/corba/CorbaUtils.js,bin/com/sun/jndi/toolkit/ctx/AtomicContext.js,bin/com/sun/jndi/toolkit/ctx/AtomicDirContext.js,bin/com/sun/jndi/toolkit/ctx/ComponentContext.js,bin/com/sun/jndi/toolkit/ctx/ComponentDirContext.js,bin/com/sun/jndi/toolkit/ctx/Continuation.js,bin/com/sun/jndi/toolkit/ctx/HeadTail.js,bin/com/sun/jndi/toolkit/ctx/PartialCompositeContext.js,bin/com/sun/jndi/toolkit/ctx/PartialCompositeDirContext.js,bin/com/sun/jndi/toolkit/ctx/StringHeadTail.js,bin/com/sun/jndi/toolkit/dir/AttrFilter.js,bin/com/sun/jndi/toolkit/dir/ContainmentFilter.js,bin/com/sun/jndi/toolkit/dir/ContextEnumerator.js,bin/com/sun/jndi/toolkit/dir/DirSearch.js,bin/com/sun/jndi/toolkit/dir/HierMemDirCtx.js,bin/com/sun/jndi/toolkit/dir/LazySearchEnumerationImpl.js,bin/com/sun/jndi/toolkit/dir/SearchFilter.js,bin/com/sun/jndi/toolkit/url/GenericURLContext.js,bin/com/sun/jndi/toolkit/url/GenericURLDirContext.js,bin/com/sun/jndi/toolkit/url/Uri.js,bin/com/sun/jndi/toolkit/url/UrlUtil.js,bin/com/sun/jndi/url/corbaname/corbanameURLContextFactory.js,bin/com/sun/jndi/url/dns/dnsURLContext.js,bin/com/sun/jndi/url/dns/dnsURLContextFactory.js,bin/com/sun/jndi/url/iiop/iiopURLContext.js,bin/com/sun/jndi/url/iiop/iiopURLContextFactory.js,bin/com/sun/jndi/url/iiopname/iiopnameURLContextFactory.js,bin/com/sun/jndi/url/ldap/ldapURLContext.js,bin/com/sun/jndi/url/ldap/ldapURLContextFactory.js,bin/com/sun/jndi/url/ldaps/ldapsURLContextFactory.js,bin/com/sun/jndi/url/rmi/rmiURLContext.js,bin/com/sun/jndi/url/rmi/rmiURLContextFactory.js,bin/com/sun/management/GarbageCollectorMXBean.js,bin/com/sun/management/GcInfo.js,bin/com/sun/management/HotSpotDiagnosticMXBean.js,bin/com/sun/management/OperatingSystemMXBean.js,bin/com/sun/management/UnixOperatingSystemMXBean.js,bin/com/sun/management/VMOption.js,bin/com/sun/media/sound/AbstractDataLine.js,bin/com/sun/media/sound/AbstractLine.js,bin/com/sun/media/sound/AbstractMidiDevice.js,bin/com/sun/media/sound/AbstractMidiDeviceProvider.js,bin/com/sun/media/sound/AbstractMixer.js,bin/com/sun/media/sound/AiffFileFormat.js,bin/com/sun/media/sound/AiffFileReader.js,bin/com/sun/media/sound/AiffFileWriter.js,bin/com/sun/media/sound/AlawCodec.js,bin/com/sun/media/sound/AuFileFormat.js,bin/com/sun/media/sound/AuFileReader.js,bin/com/sun/media/sound/AuFileWriter.js,bin/com/sun/media/sound/AudioFileSoundbankReader.js,bin/com/sun/media/sound/AudioFloatConverter.js,bin/com/sun/media/sound/AudioFloatFormatConverter.js,bin/com/sun/media/sound/AudioFloatInputStream.js,bin/com/sun/media/sound/AudioSynthesizer.js,bin/com/sun/media/sound/AudioSynthesizerPropertyInfo.js,bin/com/sun/media/sound/AutoClosingClip.js,bin/com/sun/media/sound/AutoConnectSequencer.js,bin/com/sun/media/sound/DLSInfo.js,bin/com/sun/media/sound/DLSInstrument.js,bin/com/sun/media/sound/DLSModulator.js,bin/com/sun/media/sound/DLSRegion.js,bin/com/sun/media/sound/DLSSample.js,bin/com/sun/media/sound/DLSSampleLoop.js,bin/com/sun/media/sound/DLSSampleOptions.js,bin/com/sun/media/sound/DLSSoundbank.js,bin/com/sun/media/sound/DLSSoundbankReader.js,bin/com/sun/media/sound/DataPusher.js,bin/com/sun/media/sound/DirectAudioDevice.js,bin/com/sun/media/sound/DirectAudioDeviceProvider.js,bin/com/sun/media/sound/EmergencySoundbank.js,bin/com/sun/media/sound/EventDispatcher.js,bin/com/sun/media/sound/FFT.js,bin/com/sun/media/sound/FastShortMessage.js,bin/com/sun/media/sound/FastSysexMessage.js,bin/com/sun/media/sound/InvalidDataException.js,bin/com/sun/media/sound/InvalidFormatException.js,bin/com/sun/media/sound/JARSoundbankReader.js,bin/com/sun/media/sound/JDK13Services.js,bin/com/sun/media/sound/JSSecurityManager.js,bin/com/sun/media/sound/JavaSoundAudioClip.js,bin/com/sun/media/sound/MidiDeviceReceiver.js,bin/com/sun/media/sound/MidiInDevice.js,bin/com/sun/media/sound/MidiInDeviceProvider.js,bin/com/sun/media/sound/MidiOutDevice.js,bin/com/sun/media/sound/MidiOutDeviceProvider.js,bin/com/sun/media/sound/MidiUtils.js,bin/com/sun/media/sound/ModelAbstractChannelMixer.js,bin/com/sun/media/sound/ModelAbstractOscillator.js,bin/com/sun/media/sound/ModelByteBuffer.js,bin/com/sun/media/sound/ModelByteBufferWavetable.js,bin/com/sun/media/sound/ModelChannelMixer.js,bin/com/sun/media/sound/ModelConnectionBlock.js,bin/com/sun/media/sound/ModelDestination.js,bin/com/sun/media/sound/ModelDirectedPlayer.js,bin/com/sun/media/sound/ModelDirector.js,bin/com/sun/media/sound/ModelIdentifier.js,bin/com/sun/media/sound/ModelInstrument.js,bin/com/sun/media/sound/ModelInstrumentComparator.js,bin/com/sun/media/sound/ModelMappedInstrument.js,bin/com/sun/media/sound/ModelOscillator.js,bin/com/sun/media/sound/ModelOscillatorStream.js,bin/com/sun/media/sound/ModelPatch.js,bin/com/sun/media/sound/ModelPerformer.js,bin/com/sun/media/sound/ModelSource.js,bin/com/sun/media/sound/ModelStandardDirector.js,bin/com/sun/media/sound/ModelStandardIndexedDirector.js,bin/com/sun/media/sound/ModelStandardTransform.js,bin/com/sun/media/sound/ModelTransform.js,bin/com/sun/media/sound/ModelWavetable.js,bin/com/sun/media/sound/PCMtoPCMCodec.js,bin/com/sun/media/sound/Platform.js,bin/com/sun/media/sound/PortMixer.js,bin/com/sun/media/sound/PortMixerProvider.js,bin/com/sun/media/sound/Printer.js,bin/com/sun/media/sound/RIFFInvalidDataException.js,bin/com/sun/media/sound/RIFFInvalidFormatException.js,bin/com/sun/media/sound/RIFFReader.js,bin/com/sun/media/sound/RIFFWriter.js,bin/com/sun/media/sound/RealTimeSequencer.js,bin/com/sun/media/sound/RealTimeSequencerProvider.js,bin/com/sun/media/sound/ReferenceCountingDevice.js,bin/com/sun/media/sound/SF2GlobalRegion.js,bin/com/sun/media/sound/SF2Instrument.js,bin/com/sun/media/sound/SF2InstrumentRegion.js,bin/com/sun/media/sound/SF2Layer.js,bin/com/sun/media/sound/SF2LayerRegion.js,bin/com/sun/media/sound/SF2Modulator.js,bin/com/sun/media/sound/SF2Region.js,bin/com/sun/media/sound/SF2Sample.js,bin/com/sun/media/sound/SF2Soundbank.js,bin/com/sun/media/sound/SF2SoundbankReader.js,bin/com/sun/media/sound/SimpleInstrument.js,bin/com/sun/media/sound/SimpleSoundbank.js,bin/com/sun/media/sound/SoftAbstractResampler.js,bin/com/sun/media/sound/SoftAudioBuffer.js,bin/com/sun/media/sound/SoftAudioProcessor.js,bin/com/sun/media/sound/SoftAudioPusher.js,bin/com/sun/media/sound/SoftChannel.js,bin/com/sun/media/sound/SoftChannelProxy.js,bin/com/sun/media/sound/SoftChorus.js,bin/com/sun/media/sound/SoftControl.js,bin/com/sun/media/sound/SoftCubicResampler.js,bin/com/sun/media/sound/SoftEnvelopeGenerator.js,bin/com/sun/media/sound/SoftFilter.js,bin/com/sun/media/sound/SoftInstrument.js,bin/com/sun/media/sound/SoftJitterCorrector.js,bin/com/sun/media/sound/SoftLanczosResampler.js,bin/com/sun/media/sound/SoftLimiter.js,bin/com/sun/media/sound/SoftLinearResampler.js,bin/com/sun/media/sound/SoftLinearResampler2.js,bin/com/sun/media/sound/SoftLowFrequencyOscillator.js,bin/com/sun/media/sound/SoftMainMixer.js,bin/com/sun/media/sound/SoftMidiAudioFileReader.js,bin/com/sun/media/sound/SoftMixingClip.js,bin/com/sun/media/sound/SoftMixingDataLine.js,bin/com/sun/media/sound/SoftMixingMainMixer.js,bin/com/sun/media/sound/SoftMixingMixer.js,bin/com/sun/media/sound/SoftMixingMixerProvider.js,bin/com/sun/media/sound/SoftMixingSourceDataLine.js,bin/com/sun/media/sound/SoftPerformer.js,bin/com/sun/media/sound/SoftPointResampler.js,bin/com/sun/media/sound/SoftProcess.js,bin/com/sun/media/sound/SoftProvider.js,bin/com/sun/media/sound/SoftReceiver.js,bin/com/sun/media/sound/SoftResampler.js,bin/com/sun/media/sound/SoftResamplerStreamer.js,bin/com/sun/media/sound/SoftReverb.js,bin/com/sun/media/sound/SoftShortMessage.js,bin/com/sun/media/sound/SoftSincResampler.js,bin/com/sun/media/sound/SoftSynthesizer.js,bin/com/sun/media/sound/SoftTuning.js,bin/com/sun/media/sound/SoftVoice.js,bin/com/sun/media/sound/StandardMidiFileReader.js,bin/com/sun/media/sound/StandardMidiFileWriter.js,bin/com/sun/media/sound/SunCodec.js,bin/com/sun/media/sound/SunFileReader.js,bin/com/sun/media/sound/SunFileWriter.js,bin/com/sun/media/sound/Toolkit.js,bin/com/sun/media/sound/UlawCodec.js,bin/com/sun/media/sound/WaveExtensibleFileReader.js,bin/com/sun/media/sound/WaveFileFormat.js,bin/com/sun/media/sound/WaveFileReader.js,bin/com/sun/media/sound/WaveFileWriter.js,bin/com/sun/media/sound/WaveFloatFileReader.js,bin/com/sun/media/sound/WaveFloatFileWriter.js,bin/com/sun/naming/internal/FactoryEnumeration.js,bin/com/sun/naming/internal/NamedWeakReference.js,bin/com/sun/naming/internal/ResourceManager.js,bin/com/sun/naming/internal/VersionHelper.js,bin/com/sun/naming/internal/VersionHelper12.js,bin/com/sun/net/httpserver/Authenticator.js,bin/com/sun/net/httpserver/BasicAuthenticator.js,bin/com/sun/net/httpserver/Filter.js,bin/com/sun/net/httpserver/Headers.js,bin/com/sun/net/httpserver/HttpContext.js,bin/com/sun/net/httpserver/HttpExchange.js,bin/com/sun/net/httpserver/HttpHandler.js,bin/com/sun/net/httpserver/HttpPrincipal.js,bin/com/sun/net/httpserver/HttpServer.js,bin/com/sun/net/httpserver/HttpsConfigurator.js,bin/com/sun/net/httpserver/HttpsExchange.js,bin/com/sun/net/httpserver/HttpsParameters.js,bin/com/sun/net/httpserver/HttpsServer.js,bin/com/sun/net/httpserver/package-info.js,bin/com/sun/net/httpserver/spi/HttpServerProvider.js,bin/com/sun/net/httpserver/spi/package-info.js,bin/com/sun/net/ssl/HostnameVerifier.js,bin/com/sun/net/ssl/HttpsURLConnection.js,bin/com/sun/net/ssl/KeyManager.js,bin/com/sun/net/ssl/KeyManagerFactory.js,bin/com/sun/net/ssl/KeyManagerFactorySpi.js,bin/com/sun/net/ssl/SSLContext.js,bin/com/sun/net/ssl/SSLContextSpi.js,bin/com/sun/net/ssl/SSLPermission.js,bin/com/sun/net/ssl/SSLSecurity.js,bin/com/sun/net/ssl/TrustManager.js,bin/com/sun/net/ssl/TrustManagerFactory.js,bin/com/sun/net/ssl/TrustManagerFactorySpi.js,bin/com/sun/net/ssl/X509KeyManager.js,bin/com/sun/net/ssl/X509TrustManager.js,bin/com/sun/net/ssl/internal/ssl/Provider.js,bin/com/sun/net/ssl/internal/ssl/X509ExtendedTrustManager.js,bin/com/sun/net/ssl/internal/www/protocol/https/DelegateHttpsURLConnection.js,bin/com/sun/net/ssl/internal/www/protocol/https/Handler.js,bin/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.js,bin/com/sun/org/apache/xml/internal/security/Init.js,bin/com/sun/org/apache/xml/internal/security/algorithms/Algorithm.js,bin/com/sun/org/apache/xml/internal/security/algorithms/ClassLoaderUtils.js,bin/com/sun/org/apache/xml/internal/security/algorithms/JCEMapper.js,bin/com/sun/org/apache/xml/internal/security/algorithms/MessageDigestAlgorithm.js,bin/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm.js,bin/com/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithmSpi.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/IntegrityHmac.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureBaseRSA.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureDSA.js,bin/com/sun/org/apache/xml/internal/security/algorithms/implementations/SignatureECDSA.js,bin/com/sun/org/apache/xml/internal/security/c14n/CanonicalizationException.js,bin/com/sun/org/apache/xml/internal/security/c14n/Canonicalizer.js,bin/com/sun/org/apache/xml/internal/security/c14n/CanonicalizerSpi.js,bin/com/sun/org/apache/xml/internal/security/c14n/InvalidCanonicalizerException.js,bin/com/sun/org/apache/xml/internal/security/c14n/helper/AttrCompare.js,bin/com/sun/org/apache/xml/internal/security/c14n/helper/C14nHelper.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11_OmitComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer11_WithComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315Excl.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315ExclOmitComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315ExclWithComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315OmitComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/Canonicalizer20010315WithComments.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/CanonicalizerBase.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/NameSpaceSymbTable.js,bin/com/sun/org/apache/xml/internal/security/c14n/implementations/UtfHelpper.js,bin/com/sun/org/apache/xml/internal/security/encryption/AgreementMethod.js,bin/com/sun/org/apache/xml/internal/security/encryption/CipherData.js,bin/com/sun/org/apache/xml/internal/security/encryption/CipherReference.js,bin/com/sun/org/apache/xml/internal/security/encryption/CipherValue.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptedData.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptedKey.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptedType.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptionMethod.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperties.js,bin/com/sun/org/apache/xml/internal/security/encryption/EncryptionProperty.js,bin/com/sun/org/apache/xml/internal/security/encryption/Reference.js,bin/com/sun/org/apache/xml/internal/security/encryption/ReferenceList.js,bin/com/sun/org/apache/xml/internal/security/encryption/Transforms.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLCipher.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLCipherInput.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLCipherParameters.js,bin/com/sun/org/apache/xml/internal/security/encryption/XMLEncryptionException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/AlgorithmAlreadyRegisteredException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/Base64DecodingException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException.js,bin/com/sun/org/apache/xml/internal/security/exceptions/XMLSecurityRuntimeException.js,bin/com/sun/org/apache/xml/internal/security/keys/ContentHandlerAlreadyRegisteredException.js,bin/com/sun/org/apache/xml/internal/security/keys/KeyInfo.js,bin/com/sun/org/apache/xml/internal/security/keys/KeyUtils.js,bin/com/sun/org/apache/xml/internal/security/keys/content/KeyInfoContent.js,bin/com/sun/org/apache/xml/internal/security/keys/content/KeyName.js,bin/com/sun/org/apache/xml/internal/security/keys/content/KeyValue.js,bin/com/sun/org/apache/xml/internal/security/keys/content/MgmtData.js,bin/com/sun/org/apache/xml/internal/security/keys/content/PGPData.js,bin/com/sun/org/apache/xml/internal/security/keys/content/RetrievalMethod.js,bin/com/sun/org/apache/xml/internal/security/keys/content/SPKIData.js,bin/com/sun/org/apache/xml/internal/security/keys/content/X509Data.js,bin/com/sun/org/apache/xml/internal/security/keys/content/keyvalues/DSAKeyValue.js,bin/com/sun/org/apache/xml/internal/security/keys/content/keyvalues/KeyValueContent.js,bin/com/sun/org/apache/xml/internal/security/keys/content/keyvalues/RSAKeyValue.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509CRL.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509Certificate.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509DataContent.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509IssuerSerial.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509SKI.js,bin/com/sun/org/apache/xml/internal/security/keys/content/x509/XMLX509SubjectName.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/InvalidKeyResolverException.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolverException.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/KeyResolverSpi.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/DSAKeyValueResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/EncryptedKeyResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RSAKeyValueResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/RetrievalMethodResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509CertificateResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509IssuerSerialResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509SKIResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/keyresolver/implementations/X509SubjectNameResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolverException.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/StorageResolverSpi.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/implementations/CertsInFilesystemDirectoryResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/implementations/KeyStoreResolver.js,bin/com/sun/org/apache/xml/internal/security/keys/storage/implementations/SingleCertificateResolver.js,bin/com/sun/org/apache/xml/internal/security/signature/InvalidDigestValueException.js,bin/com/sun/org/apache/xml/internal/security/signature/InvalidSignatureValueException.js,bin/com/sun/org/apache/xml/internal/security/signature/Manifest.js,bin/com/sun/org/apache/xml/internal/security/signature/MissingResourceFailureException.js,bin/com/sun/org/apache/xml/internal/security/signature/NodeFilter.js,bin/com/sun/org/apache/xml/internal/security/signature/ObjectContainer.js,bin/com/sun/org/apache/xml/internal/security/signature/Reference.js,bin/com/sun/org/apache/xml/internal/security/signature/ReferenceNotInitializedException.js,bin/com/sun/org/apache/xml/internal/security/signature/SignatureProperties.js,bin/com/sun/org/apache/xml/internal/security/signature/SignatureProperty.js,bin/com/sun/org/apache/xml/internal/security/signature/SignedInfo.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignature.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignatureException.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignatureInput.js,bin/com/sun/org/apache/xml/internal/security/signature/XMLSignatureInputDebugger.js,bin/com/sun/org/apache/xml/internal/security/transforms/ClassLoaderUtils.js,bin/com/sun/org/apache/xml/internal/security/transforms/InvalidTransformException.js,bin/com/sun/org/apache/xml/internal/security/transforms/Transform.js,bin/com/sun/org/apache/xml/internal/security/transforms/TransformParam.js,bin/com/sun/org/apache/xml/internal/security/transforms/TransformSpi.js,bin/com/sun/org/apache/xml/internal/security/transforms/TransformationException.js,bin/com/sun/org/apache/xml/internal/security/transforms/Transforms.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHere.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformBase64Decode.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14N.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14N11.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14N11_WithComments.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14NExclusive.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14NExclusiveWithComments.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformC14NWithComments.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformEnvelopedSignature.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPath2Filter.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXPointer.js,bin/com/sun/org/apache/xml/internal/security/transforms/implementations/TransformXSLT.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/InclusiveNamespaces.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPath2FilterContainer.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPath2FilterContainer04.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPathContainer.js,bin/com/sun/org/apache/xml/internal/security/transforms/params/XPathFilterCHGPContainer.js,bin/com/sun/org/apache/xml/internal/security/utils/Base64.js,bin/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.js,bin/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.js,bin/com/sun/org/apache/xml/internal/security/utils/Constants.js,bin/com/sun/org/apache/xml/internal/security/utils/DigesterOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/ElementChecker.js,bin/com/sun/org/apache/xml/internal/security/utils/ElementCheckerImpl.js,bin/com/sun/org/apache/xml/internal/security/utils/ElementProxy.js,bin/com/sun/org/apache/xml/internal/security/utils/EncryptionConstants.js,bin/com/sun/org/apache/xml/internal/security/utils/EncryptionElementProxy.js,bin/com/sun/org/apache/xml/internal/security/utils/HelperNodeList.js,bin/com/sun/org/apache/xml/internal/security/utils/I18n.js,bin/com/sun/org/apache/xml/internal/security/utils/IdResolver.js,bin/com/sun/org/apache/xml/internal/security/utils/IgnoreAllErrorHandler.js,bin/com/sun/org/apache/xml/internal/security/utils/JavaUtils.js,bin/com/sun/org/apache/xml/internal/security/utils/RFC2253Parser.js,bin/com/sun/org/apache/xml/internal/security/utils/SignatureElementProxy.js,bin/com/sun/org/apache/xml/internal/security/utils/SignerOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream.js,bin/com/sun/org/apache/xml/internal/security/utils/XMLUtils.js,bin/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolverException.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolverSpi.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverAnonymous.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverDirectHTTP.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverFragment.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverLocalFilesystem.js,bin/com/sun/org/apache/xml/internal/security/utils/resolver/implementations/ResolverXPointer.js,bin/com/sun/pept/Delegate.js,bin/com/sun/pept/encoding/Decoder.js,bin/com/sun/pept/encoding/Encoder.js,bin/com/sun/pept/ept/Acceptor.js,bin/com/sun/pept/ept/ContactInfo.js,bin/com/sun/pept/ept/ContactInfoList.js,bin/com/sun/pept/ept/ContactInfoListIterator.js,bin/com/sun/pept/ept/EPTFactory.js,bin/com/sun/pept/ept/MessageInfo.js,bin/com/sun/pept/presentation/MessageStruct.js,bin/com/sun/pept/presentation/Stub.js,bin/com/sun/pept/presentation/TargetFinder.js,bin/com/sun/pept/presentation/Tie.js,bin/com/sun/pept/protocol/Interceptors.js,bin/com/sun/pept/protocol/MessageDispatcher.js,bin/com/sun/pept/transport/Connection.js,bin/com/sun/rmi/rmid/ExecOptionPermission.js,bin/com/sun/rmi/rmid/ExecPermission.js,bin/com/sun/rowset/CachedRowSetImpl.js,bin/com/sun/rowset/FilteredRowSetImpl.js,bin/com/sun/rowset/JdbcRowSetImpl.js,bin/com/sun/rowset/JdbcRowSetResourceBundle.js,bin/com/sun/rowset/JoinRowSetImpl.js,bin/com/sun/rowset/WebRowSetImpl.js,bin/com/sun/rowset/internal/BaseRow.js,bin/com/sun/rowset/internal/CachedRowSetReader.js,bin/com/sun/rowset/internal/CachedRowSetWriter.js,bin/com/sun/rowset/internal/InsertRow.js,bin/com/sun/rowset/internal/Row.js,bin/com/sun/rowset/internal/SyncResolverImpl.js,bin/com/sun/rowset/internal/WebRowSetXmlReader.js,bin/com/sun/rowset/internal/WebRowSetXmlWriter.js,bin/com/sun/rowset/internal/XmlErrorHandler.js,bin/com/sun/rowset/internal/XmlReaderContentHandler.js,bin/com/sun/rowset/internal/XmlResolver.js,bin/com/sun/rowset/providers/RIOptimisticProvider.js,bin/com/sun/rowset/providers/RIXMLProvider.js,bin/com/sun/script/javascript/ExternalScriptable.js,bin/com/sun/script/javascript/JSAdapter.js,bin/com/sun/script/javascript/JavaAdapter.js,bin/com/sun/script/javascript/RhinoClassShutter.js,bin/com/sun/script/javascript/RhinoCompiledScript.js,bin/com/sun/script/javascript/RhinoScriptEngine.js,bin/com/sun/script/javascript/RhinoScriptEngineFactory.js,bin/com/sun/script/javascript/RhinoTopLevel.js,bin/com/sun/script/javascript/RhinoWrapFactory.js,bin/com/sun/script/util/BindingsBase.js,bin/com/sun/script/util/BindingsEntrySet.js,bin/com/sun/script/util/BindingsImpl.js,bin/com/sun/script/util/InterfaceImplementor.js,bin/com/sun/script/util/ScriptEngineFactoryBase.js,bin/com/sun/security/auth/LdapPrincipal.js,bin/com/sun/security/auth/NTDomainPrincipal.js,bin/com/sun/security/auth/NTNumericCredential.js,bin/com/sun/security/auth/NTSid.js,bin/com/sun/security/auth/NTSidDomainPrincipal.js,bin/com/sun/security/auth/NTSidGroupPrincipal.js,bin/com/sun/security/auth/NTSidPrimaryGroupPrincipal.js,bin/com/sun/security/auth/NTSidUserPrincipal.js,bin/com/sun/security/auth/NTUserPrincipal.js,bin/com/sun/security/auth/PolicyFile.js,bin/com/sun/security/auth/PolicyParser.js,bin/com/sun/security/auth/PrincipalComparator.js,bin/com/sun/security/auth/SolarisNumericGroupPrincipal.js,bin/com/sun/security/auth/SolarisNumericUserPrincipal.js,bin/com/sun/security/auth/SolarisPrincipal.js,bin/com/sun/security/auth/SubjectCodeSource.js,bin/com/sun/security/auth/UnixNumericGroupPrincipal.js,bin/com/sun/security/auth/UnixNumericUserPrincipal.js,bin/com/sun/security/auth/UnixPrincipal.js,bin/com/sun/security/auth/UserPrincipal.js,bin/com/sun/security/auth/X500Principal.js,bin/com/sun/security/auth/callback/DialogCallbackHandler.js,bin/com/sun/security/auth/callback/TextCallbackHandler.js,bin/com/sun/security/auth/login/ConfigFile.js,bin/com/sun/security/auth/module/Crypt.js,bin/com/sun/security/auth/module/JndiLoginModule.js,bin/com/sun/security/auth/module/KeyStoreLoginModule.js,bin/com/sun/security/auth/module/Krb5LoginModule.js,bin/com/sun/security/auth/module/LdapLoginModule.js,bin/com/sun/security/auth/module/NTLoginModule.js,bin/com/sun/security/auth/module/NTSystem.js,bin/com/sun/security/auth/module/SolarisLoginModule.js,bin/com/sun/security/auth/module/SolarisSystem.js,bin/com/sun/security/auth/module/UnixLoginModule.js,bin/com/sun/security/auth/module/UnixSystem.js,bin/com/sun/security/cert/internal/x509/X509V1CertImpl.js,bin/com/sun/security/jgss/GSSUtil.js,bin/com/sun/security/sasl/ClientFactoryImpl.js,bin/com/sun/security/sasl/CramMD5Base.js,bin/com/sun/security/sasl/CramMD5Client.js,bin/com/sun/security/sasl/CramMD5Server.js,bin/com/sun/security/sasl/ExternalClient.js,bin/com/sun/security/sasl/PlainClient.js,bin/com/sun/security/sasl/Provider.js,bin/com/sun/security/sasl/ServerFactoryImpl.js,bin/com/sun/security/sasl/digest/DigestMD5Base.js,bin/com/sun/security/sasl/digest/DigestMD5Client.js,bin/com/sun/security/sasl/digest/DigestMD5Server.js,bin/com/sun/security/sasl/digest/FactoryImpl.js,bin/com/sun/security/sasl/digest/SecurityCtx.js,bin/com/sun/security/sasl/gsskerb/FactoryImpl.js,bin/com/sun/security/sasl/gsskerb/GssKrb5Base.js,bin/com/sun/security/sasl/gsskerb/GssKrb5Client.js,bin/com/sun/security/sasl/gsskerb/GssKrb5Server.js,bin/com/sun/security/sasl/util/AbstractSaslImpl.js,bin/com/sun/security/sasl/util/PolicyUtils.js,bin/com/sun/tools/attach/AgentInitializationException.js,bin/com/sun/tools/attach/AgentLoadException.js,bin/com/sun/tools/attach/AttachNotSupportedException.js,bin/com/sun/tools/attach/AttachPermission.js,bin/com/sun/tools/attach/VirtualMachine.js,bin/com/sun/tools/attach/VirtualMachineDescriptor.js,bin/com/sun/tools/attach/spi/AttachProvider.js,bin/com/sun/tools/example/debug/bdi/AccessWatchpointSpec.js,bin/com/sun/tools/example/debug/bdi/AmbiguousMethodException.js,bin/com/sun/tools/example/debug/bdi/BreakpointSpec.js,bin/com/sun/tools/example/debug/bdi/ChildSession.js,bin/com/sun/tools/example/debug/bdi/EvaluationException.js,bin/com/sun/tools/example/debug/bdi/EventRequestSpec.js,bin/com/sun/tools/example/debug/bdi/EventRequestSpecList.js,bin/com/sun/tools/example/debug/bdi/ExceptionSpec.js,bin/com/sun/tools/example/debug/bdi/ExecutionManager.js,bin/com/sun/tools/example/debug/bdi/FrameIndexOutOfBoundsException.js,bin/com/sun/tools/example/debug/bdi/InputListener.js,bin/com/sun/tools/example/debug/bdi/JDIEventSource.js,bin/com/sun/tools/example/debug/bdi/LineBreakpointSpec.js,bin/com/sun/tools/example/debug/bdi/LineNotFoundException.js,bin/com/sun/tools/example/debug/bdi/MalformedMemberNameException.js,bin/com/sun/tools/example/debug/bdi/MethodBreakpointSpec.js,bin/com/sun/tools/example/debug/bdi/MethodNotFoundException.js,bin/com/sun/tools/example/debug/bdi/ModificationWatchpointSpec.js,bin/com/sun/tools/example/debug/bdi/NoSessionException.js,bin/com/sun/tools/example/debug/bdi/NoThreadException.js,bin/com/sun/tools/example/debug/bdi/OutputListener.js,bin/com/sun/tools/example/debug/bdi/ParseException.js,bin/com/sun/tools/example/debug/bdi/PatternReferenceTypeSpec.js,bin/com/sun/tools/example/debug/bdi/ReferenceTypeSpec.js,bin/com/sun/tools/example/debug/bdi/Session.js,bin/com/sun/tools/example/debug/bdi/SessionListener.js,bin/com/sun/tools/example/debug/bdi/SourceNameReferenceTypeSpec.js,bin/com/sun/tools/example/debug/bdi/SpecErrorEvent.js,bin/com/sun/tools/example/debug/bdi/SpecEvent.js,bin/com/sun/tools/example/debug/bdi/SpecListener.js,bin/com/sun/tools/example/debug/bdi/ThreadGroupIterator.js,bin/com/sun/tools/example/debug/bdi/ThreadInfo.js,bin/com/sun/tools/example/debug/bdi/ThreadIterator.js,bin/com/sun/tools/example/debug/bdi/Utils.js,bin/com/sun/tools/example/debug/bdi/VMLaunchFailureException.js,bin/com/sun/tools/example/debug/bdi/VMNotInterruptedException.js,bin/com/sun/tools/example/debug/bdi/WatchpointSpec.js,bin/com/sun/tools/example/debug/event/AbstractEventSet.js,bin/com/sun/tools/example/debug/event/AccessWatchpointEventSet.js,bin/com/sun/tools/example/debug/event/ClassPrepareEventSet.js,bin/com/sun/tools/example/debug/event/ClassUnloadEventSet.js,bin/com/sun/tools/example/debug/event/ExceptionEventSet.js,bin/com/sun/tools/example/debug/event/JDIAdapter.js,bin/com/sun/tools/example/debug/event/JDIListener.js,bin/com/sun/tools/example/debug/event/LocatableEventSet.js,bin/com/sun/tools/example/debug/event/LocationTriggerEventSet.js,bin/com/sun/tools/example/debug/event/ModificationWatchpointEventSet.js,bin/com/sun/tools/example/debug/event/ThreadDeathEventSet.js,bin/com/sun/tools/example/debug/event/ThreadStartEventSet.js,bin/com/sun/tools/example/debug/event/VMDeathEventSet.js,bin/com/sun/tools/example/debug/event/VMDisconnectEventSet.js,bin/com/sun/tools/example/debug/event/VMStartEventSet.js,bin/com/sun/tools/example/debug/event/WatchpointEventSet.js,bin/com/sun/tools/example/debug/expr/ASCII_UCodeESC_CharStream.js,bin/com/sun/tools/example/debug/expr/ExpressionParser.js,bin/com/sun/tools/example/debug/expr/ExpressionParserConstants.js,bin/com/sun/tools/example/debug/expr/ExpressionParserTokenManager.js,bin/com/sun/tools/example/debug/expr/LValue.js,bin/com/sun/tools/example/debug/expr/ParseException.js,bin/com/sun/tools/example/debug/expr/Token.js,bin/com/sun/tools/example/debug/expr/TokenMgrError.js,bin/com/sun/tools/example/debug/gui/ApplicationTool.js,bin/com/sun/tools/example/debug/gui/ClassManager.js,bin/com/sun/tools/example/debug/gui/ClassTreeTool.js,bin/com/sun/tools/example/debug/gui/CommandInterpreter.js,bin/com/sun/tools/example/debug/gui/CommandTool.js,bin/com/sun/tools/example/debug/gui/ContextListener.js,bin/com/sun/tools/example/debug/gui/ContextManager.js,bin/com/sun/tools/example/debug/gui/CurrentFrameChangedEvent.js,bin/com/sun/tools/example/debug/gui/Environment.js,bin/com/sun/tools/example/debug/gui/GUI.js,bin/com/sun/tools/example/debug/gui/Icons.js,bin/com/sun/tools/example/debug/gui/JDBFileFilter.js,bin/com/sun/tools/example/debug/gui/JDBMenuBar.js,bin/com/sun/tools/example/debug/gui/JDBToolBar.js,bin/com/sun/tools/example/debug/gui/LaunchTool.js,bin/com/sun/tools/example/debug/gui/MonitorListModel.js,bin/com/sun/tools/example/debug/gui/MonitorTool.js,bin/com/sun/tools/example/debug/gui/OutputSink.js,bin/com/sun/tools/example/debug/gui/SearchPath.js,bin/com/sun/tools/example/debug/gui/SingleLeafTreeSelectionModel.js,bin/com/sun/tools/example/debug/gui/SourceListener.js,bin/com/sun/tools/example/debug/gui/SourceManager.js,bin/com/sun/tools/example/debug/gui/SourceModel.js,bin/com/sun/tools/example/debug/gui/SourceTool.js,bin/com/sun/tools/example/debug/gui/SourceTreeTool.js,bin/com/sun/tools/example/debug/gui/SourcepathChangedEvent.js,bin/com/sun/tools/example/debug/gui/StackTraceTool.js,bin/com/sun/tools/example/debug/gui/ThreadTreeTool.js,bin/com/sun/tools/example/debug/gui/TypeScript.js,bin/com/sun/tools/example/debug/gui/TypeScriptOutputListener.js,bin/com/sun/tools/example/debug/gui/TypeScriptWriter.js,bin/com/sun/tools/example/debug/tty/AccessWatchpointSpec.js,bin/com/sun/tools/example/debug/tty/AmbiguousMethodException.js,bin/com/sun/tools/example/debug/tty/BreakpointSpec.js,bin/com/sun/tools/example/debug/tty/Commands.js,bin/com/sun/tools/example/debug/tty/Env.js,bin/com/sun/tools/example/debug/tty/EventHandler.js,bin/com/sun/tools/example/debug/tty/EventNotifier.js,bin/com/sun/tools/example/debug/tty/EventRequestSpec.js,bin/com/sun/tools/example/debug/tty/EventRequestSpecList.js,bin/com/sun/tools/example/debug/tty/ExceptionSpec.js,bin/com/sun/tools/example/debug/tty/LineNotFoundException.js,bin/com/sun/tools/example/debug/tty/MalformedMemberNameException.js,bin/com/sun/tools/example/debug/tty/MessageOutput.js,bin/com/sun/tools/example/debug/tty/ModificationWatchpointSpec.js,bin/com/sun/tools/example/debug/tty/PatternReferenceTypeSpec.js,bin/com/sun/tools/example/debug/tty/ReferenceTypeSpec.js,bin/com/sun/tools/example/debug/tty/SourceMapper.js,bin/com/sun/tools/example/debug/tty/TTY.js,bin/com/sun/tools/example/debug/tty/TTYResources.js,bin/com/sun/tools/example/debug/tty/TTYResources_ja.js,bin/com/sun/tools/example/debug/tty/TTYResources_zh_CN.js,bin/com/sun/tools/example/debug/tty/ThreadGroupIterator.js,bin/com/sun/tools/example/debug/tty/ThreadInfo.js,bin/com/sun/tools/example/debug/tty/ThreadIterator.js,bin/com/sun/tools/example/debug/tty/VMConnection.js,bin/com/sun/tools/example/debug/tty/VMNotConnectedException.js,bin/com/sun/tools/example/debug/tty/WatchpointSpec.js,bin/com/sun/tools/example/trace/EventThread.js,bin/com/sun/tools/example/trace/StreamRedirectThread.js,bin/com/sun/tools/example/trace/Trace.js,bin/com/sun/tools/extcheck/ExtCheck.js,bin/com/sun/tools/extcheck/Main.js,bin/com/sun/tools/hat/Main.js,bin/com/sun/tools/hat/internal/model/AbstractJavaHeapObjectVisitor.js,bin/com/sun/tools/hat/internal/model/ArrayTypeCodes.js,bin/com/sun/tools/hat/internal/model/HackJavaValue.js,bin/com/sun/tools/hat/internal/model/JavaBoolean.js,bin/com/sun/tools/hat/internal/model/JavaByte.js,bin/com/sun/tools/hat/internal/model/JavaChar.js,bin/com/sun/tools/hat/internal/model/JavaClass.js,bin/com/sun/tools/hat/internal/model/JavaDouble.js,bin/com/sun/tools/hat/internal/model/JavaField.js,bin/com/sun/tools/hat/internal/model/JavaFloat.js,bin/com/sun/tools/hat/internal/model/JavaHeapObject.js,bin/com/sun/tools/hat/internal/model/JavaHeapObjectVisitor.js,bin/com/sun/tools/hat/internal/model/JavaInt.js,bin/com/sun/tools/hat/internal/model/JavaLazyReadObject.js,bin/com/sun/tools/hat/internal/model/JavaLong.js,bin/com/sun/tools/hat/internal/model/JavaObject.js,bin/com/sun/tools/hat/internal/model/JavaObjectArray.js,bin/com/sun/tools/hat/internal/model/JavaObjectRef.js,bin/com/sun/tools/hat/internal/model/JavaShort.js,bin/com/sun/tools/hat/internal/model/JavaStatic.js,bin/com/sun/tools/hat/internal/model/JavaThing.js,bin/com/sun/tools/hat/internal/model/JavaValue.js,bin/com/sun/tools/hat/internal/model/JavaValueArray.js,bin/com/sun/tools/hat/internal/model/ReachableExcludes.js,bin/com/sun/tools/hat/internal/model/ReachableExcludesImpl.js,bin/com/sun/tools/hat/internal/model/ReachableObjects.js,bin/com/sun/tools/hat/internal/model/ReferenceChain.js,bin/com/sun/tools/hat/internal/model/Root.js,bin/com/sun/tools/hat/internal/model/Snapshot.js,bin/com/sun/tools/hat/internal/model/StackFrame.js,bin/com/sun/tools/hat/internal/model/StackTrace.js,bin/com/sun/tools/hat/internal/oql/OQLEngine.js,bin/com/sun/tools/hat/internal/oql/OQLException.js,bin/com/sun/tools/hat/internal/oql/OQLQuery.js,bin/com/sun/tools/hat/internal/oql/ObjectVisitor.js,bin/com/sun/tools/hat/internal/parser/FileReadBuffer.js,bin/com/sun/tools/hat/internal/parser/HprofReader.js,bin/com/sun/tools/hat/internal/parser/MappedReadBuffer.js,bin/com/sun/tools/hat/internal/parser/PositionDataInputStream.js,bin/com/sun/tools/hat/internal/parser/PositionInputStream.js,bin/com/sun/tools/hat/internal/parser/ReadBuffer.js,bin/com/sun/tools/hat/internal/parser/Reader.js,bin/com/sun/tools/hat/internal/server/AllClassesQuery.js,bin/com/sun/tools/hat/internal/server/AllRootsQuery.js,bin/com/sun/tools/hat/internal/server/ClassQuery.js,bin/com/sun/tools/hat/internal/server/FinalizerObjectsQuery.js,bin/com/sun/tools/hat/internal/server/FinalizerSummaryQuery.js,bin/com/sun/tools/hat/internal/server/HistogramQuery.js,bin/com/sun/tools/hat/internal/server/HttpReader.js,bin/com/sun/tools/hat/internal/server/InstancesCountQuery.js,bin/com/sun/tools/hat/internal/server/InstancesQuery.js,bin/com/sun/tools/hat/internal/server/OQLHelp.js,bin/com/sun/tools/hat/internal/server/OQLQuery.js,bin/com/sun/tools/hat/internal/server/ObjectQuery.js,bin/com/sun/tools/hat/internal/server/PlatformClasses.js,bin/com/sun/tools/hat/internal/server/QueryHandler.js,bin/com/sun/tools/hat/internal/server/QueryListener.js,bin/com/sun/tools/hat/internal/server/ReachableQuery.js,bin/com/sun/tools/hat/internal/server/RefsByTypeQuery.js,bin/com/sun/tools/hat/internal/server/RootStackQuery.js,bin/com/sun/tools/hat/internal/server/RootsQuery.js,bin/com/sun/tools/hat/internal/util/ArraySorter.js,bin/com/sun/tools/hat/internal/util/Comparer.js,bin/com/sun/tools/hat/internal/util/CompositeEnumeration.js,bin/com/sun/tools/hat/internal/util/Misc.js,bin/com/sun/tools/hat/internal/util/VectorSorter.js,bin/com/sun/tools/jconsole/JConsoleContext.js,bin/com/sun/tools/jconsole/JConsolePlugin.js,bin/com/sun/tools/jdi/AbstractLauncher.js,bin/com/sun/tools/jdi/ArrayReferenceImpl.js,bin/com/sun/tools/jdi/ArrayTypeImpl.js,bin/com/sun/tools/jdi/BaseLineInfo.js,bin/com/sun/tools/jdi/BooleanTypeImpl.js,bin/com/sun/tools/jdi/BooleanValueImpl.js,bin/com/sun/tools/jdi/ByteTypeImpl.js,bin/com/sun/tools/jdi/ByteValueImpl.js,bin/com/sun/tools/jdi/CharTypeImpl.js,bin/com/sun/tools/jdi/CharValueImpl.js,bin/com/sun/tools/jdi/ClassLoaderReferenceImpl.js,bin/com/sun/tools/jdi/ClassObjectReferenceImpl.js,bin/com/sun/tools/jdi/ClassTypeImpl.js,bin/com/sun/tools/jdi/CommandSender.js,bin/com/sun/tools/jdi/ConcreteMethodImpl.js,bin/com/sun/tools/jdi/ConnectorImpl.js,bin/com/sun/tools/jdi/DoubleTypeImpl.js,bin/com/sun/tools/jdi/DoubleValueImpl.js,bin/com/sun/tools/jdi/EventQueueImpl.js,bin/com/sun/tools/jdi/EventRequestManagerImpl.js,bin/com/sun/tools/jdi/EventSetImpl.js,bin/com/sun/tools/jdi/FieldImpl.js,bin/com/sun/tools/jdi/FloatTypeImpl.js,bin/com/sun/tools/jdi/FloatValueImpl.js,bin/com/sun/tools/jdi/GenericAttachingConnector.js,bin/com/sun/tools/jdi/GenericListeningConnector.js,bin/com/sun/tools/jdi/IntegerTypeImpl.js,bin/com/sun/tools/jdi/IntegerValueImpl.js,bin/com/sun/tools/jdi/InterfaceTypeImpl.js,bin/com/sun/tools/jdi/InternalEventHandler.js,bin/com/sun/tools/jdi/JDWPException.js,bin/com/sun/tools/jdi/JNITypeParser.js,bin/com/sun/tools/jdi/LineInfo.js,bin/com/sun/tools/jdi/LinkedHashMap.js,bin/com/sun/tools/jdi/LocalVariableImpl.js,bin/com/sun/tools/jdi/LocationImpl.js,bin/com/sun/tools/jdi/LockObject.js,bin/com/sun/tools/jdi/LongTypeImpl.js,bin/com/sun/tools/jdi/LongValueImpl.js,bin/com/sun/tools/jdi/MethodImpl.js,bin/com/sun/tools/jdi/MirrorImpl.js,bin/com/sun/tools/jdi/MonitorInfoImpl.js,bin/com/sun/tools/jdi/NonConcreteMethodImpl.js,bin/com/sun/tools/jdi/ObjectReferenceImpl.js,bin/com/sun/tools/jdi/ObsoleteMethodImpl.js,bin/com/sun/tools/jdi/Packet.js,bin/com/sun/tools/jdi/PacketStream.js,bin/com/sun/tools/jdi/PrimitiveTypeImpl.js,bin/com/sun/tools/jdi/PrimitiveValueImpl.js,bin/com/sun/tools/jdi/ProcessAttachingConnector.js,bin/com/sun/tools/jdi/RawCommandLineLauncher.js,bin/com/sun/tools/jdi/ReferenceTypeImpl.js,bin/com/sun/tools/jdi/SDE.js,bin/com/sun/tools/jdi/ShortTypeImpl.js,bin/com/sun/tools/jdi/ShortValueImpl.js,bin/com/sun/tools/jdi/SocketAttachingConnector.js,bin/com/sun/tools/jdi/SocketListeningConnector.js,bin/com/sun/tools/jdi/SocketTransportService.js,bin/com/sun/tools/jdi/StackFrameImpl.js,bin/com/sun/tools/jdi/StratumLineInfo.js,bin/com/sun/tools/jdi/StringReferenceImpl.js,bin/com/sun/tools/jdi/SunCommandLineLauncher.js,bin/com/sun/tools/jdi/TargetVM.js,bin/com/sun/tools/jdi/ThreadAction.js,bin/com/sun/tools/jdi/ThreadGroupReferenceImpl.js,bin/com/sun/tools/jdi/ThreadListener.js,bin/com/sun/tools/jdi/ThreadReferenceImpl.js,bin/com/sun/tools/jdi/TypeComponentImpl.js,bin/com/sun/tools/jdi/TypeImpl.js,bin/com/sun/tools/jdi/VMAction.js,bin/com/sun/tools/jdi/VMListener.js,bin/com/sun/tools/jdi/VMModifiers.js,bin/com/sun/tools/jdi/VMState.js,bin/com/sun/tools/jdi/ValueContainer.js,bin/com/sun/tools/jdi/ValueImpl.js,bin/com/sun/tools/jdi/VirtualMachineImpl.js,bin/com/sun/tools/jdi/VirtualMachineManagerImpl.js,bin/com/sun/tools/jdi/VirtualMachineManagerService.js,bin/com/sun/tools/jdi/VoidTypeImpl.js,bin/com/sun/tools/jdi/VoidValueImpl.js,bin/com/sun/tools/script/shell/Main.js,bin/java/applet/Applet.js,bin/java/applet/AppletContext.js,bin/java/applet/AppletStub.js,bin/java/applet/AudioClip.js,bin/java/awt/AWTError.js,bin/java/awt/AWTEvent.js,bin/java/awt/AWTEventMulticaster.js,bin/java/awt/AWTException.js,bin/java/awt/AWTKeyStroke.js,bin/java/awt/AWTPermission.js,bin/java/awt/ActiveEvent.js,bin/java/awt/Adjustable.js,bin/java/awt/AlphaComposite.js,bin/java/awt/AttributeValue.js,bin/java/awt/BasicStroke.js,bin/java/awt/BorderLayout.js,bin/java/awt/BufferCapabilities.js,bin/java/awt/Button.js,bin/java/awt/Canvas.js,bin/java/awt/CardLayout.js,bin/java/awt/Checkbox.js,bin/java/awt/CheckboxGroup.js,bin/java/awt/CheckboxMenuItem.js,bin/java/awt/Choice.js,bin/java/awt/Color.js,bin/java/awt/ColorPaintContext.js,bin/java/awt/Component.js,bin/java/awt/ComponentOrientation.js,bin/java/awt/Composite.js,bin/java/awt/CompositeContext.js,bin/java/awt/Conditional.js,bin/java/awt/Container.js,bin/java/awt/ContainerOrderFocusTraversalPolicy.js,bin/java/awt/Cursor.js,bin/java/awt/DefaultFocusTraversalPolicy.js,bin/java/awt/DefaultKeyboardFocusManager.js,bin/java/awt/Desktop.js,bin/java/awt/Dialog.js,bin/java/awt/Dimension.js,bin/java/awt/DisplayMode.js,bin/java/awt/Event.js,bin/java/awt/EventDispatchThread.js,bin/java/awt/EventFilter.js,bin/java/awt/EventQueue.js,bin/java/awt/FileDialog.js,bin/java/awt/FlowLayout.js,bin/java/awt/FocusTraversalPolicy.js,bin/java/awt/Font.js,bin/java/awt/FontFormatException.js,bin/java/awt/FontMetrics.js,bin/java/awt/Frame.js,bin/java/awt/GradientPaint.js,bin/java/awt/GradientPaintContext.js,bin/java/awt/Graphics.js,bin/java/awt/Graphics2D.js,bin/java/awt/GraphicsCallback.js,bin/java/awt/GraphicsConfigTemplate.js,bin/java/awt/GraphicsConfiguration.js,bin/java/awt/GraphicsDevice.js,bin/java/awt/GraphicsEnvironment.js,bin/java/awt/GridBagConstraints.js,bin/java/awt/GridBagLayout.js,bin/java/awt/GridBagLayoutInfo.js,bin/java/awt/GridLayout.js,bin/java/awt/HeadlessException.js,bin/java/awt/IllegalComponentStateException.js,bin/java/awt/Image.js,bin/java/awt/ImageCapabilities.js,bin/java/awt/Insets.js,bin/java/awt/ItemSelectable.js,bin/java/awt/JobAttributes.js,bin/java/awt/KeyEventDispatcher.js,bin/java/awt/KeyEventPostProcessor.js,bin/java/awt/KeyboardFocusManager.js,bin/java/awt/Label.js,bin/java/awt/LayoutManager.js,bin/java/awt/LayoutManager2.js,bin/java/awt/LinearGradientPaint.js,bin/java/awt/LinearGradientPaintContext.js,bin/java/awt/List.js,bin/java/awt/MediaTracker.js,bin/java/awt/Menu.js,bin/java/awt/MenuBar.js,bin/java/awt/MenuComponent.js,bin/java/awt/MenuContainer.js,bin/java/awt/MenuItem.js,bin/java/awt/MenuShortcut.js,bin/java/awt/ModalEventFilter.js,bin/java/awt/MouseInfo.js,bin/java/awt/MultipleGradientPaint.js,bin/java/awt/MultipleGradientPaintContext.js,bin/java/awt/PageAttributes.js,bin/java/awt/Paint.js,bin/java/awt/PaintContext.js,bin/java/awt/Panel.js,bin/java/awt/Point.js,bin/java/awt/PointerInfo.js,bin/java/awt/Polygon.js,bin/java/awt/PopupMenu.js,bin/java/awt/PrintGraphics.js,bin/java/awt/PrintJob.js,bin/java/awt/RadialGradientPaint.js,bin/java/awt/RadialGradientPaintContext.js,bin/java/awt/Rectangle.js,bin/java/awt/RenderingHints.js,bin/java/awt/Robot.js,bin/java/awt/ScrollPane.js,bin/java/awt/ScrollPaneAdjustable.js,bin/java/awt/Scrollbar.js,bin/java/awt/SentEvent.js,bin/java/awt/SequencedEvent.js,bin/java/awt/Shape.js,bin/java/awt/SplashScreen.js,bin/java/awt/Stroke.js,bin/java/awt/SystemColor.js,bin/java/awt/SystemTray.js,bin/java/awt/TextArea.js,bin/java/awt/TextComponent.js,bin/java/awt/TextField.js,bin/java/awt/TexturePaint.js,bin/java/awt/TexturePaintContext.js,bin/java/awt/Toolkit.js,bin/java/awt/Transparency.js,bin/java/awt/TrayIcon.js,bin/java/awt/Window.js,bin/java/awt/color/CMMException.js,bin/java/awt/color/ColorSpace.js,bin/java/awt/color/ICC_ColorSpace.js,bin/java/awt/color/ICC_Profile.js,bin/java/awt/color/ICC_ProfileGray.js,bin/java/awt/color/ICC_ProfileRGB.js,bin/java/awt/color/ProfileDataException.js,bin/java/awt/datatransfer/Clipboard.js,bin/java/awt/datatransfer/ClipboardOwner.js,bin/java/awt/datatransfer/DataFlavor.js,bin/java/awt/datatransfer/FlavorEvent.js,bin/java/awt/datatransfer/FlavorListener.js,bin/java/awt/datatransfer/FlavorMap.js,bin/java/awt/datatransfer/FlavorTable.js,bin/java/awt/datatransfer/MimeType.js,bin/java/awt/datatransfer/MimeTypeParameterList.js,bin/java/awt/datatransfer/MimeTypeParseException.js,bin/java/awt/datatransfer/StringSelection.js,bin/java/awt/datatransfer/SystemFlavorMap.js,bin/java/awt/datatransfer/Transferable.js,bin/java/awt/datatransfer/UnsupportedFlavorException.js,bin/java/awt/dnd/Autoscroll.js,bin/java/awt/dnd/DnDConstants.js,bin/java/awt/dnd/DnDEventMulticaster.js,bin/java/awt/dnd/DragGestureEvent.js,bin/java/awt/dnd/DragGestureListener.js,bin/java/awt/dnd/DragGestureRecognizer.js,bin/java/awt/dnd/DragSource.js,bin/java/awt/dnd/DragSourceAdapter.js,bin/java/awt/dnd/DragSourceContext.js,bin/java/awt/dnd/DragSourceDragEvent.js,bin/java/awt/dnd/DragSourceDropEvent.js,bin/java/awt/dnd/DragSourceEvent.js,bin/java/awt/dnd/DragSourceListener.js,bin/java/awt/dnd/DragSourceMotionListener.js,bin/java/awt/dnd/DropTarget.js,bin/java/awt/dnd/DropTargetAdapter.js,bin/java/awt/dnd/DropTargetContext.js,bin/java/awt/dnd/DropTargetDragEvent.js,bin/java/awt/dnd/DropTargetDropEvent.js,bin/java/awt/dnd/DropTargetEvent.js,bin/java/awt/dnd/DropTargetListener.js,bin/java/awt/dnd/InvalidDnDOperationException.js,bin/java/awt/dnd/MouseDragGestureRecognizer.js,bin/java/awt/dnd/SerializationTester.js,bin/java/awt/dnd/peer/DragSourceContextPeer.js,bin/java/awt/dnd/peer/DropTargetContextPeer.js,bin/java/awt/dnd/peer/DropTargetPeer.js,bin/java/awt/event/AWTEventListener.js,bin/java/awt/event/AWTEventListenerProxy.js,bin/java/awt/event/ActionEvent.js,bin/java/awt/event/ActionListener.js,bin/java/awt/event/AdjustmentEvent.js,bin/java/awt/event/AdjustmentListener.js,bin/java/awt/event/ComponentAdapter.js,bin/java/awt/event/ComponentEvent.js,bin/java/awt/event/ComponentListener.js,bin/java/awt/event/ContainerAdapter.js,bin/java/awt/event/ContainerEvent.js,bin/java/awt/event/ContainerListener.js,bin/java/awt/event/FocusAdapter.js,bin/java/awt/event/FocusEvent.js,bin/java/awt/event/FocusListener.js,bin/java/awt/event/HierarchyBoundsAdapter.js,bin/java/awt/event/HierarchyBoundsListener.js,bin/java/awt/event/HierarchyEvent.js,bin/java/awt/event/HierarchyListener.js,bin/java/awt/event/InputEvent.js,bin/java/awt/event/InputMethodEvent.js,bin/java/awt/event/InputMethodListener.js,bin/java/awt/event/InvocationEvent.js,bin/java/awt/event/ItemEvent.js,bin/java/awt/event/ItemListener.js,bin/java/awt/event/KeyAdapter.js,bin/java/awt/event/KeyEvent.js,bin/java/awt/event/KeyListener.js,bin/java/awt/event/MouseAdapter.js,bin/java/awt/event/MouseEvent.js,bin/java/awt/event/MouseListener.js,bin/java/awt/event/MouseMotionAdapter.js,bin/java/awt/event/MouseMotionListener.js,bin/java/awt/event/MouseWheelEvent.js,bin/java/awt/event/MouseWheelListener.js,bin/java/awt/event/NativeLibLoader.js,bin/java/awt/event/PaintEvent.js,bin/java/awt/event/TextEvent.js,bin/java/awt/event/TextListener.js,bin/java/awt/event/WindowAdapter.js,bin/java/awt/event/WindowEvent.js,bin/java/awt/event/WindowFocusListener.js,bin/java/awt/event/WindowListener.js,bin/java/awt/event/WindowStateListener.js,bin/java/awt/font/CharArrayIterator.js,bin/java/awt/font/FontRenderContext.js,bin/java/awt/font/GlyphJustificationInfo.js,bin/java/awt/font/GlyphMetrics.js,bin/java/awt/font/GlyphVector.js,bin/java/awt/font/GraphicAttribute.js,bin/java/awt/font/ImageGraphicAttribute.js,bin/java/awt/font/LayoutPath.js,bin/java/awt/font/LineBreakMeasurer.js,bin/java/awt/font/LineMetrics.js,bin/java/awt/font/MultipleMaster.js,bin/java/awt/font/NumericShaper.js,bin/java/awt/font/OpenType.js,bin/java/awt/font/ShapeGraphicAttribute.js,bin/java/awt/font/StyledParagraph.js,bin/java/awt/font/TextAttribute.js,bin/java/awt/font/TextHitInfo.js,bin/java/awt/font/TextJustifier.js,bin/java/awt/font/TextLayout.js,bin/java/awt/font/TextLine.js,bin/java/awt/font/TextMeasurer.js,bin/java/awt/font/TransformAttribute.js,bin/java/awt/geom/AffineTransform.js,bin/java/awt/geom/Arc2D.js,bin/java/awt/geom/ArcIterator.js,bin/java/awt/geom/Area.js,bin/java/awt/geom/CubicCurve2D.js,bin/java/awt/geom/CubicIterator.js,bin/java/awt/geom/Dimension2D.js,bin/java/awt/geom/Ellipse2D.js,bin/java/awt/geom/EllipseIterator.js,bin/java/awt/geom/FlatteningPathIterator.js,bin/java/awt/geom/GeneralPath.js,bin/java/awt/geom/IllegalPathStateException.js,bin/java/awt/geom/Line2D.js,bin/java/awt/geom/LineIterator.js,bin/java/awt/geom/NoninvertibleTransformException.js,bin/java/awt/geom/Path2D.js,bin/java/awt/geom/PathIterator.js,bin/java/awt/geom/Point2D.js,bin/java/awt/geom/QuadCurve2D.js,bin/java/awt/geom/QuadIterator.js,bin/java/awt/geom/RectIterator.js,bin/java/awt/geom/Rectangle2D.js,bin/java/awt/geom/RectangularShape.js,bin/java/awt/geom/RoundRectIterator.js,bin/java/awt/geom/RoundRectangle2D.js,bin/java/awt/im/InputContext.js,bin/java/awt/im/InputMethodHighlight.js,bin/java/awt/im/InputMethodRequests.js,bin/java/awt/im/InputSubset.js,bin/java/awt/im/spi/InputMethod.js,bin/java/awt/im/spi/InputMethodContext.js,bin/java/awt/im/spi/InputMethodDescriptor.js,bin/java/awt/image/AffineTransformOp.js,bin/java/awt/image/AreaAveragingScaleFilter.js,bin/java/awt/image/BandCombineOp.js,bin/java/awt/image/BandedSampleModel.js,bin/java/awt/image/BufferStrategy.js,bin/java/awt/image/BufferedImage.js,bin/java/awt/image/BufferedImageFilter.js,bin/java/awt/image/BufferedImageOp.js,bin/java/awt/image/ByteLookupTable.js,bin/java/awt/image/ColorConvertOp.js,bin/java/awt/image/ColorModel.js,bin/java/awt/image/ComponentColorModel.js,bin/java/awt/image/ComponentSampleModel.js,bin/java/awt/image/ConvolveOp.js,bin/java/awt/image/CropImageFilter.js,bin/java/awt/image/DataBuffer.js,bin/java/awt/image/DataBufferByte.js,bin/java/awt/image/DataBufferDouble.js,bin/java/awt/image/DataBufferFloat.js,bin/java/awt/image/DataBufferInt.js,bin/java/awt/image/DataBufferShort.js,bin/java/awt/image/DataBufferUShort.js,bin/java/awt/image/DirectColorModel.js,bin/java/awt/image/FilteredImageSource.js,bin/java/awt/image/ImageConsumer.js,bin/java/awt/image/ImageFilter.js,bin/java/awt/image/ImageObserver.js,bin/java/awt/image/ImageProducer.js,bin/java/awt/image/ImagingOpException.js,bin/java/awt/image/IndexColorModel.js,bin/java/awt/image/Kernel.js,bin/java/awt/image/LookupOp.js,bin/java/awt/image/LookupTable.js,bin/java/awt/image/MemoryImageSource.js,bin/java/awt/image/MultiPixelPackedSampleModel.js,bin/java/awt/image/PackedColorModel.js,bin/java/awt/image/PixelGrabber.js,bin/java/awt/image/PixelInterleavedSampleModel.js,bin/java/awt/image/RGBImageFilter.js,bin/java/awt/image/Raster.js,bin/java/awt/image/RasterFormatException.js,bin/java/awt/image/RasterOp.js,bin/java/awt/image/RenderedImage.js,bin/java/awt/image/ReplicateScaleFilter.js,bin/java/awt/image/RescaleOp.js,bin/java/awt/image/SampleModel.js,bin/java/awt/image/ShortLookupTable.js,bin/java/awt/image/SinglePixelPackedSampleModel.js,bin/java/awt/image/TileObserver.js,bin/java/awt/image/VolatileImage.js,bin/java/awt/image/WritableRaster.js,bin/java/awt/image/WritableRenderedImage.js,bin/java/awt/image/renderable/ContextualRenderedImageFactory.js,bin/java/awt/image/renderable/ParameterBlock.js,bin/java/awt/image/renderable/RenderContext.js,bin/java/awt/image/renderable/RenderableImage.js,bin/java/awt/image/renderable/RenderableImageOp.js,bin/java/awt/image/renderable/RenderableImageProducer.js,bin/java/awt/image/renderable/RenderedImageFactory.js,bin/java/awt/peer/ButtonPeer.js,bin/java/awt/peer/CanvasPeer.js,bin/java/awt/peer/CheckboxMenuItemPeer.js,bin/java/awt/peer/CheckboxPeer.js,bin/java/awt/peer/ChoicePeer.js,bin/java/awt/peer/ComponentPeer.js,bin/java/awt/peer/ContainerPeer.js,bin/java/awt/peer/DesktopPeer.js,bin/java/awt/peer/DialogPeer.js,bin/java/awt/peer/FileDialogPeer.js,bin/java/awt/peer/FontPeer.js,bin/java/awt/peer/FramePeer.js,bin/java/awt/peer/KeyboardFocusManagerPeer.js,bin/java/awt/peer/LabelPeer.js,bin/java/awt/peer/LightweightPeer.js,bin/java/awt/peer/ListPeer.js,bin/java/awt/peer/MenuBarPeer.js,bin/java/awt/peer/MenuComponentPeer.js,bin/java/awt/peer/MenuItemPeer.js,bin/java/awt/peer/MenuPeer.js,bin/java/awt/peer/MouseInfoPeer.js,bin/java/awt/peer/PanelPeer.js,bin/java/awt/peer/PopupMenuPeer.js,bin/java/awt/peer/RobotPeer.js,bin/java/awt/peer/ScrollPanePeer.js,bin/java/awt/peer/ScrollbarPeer.js,bin/java/awt/peer/SystemTrayPeer.js,bin/java/awt/peer/TextAreaPeer.js,bin/java/awt/peer/TextComponentPeer.js,bin/java/awt/peer/TextFieldPeer.js,bin/java/awt/peer/TrayIconPeer.js,bin/java/awt/peer/WindowPeer.js,bin/java/awt/print/Book.js,bin/java/awt/print/PageFormat.js,bin/java/awt/print/Pageable.js,bin/java/awt/print/Paper.js,bin/java/awt/print/Printable.js,bin/java/awt/print/PrinterAbortException.js,bin/java/awt/print/PrinterException.js,bin/java/awt/print/PrinterGraphics.js,bin/java/awt/print/PrinterIOException.js,bin/java/awt/print/PrinterJob.js,bin/java/beans/AppletInitializer.js,bin/java/beans/BeanDescriptor.js,bin/java/beans/BeanInfo.js,bin/java/beans/Beans.js,bin/java/beans/ChangeListenerMap.js,bin/java/beans/ConstructorProperties.js,bin/java/beans/Customizer.js,bin/java/beans/DefaultPersistenceDelegate.js,bin/java/beans/DesignMode.js,bin/java/beans/Encoder.js,bin/java/beans/EventHandler.js,bin/java/beans/EventSetDescriptor.js,bin/java/beans/ExceptionListener.js,bin/java/beans/Expression.js,bin/java/beans/FeatureDescriptor.js,bin/java/beans/IndexedPropertyChangeEvent.js,bin/java/beans/IndexedPropertyDescriptor.js,bin/java/beans/IntrospectionException.js,bin/java/beans/Introspector.js,bin/java/beans/MetaData.js,bin/java/beans/MethodDescriptor.js,bin/java/beans/NameGenerator.js,bin/java/beans/ParameterDescriptor.js,bin/java/beans/PersistenceDelegate.js,bin/java/beans/PropertyChangeEvent.js,bin/java/beans/PropertyChangeListener.js,bin/java/beans/PropertyChangeListenerProxy.js,bin/java/beans/PropertyChangeSupport.js,bin/java/beans/PropertyDescriptor.js,bin/java/beans/PropertyEditor.js,bin/java/beans/PropertyEditorManager.js,bin/java/beans/PropertyEditorSupport.js,bin/java/beans/PropertyVetoException.js,bin/java/beans/ReflectionUtils.js,bin/java/beans/SimpleBeanInfo.js,bin/java/beans/Statement.js,bin/java/beans/ThreadGroupContext.js,bin/java/beans/VetoableChangeListener.js,bin/java/beans/VetoableChangeListenerProxy.js,bin/java/beans/VetoableChangeSupport.js,bin/java/beans/Visibility.js,bin/java/beans/WeakIdentityMap.js,bin/java/beans/XMLDecoder.js,bin/java/beans/XMLEncoder.js,bin/java/beans/beancontext/BeanContext.js,bin/java/beans/beancontext/BeanContextChild.js,bin/java/beans/beancontext/BeanContextChildComponentProxy.js,bin/java/beans/beancontext/BeanContextChildSupport.js,bin/java/beans/beancontext/BeanContextContainerProxy.js,bin/java/beans/beancontext/BeanContextEvent.js,bin/java/beans/beancontext/BeanContextMembershipEvent.js,bin/java/beans/beancontext/BeanContextMembershipListener.js,bin/java/beans/beancontext/BeanContextProxy.js,bin/java/beans/beancontext/BeanContextServiceAvailableEvent.js,bin/java/beans/beancontext/BeanContextServiceProvider.js,bin/java/beans/beancontext/BeanContextServiceProviderBeanInfo.js,bin/java/beans/beancontext/BeanContextServiceRevokedEvent.js,bin/java/beans/beancontext/BeanContextServiceRevokedListener.js,bin/java/beans/beancontext/BeanContextServices.js,bin/java/beans/beancontext/BeanContextServicesListener.js,bin/java/beans/beancontext/BeanContextServicesSupport.js,bin/java/beans/beancontext/BeanContextSupport.js,bin/java/io/Bits.js,bin/java/io/BufferedInputStream.js,bin/java/io/BufferedOutputStream.js,bin/java/io/BufferedReader.js,bin/java/io/BufferedWriter.js,bin/java/io/ByteArrayInputStream.js,bin/java/io/ByteArrayOutputStream.js,bin/java/io/CharArrayReader.js,bin/java/io/CharArrayWriter.js,bin/java/io/CharConversionException.js,bin/javax/swing/plaf/synth/SynthConstants.js,bin/javax/management/openmbean/SimpleType.js,bin/sun/security/util/SecurityConstants.js,bin/sun/java2d/pipe/hw/ExtendedBufferCapabilities.js,bin/sun/font/EAttribute.js,bin/sun/java2d/StateTrackable.js,bin/java/lang/annotation/ElementType.js,bin/java/lang/annotation/RetentionPolicy.js,bin/java/lang/Object.js,bin/java/lang/Enum.js,bin/java/lang/Comparable.js,bin/java/lang/package-info.js,bin/java/io/Serializable.js,bin/java/lang/reflect/WildcardType.js,bin/java/lang/reflect/Type.js,bin/java/lang/reflect/package-info.js,bin/javax/accessibility/Accessible.js,bin/javax/crypto/CipherSpi.js,bin/javax/crypto/KeyGeneratorSpi.js,bin/java/security/AlgorithmParametersSpi.js,bin/javax/crypto/SecretKey.js,bin/java/security/Key.js,bin/javax/crypto/SecretKeyFactorySpi.js,bin/javax/crypto/KeyAgreementSpi.js,bin/java/security/KeyFactorySpi.js,bin/java/security/KeyPairGeneratorSpi.js,bin/java/security/AlgorithmParameterGeneratorSpi.js,bin/java/security/PrivateKey.js,bin/javax/crypto/interfaces/DHPrivateKey.js,bin/javax/crypto/interfaces/DHKey.js,bin/java/security/PublicKey.js,bin/javax/crypto/interfaces/DHPublicKey.js,bin/java/lang/Cloneable.js,bin/javax/crypto/MacSpi.js,bin/java/security/KeyStoreSpi.js,bin/java/security/KeyStore.js,bin/javax/crypto/Cipher.js,bin/javax/crypto/SealedObject.js,bin/javax/crypto/interfaces/PBEKey.js,bin/java/security/Provider.js,bin/java/util/Properties.js,bin/java/util/Hashtable.js,bin/java/util/Dictionary.js,bin/java/util/Map.js,bin/sun/security/internal/interfaces/TlsMasterSecret.js,bin/java/lang/Deprecated.js,bin/javax/imageio/ImageReader.js,bin/javax/imageio/event/IIOReadProgressListener.js,bin/java/util/EventListener.js,bin/javax/imageio/spi/ImageReaderSpi.js,bin/javax/imageio/spi/ImageReaderWriterSpi.js,bin/javax/imageio/spi/IIOServiceProvider.js,bin/javax/imageio/spi/RegisterableService.js,bin/javax/imageio/ImageWriter.js,bin/javax/imageio/ImageTranscoder.js,bin/javax/imageio/event/IIOWriteProgressListener.js,bin/javax/imageio/spi/ImageWriterSpi.js,bin/javax/imageio/metadata/IIOMetadata.js,bin/javax/imageio/metadata/IIOMetadataFormatImpl.js,bin/javax/imageio/metadata/IIOMetadataFormat.js,bin/java/util/ListResourceBundle.js,bin/java/util/ResourceBundle.js,bin/java/io/InputStream.js,bin/java/io/Closeable.js,bin/javax/imageio/stream/ImageInputStreamImpl.js,bin/javax/imageio/stream/ImageInputStream.js,bin/java/io/DataInput.js,bin/javax/imageio/ImageWriteParam.js,bin/javax/imageio/IIOParam.js,bin/java/lang/Exception.js,bin/java/lang/Throwable.js,bin/sun/java2d/DisposerRecord.js,bin/java/util/Enumeration.js,bin/javax/imageio/stream/ImageOutputStreamImpl.js,bin/javax/imageio/stream/ImageOutputStream.js,bin/java/io/DataOutput.js,bin/javax/imageio/spi/ImageInputStreamSpi.js,bin/javax/imageio/spi/ImageOutputStreamSpi.js,bin/java/text/AttributedCharacterIterator.js,bin/java/text/CharacterIterator.js,bin/javax/swing/colorchooser/AbstractColorChooserPanel.js,bin/javax/swing/JPanel.js,bin/javax/swing/JComponent.js,bin/javax/swing/ClientPropertyKey.js,bin/javax/swing/TransferHandler.js,bin/javax/swing/event/ChangeListener.js,bin/javax/swing/AbstractAction.js,bin/javax/swing/Action.js,bin/javax/swing/JLabel.js,bin/javax/swing/SwingConstants.js,bin/javax/swing/plaf/synth/ColorType.js,bin/javax/swing/plaf/synth/Region.js,bin/sun/swing/plaf/synth/SynthFileChooserUI.js,bin/javax/swing/plaf/basic/BasicFileChooserUI.js,bin/javax/swing/plaf/FileChooserUI.js,bin/javax/swing/plaf/ComponentUI.js,bin/sun/swing/plaf/synth/SynthUI.js,bin/javax/swing/filechooser/FileView.js,bin/javax/swing/event/ListSelectionListener.js,bin/javax/swing/plaf/basic/BasicDirectoryModel.js,bin/javax/swing/AbstractListModel.js,bin/javax/swing/ListModel.js,bin/javax/swing/event/ListDataListener.js,bin/javax/swing/DefaultListCellRenderer.js,bin/javax/swing/ListCellRenderer.js,bin/javax/swing/ComboBoxModel.js,bin/javax/swing/plaf/UIResource.js,bin/javax/swing/plaf/synth/SynthGraphicsUtils.js,bin/sun/swing/plaf/synth/SynthIcon.js,bin/javax/swing/Icon.js,bin/javax/swing/plaf/synth/SynthLookAndFeel.js,bin/javax/swing/plaf/basic/BasicLookAndFeel.js,bin/javax/swing/LookAndFeel.js,bin/java/lang/ref/WeakReference.js,bin/java/lang/ref/Reference.js,bin/sun/swing/DefaultLayoutStyle.js,bin/javax/swing/LayoutStyle.js,bin/javax/swing/plaf/synth/SynthPainter.js,bin/javax/swing/border/AbstractBorder.js,bin/javax/swing/border/Border.js,bin/javax/swing/plaf/synth/SynthStyle.js,bin/javax/swing/UIDefaults.js,bin/javax/swing/plaf/synth/SynthStyleFactory.js,bin/java/security/PrivilegedAction.js,bin/java/util/StringTokenizer.js,bin/javax/swing/plaf/basic/BasicButtonListener.js,bin/javax/swing/plaf/basic/BasicButtonUI.js,bin/javax/swing/plaf/ButtonUI.js,bin/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.js,bin/javax/swing/plaf/basic/BasicMenuItemUI.js,bin/javax/swing/plaf/MenuItemUI.js,bin/javax/swing/event/MouseInputListener.js,bin/javax/swing/plaf/basic/BasicRadioButtonUI.js,bin/javax/swing/plaf/basic/BasicToggleButtonUI.js,bin/javax/swing/plaf/basic/BasicComboBoxUI.js,bin/javax/swing/plaf/ComboBoxUI.js,bin/javax/swing/plaf/basic/BasicComboPopup.js,bin/javax/swing/JPopupMenu.js,bin/javax/swing/MenuElement.js,bin/javax/swing/plaf/basic/ComboPopup.js,bin/javax/swing/plaf/basic/BasicDesktopIconUI.js,bin/javax/swing/plaf/DesktopIconUI.js,bin/javax/swing/JButton.js,bin/javax/swing/AbstractButton.js,bin/javax/swing/plaf/basic/BasicDesktopPaneUI.js,bin/javax/swing/plaf/DesktopPaneUI.js,bin/javax/swing/DefaultDesktopManager.js,bin/javax/swing/DesktopManager.js,bin/javax/swing/plaf/basic/BasicEditorPaneUI.js,bin/javax/swing/plaf/basic/BasicTextUI.js,bin/javax/swing/plaf/TextUI.js,bin/javax/swing/text/ViewFactory.js,bin/javax/swing/plaf/basic/BasicInternalFrameTitlePane.js,bin/javax/swing/plaf/basic/BasicInternalFrameUI.js,bin/javax/swing/plaf/InternalFrameUI.js,bin/javax/swing/plaf/basic/BasicLabelUI.js,bin/javax/swing/plaf/LabelUI.js,bin/javax/swing/plaf/basic/BasicMenuBarUI.js,bin/javax/swing/plaf/MenuBarUI.js,bin/javax/swing/plaf/basic/BasicMenuUI.js,bin/javax/swing/plaf/basic/BasicOptionPaneUI.js,bin/javax/swing/plaf/OptionPaneUI.js,bin/javax/swing/plaf/basic/BasicPasswordFieldUI.js,bin/javax/swing/plaf/basic/BasicTextFieldUI.js,bin/javax/swing/plaf/basic/BasicSeparatorUI.js,bin/javax/swing/plaf/SeparatorUI.js,bin/javax/swing/plaf/basic/BasicPopupMenuUI.js,bin/javax/swing/plaf/PopupMenuUI.js,bin/javax/swing/plaf/basic/BasicProgressBarUI.js,bin/javax/swing/plaf/ProgressBarUI.js,bin/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.js,bin/javax/swing/plaf/basic/BasicArrowButton.js,bin/javax/swing/plaf/basic/BasicScrollBarUI.js,bin/javax/swing/plaf/ScrollBarUI.js,bin/javax/swing/plaf/basic/BasicScrollPaneUI.js,bin/javax/swing/plaf/ScrollPaneUI.js,bin/javax/swing/ScrollPaneConstants.js,bin/javax/swing/plaf/basic/BasicSliderUI.js,bin/javax/swing/plaf/SliderUI.js,bin/javax/swing/plaf/basic/BasicSplitPaneDivider.js,bin/javax/swing/plaf/basic/BasicSplitPaneUI.js,bin/javax/swing/plaf/SplitPaneUI.js,bin/javax/swing/plaf/basic/BasicTabbedPaneUI.js,bin/javax/swing/plaf/TabbedPaneUI.js,bin/javax/swing/plaf/basic/BasicTextAreaUI.js,bin/javax/swing/plaf/basic/BasicTextPaneUI.js,bin/javax/swing/text/DefaultCaret.js,bin/javax/swing/text/Caret.js,bin/javax/swing/tree/DefaultTreeCellRenderer.js,bin/javax/swing/tree/TreeCellRenderer.js,bin/javax/swing/plaf/basic/BasicTreeUI.js,bin/javax/swing/plaf/TreeUI.js,bin/java/lang/ref/SoftReference.js,bin/sun/swing/UIClientPropertyKey.js,bin/javax/swing/border/LineBorder.js,bin/javax/swing/plaf/basic/BasicComboBoxEditor.js,bin/javax/swing/ComboBoxEditor.js,bin/javax/swing/plaf/basic/BasicComboBoxRenderer.js,bin/sun/swing/FilePane.js,bin/sun/swing/MenuItemCheckIconFactory.js,bin/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.js,bin/javax/swing/JWindow.js,bin/javax/swing/RootPaneContainer.js,bin/javax/swing/plaf/basic/BasicRootPaneUI.js,bin/javax/swing/plaf/RootPaneUI.js,bin/javax/swing/event/MouseInputAdapter.js,bin/javax/swing/plaf/basic/BasicSpinnerUI.js,bin/javax/swing/plaf/SpinnerUI.js,bin/javax/swing/plaf/basic/BasicTableHeaderUI.js,bin/javax/swing/plaf/TableHeaderUI.js,bin/sun/swing/table/DefaultTableCellHeaderRenderer.js,bin/javax/swing/table/DefaultTableCellRenderer.js,bin/javax/swing/table/TableCellRenderer.js,bin/java/lang/Runnable.js,bin/javax/swing/text/DefaultHighlighter.js,bin/javax/swing/text/LayeredHighlighter.js,bin/javax/swing/text/Highlighter.js,bin/javax/swing/plaf/basic/BasicToolBarSeparatorUI.js,bin/javax/swing/plaf/basic/BasicToolBarUI.js,bin/javax/swing/plaf/ToolBarUI.js,bin/javax/swing/border/EmptyBorder.js,bin/sun/swing/CachedPainter.js,bin/java/io/IOException.js,bin/java/io/FilterOutputStream.js,bin/java/io/OutputStream.js,bin/java/io/Flushable.js,bin/java/util/AbstractList.js,bin/java/util/AbstractCollection.js,bin/java/util/Collection.js,bin/java/lang/Iterable.js,bin/java/util/List.js,bin/java/util/Iterator.js,bin/java/io/FilterInputStream.js,bin/java/util/jar/Pack200.js,bin/java/util/TreeMap.js,bin/java/util/AbstractMap.js,bin/java/util/NavigableMap.js,bin/java/util/SortedMap.js,bin/java/lang/RuntimeException.js,bin/java/security/BasicPermission.js,bin/java/security/Permission.js,bin/java/security/Guard.js,bin/java/lang/UnsupportedOperationException.js,bin/java/util/Set.js,bin/javax/management/MBeanServerConnection.js,bin/javax/management/NotificationListener.js,bin/javax/management/loading/ClassLoaderRepository.js,bin/javax/management/DynamicMBean.js,bin/java/lang/String.js,bin/java/lang/CharSequence.js,bin/javax/management/MBeanServer.js,bin/javax/management/MBeanServerBuilder.js,bin/java/util/Comparator.js,bin/java/lang/reflect/Method.js,bin/java/lang/reflect/AccessibleObject.js,bin/java/lang/reflect/AnnotatedElement.js,bin/java/lang/reflect/GenericDeclaration.js,bin/java/lang/reflect/Member.js,bin/java/util/WeakHashMap.js,bin/java/lang/Class.js,bin/javax/management/MBeanInfo.js,bin/javax/management/DescriptorRead.js,bin/javax/management/MBeanServerDelegate.js,bin/javax/management/MBeanServerDelegateMBean.js,bin/javax/management/NotificationEmitter.js,bin/javax/management/NotificationBroadcaster.js,bin/javax/management/MBeanRegistration.js,bin/java/io/ObjectInputStream.js,bin/java/io/ObjectInput.js,bin/java/io/ObjectStreamConstants.js,bin/javax/management/openmbean/OpenType.js,bin/javax/management/QueryEval.js,bin/javax/management/QueryExp.js,bin/java/util/concurrent/Executor.js,bin/java/util/concurrent/package-info.js,bin/java/rmi/server/RemoteRef.js,bin/java/io/Externalizable.js,bin/javax/management/remote/JMXConnectorProvider.js,bin/javax/management/remote/JMXConnectorServerProvider.js,bin/javax/security/auth/spi/LoginModule.js,bin/javax/management/remote/JMXAuthenticator.js,bin/javax/security/auth/callback/CallbackHandler.js,bin/javax/security/auth/login/Configuration.js,bin/javax/security/auth/SubjectDomainCombiner.js,bin/java/security/DomainCombiner.js,bin/javax/management/remote/MBeanServerForwarder.js,bin/java/lang/ClassLoader.js,bin/java/security/acl/AclEntry.js,bin/java/security/acl/Owner.js,bin/java/security/acl/Acl.js,bin/java/security/Principal.js,bin/java/security/acl/Group.js,bin/java/security/acl/Permission.js,bin/java/lang/Error.js,bin/java/util/Vector.js,bin/java/util/RandomAccess.js,bin/javax/management/Notification.js,bin/java/util/EventObject.js,bin/javax/management/JMRuntimeException.js,bin/java/lang/Thread.js,bin/javax/naming/NamingEnumeration.js,bin/javax/naming/Context.js,bin/javax/naming/spi/InitialContextFactory.js,bin/javax/naming/NameParser.js,bin/javax/naming/CompoundName.js,bin/javax/naming/Name.js,bin/javax/naming/spi/StateFactory.js,bin/javax/naming/spi/Resolver.js,bin/javax/naming/directory/DirContext.js,bin/javax/naming/ldap/Control.js,bin/javax/naming/Binding.js,bin/javax/naming/NameClassPair.js,bin/javax/naming/ldap/HasControls.js,bin/javax/naming/ldap/ControlFactory.js,bin/javax/naming/directory/BasicAttribute.js,bin/javax/naming/directory/Attribute.js,bin/javax/naming/event/EventDirContext.js,bin/javax/naming/event/EventContext.js,bin/javax/naming/ldap/LdapContext.js,bin/javax/naming/spi/ObjectFactory.js,bin/javax/naming/ldap/LdapReferralException.js,bin/javax/naming/ReferralException.js,bin/javax/naming/NamingException.js,bin/javax/naming/directory/SearchResult.js,bin/javax/naming/ldap/UnsolicitedNotification.js,bin/javax/naming/ldap/ExtendedResponse.js,bin/javax/naming/ldap/StartTlsResponse.js,bin/java/rmi/server/UnicastRemoteObject.js,bin/java/rmi/server/RemoteServer.js,bin/java/rmi/server/RemoteObject.js,bin/java/rmi/Remote.js,bin/javax/naming/Referenceable.js,bin/javax/naming/spi/ResolveResult.js,bin/java/lang/management/GarbageCollectorMXBean.js,bin/java/lang/management/MemoryManagerMXBean.js,bin/javax/management/openmbean/CompositeData.js,bin/javax/management/openmbean/CompositeDataView.js,bin/java/lang/management/OperatingSystemMXBean.js,bin/javax/sound/sampled/Line.js,bin/javax/sound/sampled/DataLine.js,bin/javax/sound/midi/MidiDevice.js,bin/javax/sound/midi/Receiver.js,bin/javax/sound/midi/Transmitter.js,bin/javax/sound/midi/spi/MidiDeviceProvider.js,bin/javax/sound/sampled/Mixer.js,bin/javax/sound/sampled/AudioFileFormat.js,bin/javax/sound/sampled/spi/AudioFileReader.js,bin/javax/sound/sampled/spi/AudioFileWriter.js,bin/javax/sound/sampled/spi/FormatConversionProvider.js,bin/javax/sound/sampled/AudioInputStream.js,bin/javax/sound/midi/spi/SoundbankReader.js,bin/javax/sound/midi/Synthesizer.js,bin/javax/sound/sampled/Clip.js,bin/javax/sound/midi/Instrument.js,bin/javax/sound/midi/SoundbankResource.js,bin/javax/sound/midi/Soundbank.js,bin/javax/sound/sampled/FloatControl.js,bin/javax/sound/sampled/Control.js,bin/javax/sound/sampled/BooleanControl.js,bin/javax/sound/sampled/SourceDataLine.js,bin/javax/sound/sampled/TargetDataLine.js,bin/javax/sound/sampled/spi/MixerProvider.js,bin/javax/sound/midi/ShortMessage.js,bin/javax/sound/midi/MidiMessage.js,bin/javax/sound/midi/SysexMessage.js,bin/javax/sound/midi/MetaEventListener.js,bin/javax/sound/sampled/LineListener.js,bin/javax/sound/midi/MidiChannel.js,bin/javax/sound/midi/Patch.js,bin/javax/sound/sampled/Port.js,bin/javax/sound/sampled/CompoundControl.js,bin/javax/sound/midi/Sequencer.js,bin/javax/sound/midi/VoiceStatus.js,bin/javax/sound/midi/spi/MidiFileReader.js,bin/javax/sound/midi/spi/MidiFileWriter.js,bin/java/net/HttpURLConnection.js,bin/java/net/URLConnection.js,bin/javax/net/ssl/X509KeyManager.js,bin/javax/net/ssl/KeyManager.js,bin/javax/net/ssl/X509TrustManager.js,bin/javax/net/ssl/TrustManager.js,bin/sun/security/ssl/SunJSSE.js,bin/sun/net/www/protocol/https/AbstractDelegateHttpsURLConnection.js,bin/sun/net/www/protocol/http/HttpURLConnection.js,bin/javax/net/ssl/HostnameVerifier.js,bin/sun/net/www/protocol/https/Handler.js,bin/sun/net/www/protocol/http/Handler.js,bin/java/net/URLStreamHandler.js,bin/java/security/PermissionCollection.js,bin/javax/sql/rowset/BaseRowSet.js,bin/javax/sql/RowSet.js,bin/java/sql/ResultSet.js,bin/java/sql/Wrapper.js,bin/javax/sql/RowSetInternal.js,bin/javax/sql/rowset/CachedRowSet.js,bin/javax/sql/rowset/Joinable.js,bin/javax/sql/rowset/WebRowSet.js,bin/javax/sql/rowset/FilteredRowSet.js,bin/javax/sql/rowset/JdbcRowSet.js,bin/javax/sql/rowset/JoinRowSet.js,bin/javax/sql/RowSetReader.js,bin/javax/sql/rowset/spi/TransactionalWriter.js,bin/javax/sql/RowSetWriter.js,bin/javax/sql/rowset/spi/SyncResolver.js,bin/javax/sql/rowset/spi/XmlReader.js,bin/javax/sql/rowset/spi/XmlWriter.js,bin/javax/sql/rowset/spi/SyncProvider.js,bin/javax/script/CompiledScript.js,bin/javax/script/AbstractScriptEngine.js,bin/javax/script/ScriptEngine.js,bin/javax/script/Invocable.js,bin/javax/script/Compilable.js,bin/javax/script/ScriptEngineFactory.js,bin/javax/script/Bindings.js,bin/java/util/AbstractSet.js,bin/java/lang/reflect/InvocationHandler.js,bin/javax/security/auth/Policy.js,bin/java/security/GeneralSecurityException.js,bin/java/security/CodeSource.js,bin/javax/security/cert/X509Certificate.js,bin/javax/security/cert/Certificate.js,bin/javax/security/sasl/SaslClientFactory.js,bin/javax/security/sasl/SaslClient.js,bin/javax/security/sasl/SaslServer.js,bin/javax/security/sasl/SaslServerFactory.js,bin/java/lang/IndexOutOfBoundsException.js,bin/javax/swing/tree/DefaultMutableTreeNode.js,bin/javax/swing/tree/MutableTreeNode.js,bin/javax/swing/tree/TreeNode.js,bin/javax/swing/filechooser/FileFilter.js,bin/javax/swing/JMenuBar.js,bin/javax/swing/JToolBar.js,bin/java/io/PrintWriter.js,bin/java/io/Writer.js,bin/java/lang/Appendable.js,bin/javax/swing/tree/DefaultTreeSelectionModel.js,bin/javax/swing/tree/TreeSelectionModel.js,bin/java/io/FilenameFilter.js,bin/java/io/DataInputStream.js,bin/java/util/ArrayList.js,bin/javax/accessibility/AccessibleContext.js,bin/javax/accessibility/AccessibleComponent.js,bin/javax/accessibility/AccessibleAction.js,bin/javax/accessibility/AccessibleValue.js,bin/javax/accessibility/AccessibleSelection.js,bin/sun/awt/SubRegionShowable.js,bin/sun/awt/RequestFocusController.js,bin/sun/awt/SunGraphicsCallback.js,bin/java/lang/IllegalStateException.js,bin/javax/accessibility/AccessibleText.js,bin/sun/awt/datatransfer/DataTransferer.js,bin/java/util/EventListenerProxy.js,bin/java/lang/Character.js,bin/java/lang/annotation/Annotation.js,bin/java/io/Reader.js,bin/java/lang/Readable.js,bin/javax/security/auth/Destroyable.js,bin/javax/accessibility/AccessibleExtendedComponent.js,bin/java/io/ObjectInputValidation.js,bin/sun/swing/UIAction.js,bin/javax/accessibility/AccessibleKeyBinding.js,bin/javax/swing/plaf/basic/BasicTransferable.js,bin/javax/swing/event/MenuDragMouseListener.js,bin/javax/swing/JComboBox.js,bin/javax/swing/JSeparator.js,bin/javax/swing/ActionPropertyChangeListener.js,bin/javax/swing/text/html/StyleSheet.js,bin/javax/swing/text/StyleContext.js,bin/javax/swing/text/AbstractDocument.js,bin/javax/swing/text/Document.js,bin/javax/swing/text/View.js,bin/javax/swing/event/DocumentListener.js,bin/javax/swing/text/TextAction.js,bin/javax/swing/plaf/basic/DragRecognitionSupport.js,bin/javax/swing/event/InternalFrameListener.js,bin/javax/swing/event/MenuKeyListener.js,bin/javax/swing/JTextField.js,bin/javax/swing/text/JTextComponent.js,bin/javax/swing/Scrollable.js,bin/javax/swing/text/ParagraphView.js,bin/javax/swing/text/FlowView.js,bin/javax/swing/text/BoxView.js,bin/javax/swing/text/CompositeView.js,bin/javax/swing/text/TabExpander.js,bin/javax/swing/event/PopupMenuListener.js,bin/javax/swing/JViewport.js,bin/javax/swing/text/NavigationFilter.js,bin/javax/swing/event/TreeExpansionListener.js,bin/javax/swing/event/TreeModelListener.js,bin/javax/swing/event/TreeSelectionListener.js,bin/javax/swing/event/CellEditorListener.js,bin/javax/swing/tree/AbstractLayoutCache.js,bin/javax/swing/tree/RowMapper.js,bin/javax/swing/event/TableModelListener.js,bin/javax/swing/event/RowSorterListener.js,bin/javax/swing/table/AbstractTableModel.js,bin/javax/swing/table/TableModel.js,bin/javax/swing/table/TableRowSorter.js,bin/javax/swing/DefaultRowSorter.js,bin/java/lang/Integer.js,bin/java/lang/Number.js,bin/javax/swing/RowSorter.js,bin/java/io/File.js,bin/javax/swing/DefaultCellEditor.js,bin/javax/swing/AbstractCellEditor.js,bin/javax/swing/CellEditor.js,bin/javax/swing/table/TableCellEditor.js,bin/javax/swing/tree/TreeCellEditor.js,bin/javax/swing/plaf/ComponentInputMapUIResource.js,bin/javax/swing/ComponentInputMap.js,bin/javax/swing/InputMap.js,bin/java/util/ListIterator.js,bin/java/util/NavigableSet.js,bin/java/util/SortedSet.js,bin/java/lang/Boolean.js,bin/java/security/PrivilegedExceptionAction.js,bin/java/net/ContentHandler.js,bin/javax/swing/text/SimpleAttributeSet.js,bin/javax/swing/text/MutableAttributeSet.js,bin/javax/swing/text/AttributeSet.js,bin/javax/swing/text/html/MuxingAttributeSet.js,bin/javax/swing/text/Style.js,bin/javax/swing/text/html/CSSParser.js,bin/javax/swing/text/Element.js,bin/javax/swing/undo/CompoundEdit.js,bin/javax/swing/undo/AbstractUndoableEdit.js,bin/javax/swing/undo/UndoableEdit.js,bin/javax/swing/event/DocumentEvent.js,bin/javax/swing/text/DocumentFilter.js,bin/javax/swing/event/CaretListener.js,bin/javax/accessibility/AccessibleEditableText.js,bin/javax/accessibility/AccessibleExtendedText.js,bin/javax/swing/text/Segment.js,bin/javax/swing/text/Keymap.js,bin/javax/swing/ActionMap.js,bin/javax/swing/event/CaretEvent.js,bin/javax/swing/RowFilter.js,bin/sun/awt/AWTAccessor.js,bin/sun/awt/SunToolkit.js,bin/sun/awt/WindowClosingSupport.js,bin/sun/awt/WindowClosingListener.js,bin/sun/awt/ComponentFactory.js,bin/sun/awt/InputMethodSupport.js,bin/sun/awt/ModalityListener.js,bin/java/lang/CloneNotSupportedException.js,bin/java/lang/InterruptedException.js,bin/java/lang/ClassNotFoundException.js,bin/java/io/ObjectStreamException.js,bin/java/lang/NullPointerException.js,bin/java/lang/IllegalArgumentException.js,bin/java/io/StringReader.js,bin/java/util/Locale.js,bin/sun/util/LocaleServiceProviderPool.js,bin/java/util/spi/LocaleNameProvider.js,bin/java/util/spi/LocaleServiceProvider.js,bin/java/lang/StringBuffer.js,bin/java/lang/AbstractStringBuilder.js,bin/java/lang/annotation/Documented.js,bin/java/lang/annotation/package-info.js,bin/java/lang/annotation/Retention.js,bin/java/lang/annotation/Target.js,bin/java/util/HashMap.js,bin/java/lang/Byte.js,bin/java/lang/Short.js,bin/java/lang/Long.js,bin/java/lang/Float.js,bin/java/lang/Double.js,bin/java/lang/Void.js,bin/java/lang/NumberFormatException.js,bin/java/lang/reflect/Array.js,bin/java/lang/NegativeArraySizeException.js,bin/java/lang/reflect/Field.js,bin/sun/reflect/misc/FieldUtil.js,bin/java/lang/NoSuchFieldException.js,bin/sun/reflect/CallerSensitive.js,bin/java/lang/IllegalAccessException.js,bin/java/lang/SuppressWarnings.js,bin/java/lang/reflect/GenericArrayType.js,bin/java/lang/reflect/ParameterizedType.js,bin/java/lang/reflect/TypeVariable.js,bin/sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl.js,bin/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.js,bin/java/lang/ref/ReferenceQueue.js,bin/java/util/Arrays.js,bin/java/lang/Override.js,bin/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.js,bin/sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator.js,bin/java/lang/StringBuilder.js,bin/sun/java2d/pipe/Region.js,bin/java/io/PrintStream.js,bin/java/io/ObjectOutputStream.js,bin/java/io/ObjectOutput.js,bin/java/security/AccessControlContext.js,bin/javax/accessibility/AccessibleStateSet.js,bin/sun/awt/CausedFocusEvent.js,bin/java/lang/System.js,bin/sun/reflect/misc/ReflectUtil.js,bin/java/security/ProtectionDomain.js,bin/sun/reflect/annotation/AnnotationType.js,bin/java/lang/reflect/Constructor.js,bin/sun/reflect/generics/repository/ClassRepository.js,bin/sun/reflect/generics/repository/GenericDeclRepository.js,bin/sun/reflect/generics/tree/ClassSignature.js,bin/sun/reflect/generics/tree/Signature.js,bin/sun/reflect/generics/tree/Tree.js,bin/sun/reflect/generics/repository/AbstractRepository.js,bin/sun/reflect/ReflectionFactory.js,bin/java/io/ObjectStreamField.js,bin/java/lang/SecurityException.js,bin/javax/crypto/BadPaddingException.js,bin/javax/crypto/IllegalBlockSizeException.js,bin/javax/crypto/ShortBufferException.js,bin/java/security/InvalidKeyException.js,bin/java/security/KeyException.js,bin/java/security/AlgorithmParameters.js,bin/java/security/SecureRandom.js,bin/java/util/Random.js,bin/java/security/InvalidAlgorithmParameterException.js,bin/java/security/spec/AlgorithmParameterSpec.js,bin/java/security/NoSuchAlgorithmException.js,bin/javax/crypto/NoSuchPaddingException.js,bin/java/security/InvalidParameterException.js,bin/javax/crypto/spec/SecretKeySpec.js,bin/java/security/spec/KeySpec.js,bin/java/security/spec/InvalidParameterSpecException.js,bin/javax/crypto/spec/IvParameterSpec.js,bin/sun/misc/HexDumpEncoder.js,bin/sun/misc/CharacterEncoder.js,bin/sun/security/util/DerInputStream.js,bin/sun/security/util/DerOutputStream.js,bin/sun/security/util/DerEncoder.js,bin/javax/crypto/spec/RC2ParameterSpec.js,bin/java/security/NoSuchProviderException.js,bin/java/security/KeyFactory.js,bin/java/security/spec/PKCS8EncodedKeySpec.js,bin/java/security/spec/EncodedKeySpec.js,bin/java/security/spec/X509EncodedKeySpec.js,bin/java/security/spec/InvalidKeySpecException.js,bin/java/security/KeyRep.js,bin/javax/crypto/spec/DESKeySpec.js,bin/javax/crypto/SecretKeyFactory.js,bin/javax/crypto/spec/DESedeKeySpec.js,bin/java/security/MessageDigest.js,bin/java/security/MessageDigestSpi.js,bin/java/security/DigestException.js,bin/java/math/BigInteger.js,bin/java/math/package-info.js,bin/sun/security/util/KeyUtil.js,bin/javax/crypto/spec/DHParameterSpec.js,bin/javax/crypto/spec/DHPublicKeySpec.js,bin/javax/crypto/spec/DHPrivateKeySpec.js,bin/javax/crypto/spec/DHGenParameterSpec.js,bin/sun/security/provider/ParameterCache.js,bin/java/security/KeyPair.js,bin/java/security/ProviderException.js,bin/java/lang/Math.js,bin/java/security/KeyPairGenerator.js,bin/java/security/AlgorithmParameterGenerator.js,bin/java/security/spec/DSAParameterSpec.js,bin/java/security/interfaces/DSAParams.js,bin/sun/security/util/DerValue.js,bin/sun/security/util/DerInputBuffer.js,bin/sun/security/util/Debug.js,bin/sun/security/util/ObjectIdentifier.js,bin/sun/security/x509/AlgorithmId.js,bin/java/nio/Buffer.js,bin/javax/crypto/spec/PBEParameterSpec.js,bin/java/security/DigestInputStream.js,bin/java/security/DigestOutputStream.js,bin/java/security/KeyStoreException.js,bin/java/security/UnrecoverableKeyException.js,bin/java/security/UnrecoverableEntryException.js,bin/java/security/cert/Certificate.js,bin/java/security/cert/CertificateFactory.js,bin/java/security/cert/X509Certificate.js,bin/java/security/cert/X509Extension.js,bin/java/security/cert/CertificateException.js,bin/java/util/Date.js,bin/java/io/UnsupportedEncodingException.js,bin/java/io/DataOutputStream.js,bin/java/security/cert/CertificateEncodingException.js,bin/java/lang/OutOfMemoryError.js,bin/java/lang/VirtualMachineError.js,bin/java/nio/charset/Charset.js,bin/java/security/Security.js,bin/javax/crypto/CryptoPermission.js,bin/javax/crypto/ExemptionMechanism.js,bin/javax/crypto/spec/PBEKeySpec.js,bin/java/security/spec/MGF1ParameterSpec.js,bin/javax/crypto/spec/PSource.js,bin/javax/crypto/spec/OAEPParameterSpec.js,bin/java/util/HashSet.js,bin/javax/crypto/Mac.js,bin/sun/security/jca/Providers.js,bin/sun/security/internal/spec/TlsRsaPremasterSecretParameterSpec.js,bin/sun/security/rsa/RSAPadding.js,bin/java/security/interfaces/RSAPrivateKey.js,bin/java/security/interfaces/RSAKey.js,bin/java/security/interfaces/RSAPublicKey.js,bin/sun/security/jca/ProviderList.js,bin/sun/security/rsa/RSAKeyFactory.js,bin/sun/security/rsa/RSACore.js,bin/java/lang/AssertionError.js,bin/java/security/AccessController.js,bin/java/net/URL.js,bin/java/util/InvalidPropertiesFormatException.js,bin/java/io/StreamCorruptedException.js,bin/java/security/PrivilegedActionException.js,bin/sun/security/internal/spec/TlsKeyMaterialParameterSpec.js,bin/sun/security/internal/spec/TlsKeyMaterialSpec.js,bin/sun/security/internal/spec/TlsMasterSecretParameterSpec.js,bin/sun/security/internal/spec/TlsPrfParameterSpec.js,bin/javax/imageio/IIOException.js,bin/javax/imageio/ImageIO.js,bin/javax/imageio/spi/ServiceRegistry.js,bin/javax/imageio/ImageReadParam.js,bin/javax/imageio/ImageTypeSpecifier.js,bin/javax/imageio/event/IIOReadUpdateListener.js,bin/javax/imageio/event/IIOReadWarningListener.js,bin/javax/imageio/IIOImage.js,bin/java/nio/ByteOrder.js,bin/javax/imageio/spi/IIORegistry.js,bin/javax/imageio/metadata/IIOMetadataNode.js,bin/javax/imageio/metadata/IIOInvalidTreeException.js,bin/javax/imageio/event/IIOWriteWarningListener.js,bin/javax/imageio/plugins/bmp/BMPImageWriteParam.js,bin/javax/imageio/metadata/IIOMetadataController.js,bin/java/lang/ArrayIndexOutOfBoundsException.js,bin/java/util/PropertyResourceBundle.js,bin/javax/imageio/stream/IIOByteBuffer.js,bin/java/io/EOFException.js,bin/javax/imageio/IIOParamController.js,bin/javax/imageio/plugins/jpeg/JPEGHuffmanTable.js,bin/javax/imageio/plugins/jpeg/JPEGQTable.js,bin/javax/imageio/stream/MemoryCacheImageOutputStream.js,bin/java/lang/StackTraceElement.js,bin/java/lang/InternalError.js,bin/javax/imageio/plugins/jpeg/JPEGImageReadParam.js,bin/sun/java2d/Disposer.js,bin/sun/security/action/LoadLibraryAction.js,bin/javax/imageio/plugins/jpeg/JPEGImageWriteParam.js,bin/java/io/SequenceInputStream.js,bin/java/util/zip/Inflater.js,bin/java/util/zip/InflaterInputStream.js,bin/sun/awt/image/ByteInterleavedRaster.js,bin/sun/awt/image/ByteComponentRaster.js,bin/sun/awt/image/SunWritableRaster.js,bin/java/util/zip/ZipException.js,bin/java/util/zip/Deflater.js,bin/java/util/zip/DeflaterOutputStream.js,bin/javax/imageio/stream/FileImageInputStream.js,bin/java/io/FileNotFoundException.js,bin/javax/imageio/stream/FileImageOutputStream.js,bin/javax/imageio/stream/FileCacheImageInputStream.js,bin/javax/imageio/stream/MemoryCacheImageInputStream.js,bin/javax/imageio/stream/FileCacheImageOutputStream.js,bin/java/io/RandomAccessFile.js,bin/java/lang/ThreadGroup.js,bin/java/lang/Runtime.js,bin/java/util/MissingResourceException.js,bin/java/io/InvalidObjectException.js,bin/java/text/AttributedString.js,bin/java/net/URI.js,bin/java/util/zip/ZipFile.js,bin/java/util/zip/ZipConstants.js,bin/sun/security/action/GetPropertyAction.js,bin/java/lang/InstantiationException.js,bin/javax/swing/JSpinner.js,bin/javax/swing/text/DateFormatter.js,bin/javax/swing/text/InternationalFormatter.js,bin/javax/swing/text/DefaultFormatter.js,bin/javax/swing/JFormattedTextField.js,bin/javax/swing/text/NumberFormatter.js,bin/javax/swing/event/ChangeEvent.js,bin/javax/swing/JColorChooser.js,bin/javax/swing/JDialog.js,bin/javax/swing/WindowConstants.js,bin/javax/swing/colorchooser/ColorSelectionModel.js,bin/javax/swing/plaf/PanelUI.js,bin/javax/swing/event/AncestorListener.js,bin/javax/swing/JToolTip.js,bin/javax/swing/KeyStroke.js,bin/javax/swing/AncestorNotifier.js,bin/javax/swing/ArrayTable.js,bin/javax/swing/InputVerifier.js,bin/javax/swing/JRootPane.js,bin/javax/swing/UIManager.js,bin/javax/swing/plaf/ActionMapUIResource.js,bin/javax/swing/SwingUtilities.js,bin/javax/swing/SpinnerNumberModel.js,bin/javax/swing/AbstractSpinnerModel.js,bin/javax/swing/SpinnerModel.js,bin/javax/swing/Box.js,bin/javax/swing/plaf/ColorUIResource.js,bin/sun/swing/ImageCache.js,bin/javax/swing/plaf/synth/SynthContext.js,bin/javax/swing/JScrollBar.js,bin/javax/swing/JSlider.js,bin/javax/swing/JProgressBar.js,bin/javax/swing/JSplitPane.js,bin/java/text/MessageFormat.js,bin/java/text/Format.js,bin/sun/swing/SwingUtilities2.js,bin/sun/swing/DefaultLookup.js,bin/sun/awt/shell/ShellFolder.js,bin/javax/swing/JList.js,bin/javax/swing/JFileChooser.js,bin/javax/swing/JScrollPane.js,bin/javax/swing/event/ListSelectionEvent.js,bin/javax/swing/filechooser/FileSystemView.js,bin/javax/swing/event/ListDataEvent.js,bin/java/util/Collections.js,bin/java/util/AbstractQueue.js,bin/java/util/Queue.js,bin/javax/swing/JOptionPane.js,bin/javax/swing/ListSelectionModel.js,bin/javax/swing/DefaultListSelectionModel.js,bin/java/text/FieldPosition.js,bin/javax/swing/text/BadLocationException.js,bin/java/lang/reflect/InvocationTargetException.js,bin/sun/awt/AppContext.js,bin/sun/awt/ConstrainableGraphics.js,bin/sun/awt/EmbeddedFrame.js,bin/sun/awt/NullComponentPeer.js,bin/sun/awt/dnd/SunDropTargetEvent.js,bin/sun/awt/im/CompositionArea.js,bin/sun/java2d/SunGraphics2D.js,bin/sun/java2d/DestSurfaceProvider.js,bin/sun/awt/image/VSyncedBSManager.js,bin/sun/java2d/SunGraphicsEnvironment.js,bin/sun/java2d/FontSupport.js,bin/sun/awt/DisplayChangedListener.js,bin/javax/swing/BoxLayout.js,bin/javax/swing/table/JTableHeader.js,bin/javax/swing/event/TableColumnModelListener.js,bin/javax/swing/JTable.js,bin/javax/swing/JCheckBox.js,bin/javax/swing/JToggleButton.js,bin/javax/accessibility/AccessibleExtendedTable.js,bin/javax/accessibility/AccessibleTable.js,bin/javax/accessibility/AccessibleTableModelChange.js,bin/javax/swing/DefaultButtonModel.js,bin/javax/swing/ButtonModel.js,bin/javax/swing/BoundedRangeModel.js,bin/javax/swing/DropMode.js,bin/javax/print/PrintService.js,bin/javax/print/attribute/PrintRequestAttributeSet.js,bin/javax/print/attribute/AttributeSet.js,bin/java/util/LinkedList.js,bin/java/util/AbstractSequentialList.js,bin/java/util/Deque.js,bin/java/util/logging/Level.js,bin/java/util/logging/Logger.js,bin/sun/awt/HeadlessToolkit.js,bin/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.js,bin/sun/swing/MenuItemLayoutHelper.js,bin/java/lang/NoSuchMethodException.js,bin/javax/swing/text/DefaultEditorKit.js,bin/javax/swing/text/EditorKit.js,bin/sun/awt/OSInfo.js,bin/java/text/ParseException.js,bin/sun/swing/SwingLazyValue.js,bin/javax/swing/plaf/InsetsUIResource.js,bin/javax/swing/plaf/DimensionUIResource.js,bin/javax/swing/JTabbedPane.js,bin/javax/swing/plaf/FontUIResource.js,bin/javax/swing/ImageIcon.js,bin/javax/accessibility/AccessibleIcon.js,bin/javax/swing/JInternalFrame.js,bin/java/io/FileSystem.js,bin/java/net/MalformedURLException.js,bin/java/io/InputStreamReader.js,bin/java/util/NoSuchElementException.js,bin/sun/font/FontManager.js,bin/javax/swing/plaf/basic/LazyActionMap.js,bin/javax/swing/JMenuItem.js,bin/javax/swing/MenuSelectionManager.js,bin/javax/swing/event/MenuKeyEvent.js,bin/javax/swing/Popup.js,bin/sun/awt/ModalExclude.js,bin/javax/swing/SingleSelectionModel.js,bin/javax/swing/CellRendererPane.js,bin/javax/swing/JDesktopPane.js,bin/javax/swing/JLayeredPane.js,bin/javax/swing/text/Position.js,bin/javax/swing/JMenu.js,bin/javax/swing/event/InternalFrameEvent.js,bin/javax/swing/BorderFactory.js,bin/javax/swing/border/BevelBorder.js,bin/javax/swing/plaf/basic/BasicBorders.js,bin/javax/swing/plaf/BorderUIResource.js,bin/javax/swing/border/CompoundBorder.js,bin/javax/swing/border/EtchedBorder.js,bin/javax/swing/border/MatteBorder.js,bin/javax/swing/border/TitledBorder.js,bin/javax/swing/event/MenuListener.js,bin/javax/swing/JTree.js,bin/javax/swing/Timer.js,bin/javax/swing/plaf/IconUIResource.js,bin/javax/swing/tree/TreePath.js,bin/javax/swing/tree/TreeModel.js,bin/sun/awt/SunHints.js,bin/java/util/LinkedHashMap.js,bin/java/util/concurrent/locks/ReadWriteLock.js,bin/java/util/concurrent/locks/package-info.js,bin/java/util/concurrent/locks/ReentrantReadWriteLock.js,bin/java/util/concurrent/locks/AbstractQueuedSynchronizer.js,bin/java/util/concurrent/locks/AbstractOwnableSynchronizer.js,bin/java/lang/ThreadLocal.js,bin/java/util/concurrent/locks/Lock.js,bin/java/util/concurrent/locks/Condition.js,bin/javax/swing/GrayFilter.js,bin/sun/swing/ImageIconUIResource.js,bin/sun/swing/plaf/GTKKeybindings.js,bin/sun/swing/plaf/WindowsKeybindings.js,bin/sun/security/action/GetBooleanAction.js,bin/java/util/EnumMap.js,bin/java/lang/Package.js,bin/javax/swing/plaf/basic/BasicGraphicsUtils.js,bin/javax/swing/JRadioButton.js,bin/sun/swing/StringUIClientPropertyKey.js,bin/sun/swing/WindowsPlacesBar.js,bin/javax/swing/ButtonGroup.js,bin/javax/swing/JRadioButtonMenuItem.js,bin/javax/swing/event/PopupMenuEvent.js,bin/javax/swing/JCheckBoxMenuItem.js,bin/javax/swing/PopupFactory.js,bin/javax/swing/SwingHeavyWeight.js,bin/sun/awt/util/IdentityArrayList.js,bin/javax/swing/JFrame.js,bin/javax/swing/plaf/InputMapUIResource.js,bin/javax/swing/table/TableColumn.js,bin/javax/swing/SortOrder.js,bin/java/lang/StringIndexOutOfBoundsException.js,bin/java/util/logging/LogRecord.js,bin/java/util/logging/Handler.js,bin/java/util/logging/Filter.js,bin/java/util/logging/LogManager.js,bin/java/io/FileOutputStream.js,bin/java/lang/reflect/Modifier.js,bin/java/io/FileInputStream.js,bin/java/util/jar/JarFile.js,bin/java/util/jar/JarEntry.js,bin/java/util/zip/ZipEntry.js,bin/java/util/zip/GZIPOutputStream.js,bin/java/util/jar/JarInputStream.js,bin/java/util/zip/ZipInputStream.js,bin/java/util/zip/GZIPInputStream.js,bin/java/util/jar/JarOutputStream.js,bin/java/util/zip/ZipOutputStream.js,bin/java/util/jar/Manifest.js,bin/sun/misc/IOUtils.js,bin/java/util/zip/CRC32.js,bin/java/util/zip/Checksum.js,bin/java/util/TimeZone.js,bin/java/util/zip/CheckedOutputStream.js,bin/java/security/Permissions.js,bin/java/lang/SecurityManager.js,bin/java/lang/Process.js,bin/java/lang/NoClassDefFoundError.js,bin/java/lang/LinkageError.js,bin/java/lang/VerifyError.js,bin/java/lang/ClassFormatError.js,bin/java/lang/ClassCircularityError.js,bin/java/lang/UnsupportedClassVersionError.js,bin/java/lang/IllegalThreadStateException.js,bin/java/util/ConcurrentModificationException.js,bin/java/io/StringWriter.js,bin/javax/management/Attribute.js,bin/javax/management/AttributeList.js,bin/javax/management/AttributeNotFoundException.js,bin/javax/management/OperationsException.js,bin/javax/management/JMException.js,bin/javax/management/InstanceAlreadyExistsException.js,bin/javax/management/InstanceNotFoundException.js,bin/javax/management/IntrospectionException.js,bin/javax/management/InvalidAttributeValueException.js,bin/javax/management/ListenerNotFoundException.js,bin/javax/management/MalformedObjectNameException.js,bin/javax/management/MBeanException.js,bin/javax/management/MBeanPermission.js,bin/javax/management/MBeanRegistrationException.js,bin/javax/management/MBeanServerNotification.js,bin/javax/management/MBeanTrustPermission.js,bin/javax/management/NotCompliantMBeanException.js,bin/javax/management/NotificationFilter.js,bin/javax/management/ObjectInstance.js,bin/javax/management/ObjectName.js,bin/javax/management/ReflectionException.js,bin/javax/management/RuntimeErrorException.js,bin/javax/management/RuntimeMBeanException.js,bin/javax/management/RuntimeOperationsException.js,bin/javax/management/BadStringOperationException.js,bin/javax/management/BadBinaryOpValueExpException.js,bin/javax/management/BadAttributeValueExpException.js,bin/javax/management/InvalidApplicationException.js,bin/javax/management/MBeanAttributeInfo.js,bin/javax/management/MBeanFeatureInfo.js,bin/javax/management/MBeanNotificationInfo.js,bin/javax/management/loading/PrivateClassLoader.js,bin/javax/management/Descriptor.js,bin/javax/management/openmbean/OpenDataException.js,bin/sun/reflect/misc/MethodUtil.js,bin/java/security/SecureClassLoader.js,bin/javax/management/ImmutableDescriptor.js,bin/javax/management/JMX.js,bin/java/lang/reflect/UndeclaredThrowableException.js,bin/javax/management/DescriptorKey.js,bin/javax/management/MBeanServerPermission.js,bin/javax/management/MBeanServerFactory.js,bin/sun/reflect/misc/ConstructorUtil.js,bin/java/lang/NoSuchMethodError.js,bin/java/lang/IncompatibleClassChangeError.js,bin/javax/management/MBeanConstructorInfo.js,bin/javax/management/MBeanOperationInfo.js,bin/javax/management/MBeanParameterInfo.js,bin/javax/management/openmbean/OpenMBeanAttributeInfoSupport.js,bin/javax/management/openmbean/OpenMBeanAttributeInfo.js,bin/javax/management/openmbean/OpenMBeanParameterInfo.js,bin/javax/management/openmbean/OpenMBeanOperationInfoSupport.js,bin/javax/management/openmbean/OpenMBeanOperationInfo.js,bin/javax/management/openmbean/OpenMBeanParameterInfoSupport.js,bin/java/lang/reflect/Proxy.js,bin/javax/management/MBeanServerInvocationHandler.js,bin/java/io/ObjectStreamClass.js,bin/java/io/NotActiveException.js,bin/java/util/BitSet.js,bin/java/util/TreeSet.js,bin/javax/management/openmbean/ArrayType.js,bin/javax/management/openmbean/CompositeDataInvocationHandler.js,bin/javax/management/openmbean/CompositeDataSupport.js,bin/javax/management/openmbean/CompositeType.js,bin/javax/management/openmbean/TabularData.js,bin/javax/management/openmbean/TabularDataSupport.js,bin/javax/management/openmbean/TabularType.js,bin/java/math/BigDecimal.js,bin/java/util/IdentityHashMap.js,bin/javax/management/NotificationBroadcasterSupport.js,bin/javax/management/NotificationFilterSupport.js,bin/javax/management/remote/NotificationResult.js,bin/javax/management/remote/TargetedNotification.js,bin/java/io/InterruptedIOException.js,bin/javax/security/auth/Subject.js,bin/java/io/NotSerializableException.js,bin/sun/nio/ch/Interruptible.js,bin/java/rmi/RemoteException.js,bin/java/rmi/server/Operation.js,bin/java/rmi/server/RemoteCall.js,bin/java/rmi/NoSuchObjectException.js,bin/java/rmi/server/RMIClientSocketFactory.js,bin/java/rmi/server/RMIServerSocketFactory.js,bin/java/rmi/server/RemoteStub.js,bin/sun/rmi/server/UnicastServerRef.js,bin/sun/rmi/server/UnicastRef.js,bin/java/rmi/server/ServerRef.js,bin/sun/rmi/server/Dispatcher.js,bin/sun/rmi/server/WeakClassHashMap.js,bin/java/lang/ClassCastException.js,bin/java/rmi/MarshalledObject.js,bin/sun/rmi/server/MarshalOutputStream.js,bin/sun/rmi/server/MarshalInputStream.js,bin/javax/management/remote/JMXConnector.js,bin/javax/management/remote/JMXServiceURL.js,bin/javax/management/remote/rmi/RMIConnector.js,bin/javax/management/remote/JMXAddressable.js,bin/javax/management/remote/rmi/RMIServer.js,bin/javax/management/remote/JMXConnectorServer.js,bin/javax/management/remote/JMXConnectorServerMBean.js,bin/javax/management/remote/rmi/RMIConnectorServer.js,bin/javax/management/remote/rmi/RMIServerImpl.js,bin/java/io/FilePermission.js,bin/java/security/AccessControlException.js,bin/javax/management/remote/JMXPrincipal.js,bin/sun/management/jmxremote/ConnectorBootstrap.js,bin/sun/management/AgentConfigurationError.js,bin/javax/security/auth/login/LoginException.js,bin/java/net/InetAddress.js,bin/java/net/UnknownHostException.js,bin/java/rmi/registry/Registry.js,bin/java/lang/management/ManagementFactory.js,bin/javax/management/remote/JMXConnectorServerFactory.js,bin/javax/rmi/ssl/SslRMIClientSocketFactory.js,bin/javax/rmi/ssl/SslRMIServerSocketFactory.js,bin/sun/rmi/server/UnicastServerRef2.js,bin/sun/management/Agent.js,bin/sun/management/FileSystem.js,bin/javax/security/auth/login/FailedLoginException.js,bin/javax/security/auth/callback/Callback.js,bin/javax/security/auth/callback/NameCallback.js,bin/javax/security/auth/callback/PasswordCallback.js,bin/javax/security/auth/callback/UnsupportedCallbackException.js,bin/javax/security/auth/AuthPermission.js,bin/javax/security/auth/login/AppConfigurationEntry.js,bin/javax/security/auth/login/LoginContext.js,bin/java/security/CodeSigner.js,bin/java/util/regex/Pattern.js,bin/javax/management/remote/SubjectDelegationPermission.js,bin/sun/misc/URLClassPath.js,bin/java/lang/AssertionStatusDirectives.js,bin/javax/management/remote/JMXConnectorFactory.js,bin/java/lang/ArithmeticException.js,bin/java/security/acl/NotOwnerException.js,bin/java/security/acl/LastOwnerException.js,bin/java/util/Stack.js,bin/java/util/EmptyStackException.js,bin/javax/management/ServiceNotFoundException.js,bin/javax/management/AttributeChangeNotification.js,bin/java/net/DatagramSocket.js,bin/java/net/DatagramPacket.js,bin/java/net/SocketException.js,bin/java/net/DatagramSocketImpl.js,bin/java/net/SocketOptions.js,bin/java/net/SocketAddress.js,bin/javax/naming/spi/NamingManager.js,bin/javax/naming/CannotProceedException.js,bin/javax/naming/ConfigurationException.js,bin/javax/naming/InvalidNameException.js,bin/javax/naming/CommunicationException.js,bin/javax/naming/CompositeName.js,bin/javax/naming/NotContextException.js,bin/javax/naming/Reference.js,bin/javax/naming/RefAddr.js,bin/javax/naming/NameNotFoundException.js,bin/javax/naming/OperationNotSupportedException.js,bin/javax/naming/NameAlreadyBoundException.js,bin/javax/naming/ContextNotEmptyException.js,bin/java/rmi/server/ExportException.js,bin/java/net/Socket.js,bin/sun/security/jca/JCAUtil.js,bin/javax/naming/ServiceUnavailableException.js,bin/java/net/Proxy.js,bin/java/net/SocketImpl.js,bin/javax/naming/spi/DirectoryManager.js,bin/javax/naming/directory/InvalidAttributeIdentifierException.js,bin/javax/naming/directory/Attributes.js,bin/javax/naming/directory/ModificationItem.js,bin/javax/naming/directory/SearchControls.js,bin/javax/naming/directory/BasicAttributes.js,bin/sun/net/dns/ResolverConfiguration.js,bin/javax/net/SocketFactory.js,bin/javax/naming/InterruptedNamingException.js,bin/javax/naming/ldap/SortResponseControl.js,bin/javax/naming/ldap/BasicControl.js,bin/javax/naming/ldap/PagedResultsResponseControl.js,bin/javax/naming/event/NamingEvent.js,bin/javax/naming/event/NamingExceptionEvent.js,bin/javax/naming/event/NamingListener.js,bin/javax/naming/ldap/UnsolicitedNotificationEvent.js,bin/javax/naming/ldap/UnsolicitedNotificationListener.js,bin/javax/naming/event/ObjectChangeListener.js,bin/javax/naming/event/NamespaceChangeListener.js,bin/javax/naming/directory/InvalidSearchFilterException.js,bin/javax/naming/InitialContext.js,bin/javax/naming/directory/InitialDirContext.js,bin/javax/naming/NoInitialContextException.js,bin/javax/naming/AuthenticationNotSupportedException.js,bin/javax/naming/NamingSecurityException.js,bin/javax/naming/AuthenticationException.js,bin/javax/naming/directory/InvalidAttributeValueException.js,bin/javax/naming/ldap/LdapName.js,bin/javax/naming/ldap/Rdn.js,bin/javax/naming/ldap/ExtendedRequest.js,bin/javax/naming/directory/SchemaViolationException.js,bin/javax/naming/PartialResultException.js,bin/javax/naming/LimitExceededException.js,bin/javax/naming/directory/AttributeInUseException.js,bin/javax/naming/NoPermissionException.js,bin/javax/naming/directory/NoSuchAttributeException.js,bin/javax/naming/SizeLimitExceededException.js,bin/javax/naming/TimeLimitExceededException.js,bin/javax/naming/StringRefAddr.js,bin/javax/naming/spi/DirStateFactory.js,bin/sun/misc/BASE64Encoder.js,bin/sun/misc/BASE64Decoder.js,bin/sun/misc/CharacterDecoder.js,bin/java/lang/IllegalAccessError.js,bin/javax/naming/directory/InvalidAttributesException.js,bin/java/net/URLClassLoader.js,bin/sun/misc/SharedSecrets.js,bin/sun/misc/JavaLangAccess.js,bin/javax/security/auth/kerberos/KerberosPrincipal.js,bin/javax/net/ssl/SSLSession.js,bin/javax/net/ssl/SSLSocket.js,bin/javax/net/ssl/SSLSocketFactory.js,bin/javax/net/ssl/SSLPeerUnverifiedException.js,bin/javax/net/ssl/SSLException.js,bin/javax/net/ssl/SSLContext.js,bin/sun/security/util/HostnameChecker.js,bin/java/lang/AbstractMethodError.js,bin/javax/naming/ldap/StartTlsRequest.js,bin/javax/security/sasl/RealmCallback.js,bin/javax/security/auth/callback/TextInputCallback.js,bin/javax/security/sasl/RealmChoiceCallback.js,bin/javax/security/auth/callback/ChoiceCallback.js,bin/javax/security/sasl/Sasl.js,bin/javax/security/sasl/SaslException.js,bin/java/rmi/server/ServerNotActiveException.js,bin/java/rmi/registry/LocateRegistry.js,bin/java/rmi/NotBoundException.js,bin/java/rmi/AccessException.js,bin/java/rmi/AlreadyBoundException.js,bin/java/rmi/ConnectException.js,bin/java/rmi/StubNotFoundException.js,bin/java/rmi/UnknownHostException.js,bin/java/rmi/server/SocketSecurityException.js,bin/java/rmi/ConnectIOException.js,bin/java/rmi/MarshalException.js,bin/java/rmi/UnmarshalException.js,bin/java/rmi/ServerException.js,bin/java/rmi/RMISecurityManager.js,bin/javax/naming/LinkRef.js,bin/javax/naming/directory/AttributeModificationException.js,bin/java/lang/management/MemoryUsage.js,bin/sun/management/GcInfoCompositeData.js,bin/sun/management/LazyCompositeData.js,bin/sun/management/GcInfoBuilder.js,bin/sun/management/VMOptionCompositeData.js,bin/javax/sound/sampled/AudioFormat.js,bin/javax/sound/sampled/AudioSystem.js,bin/javax/sound/sampled/LineEvent.js,bin/javax/sound/sampled/LineUnavailableException.js,bin/javax/sound/midi/MidiUnavailableException.js,bin/javax/sound/midi/InvalidMidiDataException.js,bin/javax/sound/sampled/UnsupportedAudioFileException.js,bin/javax/sound/midi/ControllerEventListener.js,bin/javax/sound/midi/MetaMessage.js,bin/javax/sound/sampled/AudioPermission.js,bin/sun/misc/Service.js,bin/sun/misc/ServiceConfigurationError.js,bin/javax/sound/midi/MidiSystem.js,bin/javax/sound/midi/MidiFileFormat.js,bin/javax/sound/midi/Sequence.js,bin/javax/sound/midi/Track.js,bin/javax/sound/midi/MidiEvent.js,bin/javax/sound/sampled/EnumControl.js,bin/java/util/prefs/BackingStoreException.js,bin/java/util/prefs/Preferences.js,bin/java/io/FileFilter.js,bin/java/io/PipedInputStream.js,bin/java/io/PipedOutputStream.js,bin/sun/net/www/MessageHeader.js,bin/java/net/InetSocketAddress.js,bin/java/net/BindException.js,bin/javax/net/ssl/SSLParameters.js,bin/java/lang/RuntimePermission.js,bin/sun/net/httpserver/DefaultHttpServerProvider.js,bin/java/net/ProtocolException.js,bin/java/net/UnknownServiceException.js,bin/java/net/FileNameMap.js,bin/java/net/ContentHandlerFactory.js,bin/javax/net/ssl/HttpsURLConnection.js,bin/javax/net/ssl/KeyManagerFactory.js,bin/javax/net/ssl/KeyManagerFactorySpi.js,bin/sun/security/ssl/SSLSocketFactoryImpl.js,bin/sun/security/ssl/SSLServerSocketFactoryImpl.js,bin/javax/net/ssl/SSLServerSocketFactory.js,bin/javax/net/ServerSocketFactory.js,bin/java/security/KeyManagementException.js,bin/javax/net/ssl/SSLContextSpi.js,bin/javax/net/ssl/SSLPermission.js,bin/javax/net/ssl/TrustManagerFactory.js,bin/javax/net/ssl/SSLEngine.js,bin/javax/net/ssl/ManagerFactoryParameters.js,bin/javax/net/ssl/TrustManagerFactorySpi.js,bin/javax/security/auth/x500/X500Principal.js,bin/sun/security/x509/X500Name.js,bin/sun/security/x509/GeneralNameInterface.js,bin/sun/net/www/http/HttpClient.js,bin/sun/net/NetworkClient.js,bin/sun/net/www/protocol/http/AuthenticationHeader.js,bin/sun/net/www/protocol/http/AuthenticationInfo.js,bin/sun/net/www/protocol/http/AuthCacheValue.js,bin/java/net/Authenticator.js,bin/java/net/PasswordAuthentication.js,bin/sun/net/www/protocol/http/HttpAuthenticator.js,bin/java/security/cert/CertificateParsingException.js,bin/java/util/concurrent/ConcurrentHashMap.js,bin/java/util/concurrent/ConcurrentMap.js,bin/java/util/concurrent/locks/ReentrantLock.js,bin/java/security/Signature.js,bin/java/security/SignatureSpi.js,bin/java/security/SignatureException.js,bin/sun/security/jca/GetInstance.js,bin/java/net/URISyntaxException.js,bin/java/security/interfaces/DSAPublicKey.js,bin/java/security/interfaces/DSAKey.js,bin/java/security/spec/DSAPublicKeySpec.js,bin/java/security/spec/RSAPublicKeySpec.js,bin/java/util/concurrent/CopyOnWriteArrayList.js,bin/java/security/cert/CertificateExpiredException.js,bin/java/security/cert/CertificateNotYetValidException.js,bin/java/security/SecurityPermission.js,bin/java/util/concurrent/atomic/AtomicInteger.js,bin/java/util/concurrent/atomic/package-info.js,bin/java/sql/ResultSetMetaData.js,bin/javax/sql/rowset/RowSetMetaDataImpl.js,bin/javax/sql/RowSetMetaData.js,bin/java/sql/Connection.js,bin/javax/sql/rowset/RowSetWarning.js,bin/java/sql/SQLException.js,bin/java/sql/SQLWarning.js,bin/javax/sql/rowset/spi/SyncProviderException.js,bin/java/sql/Array.js,bin/java/sql/Blob.js,bin/java/sql/Clob.js,bin/java/sql/Date.js,bin/java/util/Calendar.js,bin/java/sql/NClob.js,bin/java/sql/Ref.js,bin/java/sql/RowId.js,bin/java/sql/SQLXML.js,bin/java/sql/Statement.js,bin/java/sql/Time.js,bin/java/sql/Timestamp.js,bin/java/sql/Savepoint.js,bin/javax/sql/RowSetEvent.js,bin/javax/sql/RowSetListener.js,bin/javax/sql/rowset/spi/SyncFactory.js,bin/javax/sql/rowset/spi/SyncFactoryException.js,bin/java/sql/Struct.js,bin/javax/sql/rowset/serial/SerialStruct.js,bin/javax/sql/rowset/serial/SerialException.js,bin/java/sql/SQLData.js,bin/javax/sql/rowset/serial/SerialBlob.js,bin/javax/sql/rowset/serial/SerialClob.js,bin/javax/sql/rowset/serial/SerialArray.js,bin/java/sql/DatabaseMetaData.js,bin/java/io/OptionalDataException.js,bin/java/math/MathContext.js,bin/java/math/RoundingMode.js,bin/java/sql/Types.js,bin/java/text/DateFormat.js,bin/java/text/spi/DateFormatProvider.js,bin/java/text/ParsePosition.js,bin/java/io/StringBufferInputStream.js,bin/javax/sql/rowset/serial/SQLInputImpl.js,bin/java/sql/SQLInput.js,bin/javax/sql/rowset/serial/SerialRef.js,bin/java/sql/SQLFeatureNotSupportedException.js,bin/java/sql/SQLNonTransientException.js,bin/javax/sql/rowset/Predicate.js,bin/java/sql/PreparedStatement.js,bin/java/sql/ParameterMetaData.js,bin/javax/sql/DataSource.js,bin/javax/sql/CommonDataSource.js,bin/java/sql/DriverManager.js,bin/java/io/OutputStreamWriter.js,bin/javax/script/ScriptContext.js,bin/sun/misc/FloatingDecimal.js,bin/sun/misc/FpUtils.js,bin/sun/misc/FloatConsts.js,bin/sun/misc/DoubleConsts.js,bin/javax/script/ScriptException.js,bin/java/security/AllPermission.js,bin/javax/script/SimpleBindings.js,bin/javax/script/SimpleScriptContext.js,bin/sun/security/util/ResourcesMgr.js,bin/java/security/Identity.js,bin/java/security/IdentityScope.js,bin/java/security/UnresolvedPermission.js,bin/javax/security/auth/PrivateCredentialPermission.js,bin/sun/security/util/PropertyExpander.js,bin/java/security/Policy.js,bin/java/net/SocketPermission.js,bin/java/io/StreamTokenizer.js,bin/java/io/FileReader.js,bin/java/io/FileWriter.js,bin/sun/security/provider/PolicyParser.js,bin/javax/security/auth/callback/ConfirmationCallback.js,bin/javax/security/auth/callback/TextOutputCallback.js,bin/javax/swing/JPasswordField.js,bin/java/io/PushbackInputStream.js,bin/sun/security/util/Password.js,bin/sun/security/util/AuthResources.js,bin/java/security/AuthProvider.js,bin/javax/security/auth/DestroyFailedException.js,bin/java/security/cert/CertPath.js,bin/javax/security/auth/x500/X500PrivateCredential.js,bin/sun/security/krb5/Config.js,bin/sun/security/krb5/RealmException.js,bin/sun/security/krb5/KrbException.js,bin/sun/security/jgss/krb5/Krb5Util.js,bin/sun/security/krb5/Credentials.js,bin/sun/security/krb5/EncryptionKey.js,bin/javax/security/auth/kerberos/KerberosKey.js,bin/javax/security/auth/kerberos/KerberosTicket.js,bin/javax/security/auth/Refreshable.js,bin/sun/security/krb5/PrincipalName.js,bin/sun/security/krb5/Asn1Exception.js,bin/javax/security/auth/RefreshFailedException.js,bin/java/util/regex/Matcher.js,bin/java/util/regex/MatchResult.js,bin/javax/naming/ldap/InitialLdapContext.js,bin/javax/security/cert/CertificateException.js,bin/javax/security/cert/CertificateExpiredException.js,bin/javax/security/cert/CertificateNotYetValidException.js,bin/javax/security/cert/CertificateEncodingException.js,bin/org/ietf/jgss/GSSName.js,bin/org/ietf/jgss/GSSCredential.js,bin/sun/security/jgss/GSSUtil.js,bin/javax/security/sasl/AuthorizeCallback.js,bin/org/ietf/jgss/Oid.js,bin/org/ietf/jgss/MessageProp.js,bin/org/ietf/jgss/GSSContext.js,bin/org/ietf/jgss/GSSException.js,bin/org/ietf/jgss/GSSManager.js,bin/java/util/ServiceLoader.js,bin/java/lang/ThreadDeath.js,bin/java/lang/ArrayStoreException.js,bin/javax/swing/tree/DefaultTreeModel.js,bin/javax/swing/UnsupportedLookAndFeelException.js,bin/javax/swing/event/TreeSelectionEvent.js,bin/javax/swing/DefaultListModel.js,bin/javax/swing/JTextArea.js,bin/java/text/NumberFormat.js,bin/java/text/spi/NumberFormatProvider.js,bin/java/util/jar/Attributes.js,bin/java/net/JarURLConnection.js,bin/sun/net/www/ParseUtil.js,bin/sun/misc/ASCIICaseInsensitiveComparator.js,bin/java/nio/channels/FileChannel.js,bin/java/nio/channels/spi/AbstractInterruptibleChannel.js,bin/java/nio/channels/Channel.js,bin/java/nio/channels/InterruptibleChannel.js,bin/java/nio/channels/ByteChannel.js,bin/java/nio/channels/ReadableByteChannel.js,bin/java/nio/channels/WritableByteChannel.js,bin/java/nio/channels/GatheringByteChannel.js,bin/java/nio/channels/ScatteringByteChannel.js,bin/java/nio/MappedByteBuffer.js,bin/java/net/URLDecoder.js,bin/java/net/URLEncoder.js,bin/java/net/ServerSocket.js,bin/javax/swing/event/SwingPropertyChangeSupport.js,bin/javax/swing/SwingWorker.js,bin/java/util/concurrent/RunnableFuture.js,bin/java/util/concurrent/Future.js,bin/sun/swing/AccumulativeRunnable.js,bin/java/util/concurrent/FutureTask.js,bin/java/lang/UnsatisfiedLinkError.js,bin/java/net/Inet6Address.js,bin/java/net/SocketTimeoutException.js,bin/javax/script/ScriptEngineManager.js,bin/javax/accessibility/AccessibleRole.js,bin/javax/accessibility/AccessibleBundle.js,bin/javax/accessibility/AccessibleRelationSet.js,bin/javax/accessibility/AccessibleState.js,bin/sun/applet/AppletAudioClip.js,bin/javax/swing/event/EventListenerList.js,bin/java/lang/ExceptionInInitializerError.js,bin/sun/java2d/SunCompositeContext.js,bin/sun/java2d/pipe/RenderingEngine.js,bin/sun/awt/image/IntegerComponentRaster.js,bin/javax/swing/BufferStrategyPaintManager.js,bin/javax/swing/RepaintManager.js,bin/sun/font/FontDesignMetrics.js,bin/sun/awt/im/InputContext.js,bin/sun/awt/PeerEvent.js,bin/sun/awt/dnd/SunDropTargetContextPeer.js,bin/sun/awt/DesktopBrowse.js,bin/java/util/concurrent/atomic/AtomicLong.js,bin/sun/awt/util/IdentityLinkedList.js,bin/sun/awt/AWTAutoShutdown.js,bin/sun/awt/dnd/SunDragSourceContextPeer.js,bin/sun/misc/JavaSecurityAccess.js,bin/java/text/StringCharacterIterator.js,bin/sun/font/StandardGlyphVector.js,bin/sun/font/AttributeMap.js,bin/sun/font/AttributeValues.js,bin/sun/font/CompositeFont.js,bin/sun/font/Font2D.js,bin/sun/font/CreatedFontTracker.js,bin/sun/font/Font2DHandle.js,bin/sun/font/GlyphLayout.js,bin/sun/font/FontLineMetrics.js,bin/sun/font/CoreMetrics.js,bin/java/text/Bidi.js,bin/java/text/Annotation.js,bin/sun/awt/image/SunVolatileImage.js,bin/sun/java2d/pipe/hw/AccelSurface.js,bin/sun/java2d/pipe/hw/BufferedContextProvider.js,bin/sun/java2d/Surface.js,bin/sun/java2d/HeadlessGraphicsEnvironment.js,bin/sun/awt/image/SurfaceManager.js,bin/sun/awt/geom/Crossings.js,bin/sun/awt/ScrollPaneWheelScroller.js,bin/java/text/BreakIterator.js,bin/java/text/spi/BreakIteratorProvider.js,bin/javax/accessibility/AccessibleTextSequence.js,bin/sun/awt/image/IntegerInterleavedRaster.js,bin/sun/awt/UngrabEvent.js,bin/java/lang/Compiler.js,bin/java/util/concurrent/atomic/AtomicBoolean.js,bin/sun/java2d/cmm/PCMM.js,bin/sun/java2d/cmm/CMSManager.js,bin/sun/java2d/cmm/ColorTransform.js,bin/sun/java2d/cmm/ProfileDeferralMgr.js,bin/sun/java2d/cmm/ProfileDeferralInfo.js,bin/sun/java2d/cmm/ProfileActivator.js,bin/sun/awt/EventListenerAggregate.js,bin/java/util/TooManyListenersException.js,bin/sun/security/action/GetIntegerAction.js,bin/sun/awt/datatransfer/TransferableProxy.js,bin/sun/font/Decoration.js,bin/sun/font/FontResolver.js,bin/sun/text/CodePointIterator.js,bin/sun/font/GraphicComponent.js,bin/sun/font/TextLineComponent.js,bin/sun/font/LayoutPathImpl.js,bin/sun/awt/geom/Curve.js,bin/sun/font/BidiUtils.js,bin/sun/font/TextLabelFactory.js,bin/sun/font/ExtendedTextLabel.js,bin/sun/font/TextLabel.js,bin/sun/awt/geom/AreaOp.js,bin/sun/awt/im/InputMethodContext.js,bin/sun/awt/image/ImagingLib.js,bin/sun/awt/image/BytePackedRaster.js,bin/sun/awt/image/ShortComponentRaster.js,bin/sun/awt/image/OffScreenImageSource.js,bin/sun/java2d/StateTrackableDelegate.js,bin/sun/awt/image/BufImgSurfaceData.js,bin/sun/java2d/SurfaceData.js,bin/sun/java2d/DisposerTarget.js,bin/sun/awt/image/ShortInterleavedRaster.js,bin/sun/awt/image/ByteBandedRaster.js,bin/sun/awt/image/ShortBandedRaster.js,bin/javax/print/DocFlavor.js,bin/javax/print/PrintServiceLookup.js,bin/javax/print/StreamPrintServiceFactory.js,bin/javax/print/attribute/standard/Media.js,bin/javax/print/attribute/EnumSyntax.js,bin/javax/print/attribute/DocAttribute.js,bin/javax/print/attribute/Attribute.js,bin/javax/print/attribute/PrintRequestAttribute.js,bin/javax/print/attribute/PrintJobAttribute.js,bin/javax/print/attribute/standard/MediaPrintableArea.js,bin/javax/print/attribute/standard/MediaSize.js,bin/javax/print/attribute/Size2DSyntax.js,bin/javax/print/attribute/standard/MediaSizeName.js,bin/javax/print/attribute/standard/OrientationRequested.js,bin/sun/swing/PrintColorUIResource.js,bin/java/util/EnumSet.js,bin/javax/swing/DefaultComboBoxModel.js,bin/javax/swing/MutableComboBoxModel.js,bin/javax/swing/ToolTipManager.js,bin/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.js,bin/java/io/LineNumberReader.js,bin/java/util/PropertyPermission.js,bin/java/net/NetPermission.js,bin/sun/java2d/StateTracker.js,bin/java/lang/IllegalMonitorStateException.js,bin/java/io/InvalidClassException.js,bin/java/lang/TypeNotPresentException.js,bin/java/lang/reflect/MalformedParameterizedTypeException.js,bin/javax/crypto/KeyGenerator.js,bin/java/security/Signer.js,bin/java/security/Certificate.js,bin/java/security/interfaces/DSAPrivateKey.js,bin/java/security/interfaces/RSAPrivateCrtKey.js,bin/javax/net/ssl/KeyStoreBuilderParameters.js,bin/javax/crypto/JceSecurityManager.js,bin/javax/crypto/CryptoAllPermission.js,bin/sun/security/jca/ServiceId.js,bin/javax/crypto/JceSecurity.js,bin/javax/crypto/NullCipher.js,bin/javax/crypto/ExemptionMechanismException.js,bin/javax/crypto/spec/RC5ParameterSpec.js,bin/java/security/cert/CertStoreParameters.js,bin/java/util/LinkedHashSet.js,bin/java/util/XMLUtils.js,bin/javax/imageio/spi/ImageTranscoderSpi.js,bin/sun/util/ResourceBundleEnumeration.js,bin/sun/reflect/Reflection.js,bin/java/io/UTFDataFormatException.js,bin/java/io/WriteAbortedException.js,bin/javax/swing/DebugGraphics.js,bin/javax/swing/SortingFocusTraversalPolicy.js,bin/javax/swing/InternalFrameFocusTraversalPolicy.js,bin/javax/swing/LegacyGlueFocusTraversalPolicy.js,bin/javax/swing/KeyboardManager.js,bin/javax/swing/Autoscroller.js,bin/javax/swing/event/AncestorEvent.js,bin/sun/swing/AccessibleMethod.js,bin/javax/accessibility/AccessibleRelation.js,bin/javax/swing/text/StyledDocument.js,bin/java/util/regex/PatternSyntaxException.js,bin/sun/swing/plaf/synth/SynthFileChooserUIImpl.js,bin/javax/swing/plaf/basic/BasicHTML.js,bin/javax/swing/text/html/HTMLEditorKit.js,bin/javax/swing/text/StyledEditorKit.js,bin/javax/swing/text/html/HTMLDocument.js,bin/javax/swing/text/DefaultStyledDocument.js,bin/javax/swing/text/html/BlockView.js,bin/javax/swing/text/PlainDocument.js,bin/javax/swing/plaf/synth/SynthButtonUI.js,bin/javax/swing/plaf/synth/SynthCheckBoxUI.js,bin/javax/swing/plaf/synth/SynthRadioButtonUI.js,bin/javax/swing/plaf/synth/SynthToggleButtonUI.js,bin/javax/swing/plaf/synth/SynthCheckBoxMenuItemUI.js,bin/javax/swing/plaf/synth/SynthMenuItemUI.js,bin/javax/swing/plaf/synth/SynthColorChooserUI.js,bin/javax/swing/plaf/basic/BasicColorChooserUI.js,bin/javax/swing/plaf/ColorChooserUI.js,bin/javax/swing/plaf/synth/SynthComboBoxUI.js,bin/javax/swing/plaf/synth/SynthDesktopPaneUI.js,bin/javax/swing/plaf/synth/SynthDesktopIconUI.js,bin/javax/swing/plaf/synth/SynthEditorPaneUI.js,bin/javax/swing/plaf/synth/SynthFormattedTextFieldUI.js,bin/javax/swing/plaf/synth/SynthTextFieldUI.js,bin/javax/swing/plaf/synth/SynthInternalFrameUI.js,bin/javax/swing/plaf/synth/SynthLabelUI.js,bin/javax/swing/plaf/synth/SynthListUI.js,bin/javax/swing/plaf/basic/BasicListUI.js,bin/javax/swing/plaf/ListUI.js,bin/javax/swing/plaf/synth/SynthMenuBarUI.js,bin/javax/swing/plaf/synth/SynthMenuUI.js,bin/javax/swing/plaf/synth/SynthOptionPaneUI.js,bin/javax/swing/plaf/synth/SynthPanelUI.js,bin/javax/swing/plaf/basic/BasicPanelUI.js,bin/javax/swing/plaf/synth/SynthPasswordFieldUI.js,bin/javax/swing/plaf/synth/SynthSeparatorUI.js,bin/javax/swing/plaf/synth/SynthPopupMenuUI.js,bin/javax/swing/plaf/synth/SynthProgressBarUI.js,bin/javax/swing/plaf/synth/SynthRadioButtonMenuItemUI.js,bin/javax/swing/plaf/synth/SynthRootPaneUI.js,bin/javax/swing/plaf/synth/SynthScrollBarUI.js,bin/javax/swing/plaf/synth/SynthScrollPaneUI.js,bin/javax/swing/plaf/synth/SynthSliderUI.js,bin/javax/swing/plaf/synth/SynthSpinnerUI.js,bin/javax/swing/plaf/synth/SynthArrowButton.js,bin/javax/swing/plaf/synth/SynthSplitPaneUI.js,bin/javax/swing/plaf/synth/SynthTabbedPaneUI.js,bin/javax/swing/plaf/synth/SynthTableUI.js,bin/javax/swing/plaf/basic/BasicTableUI.js,bin/javax/swing/plaf/TableUI.js,bin/javax/swing/plaf/synth/SynthTableHeaderUI.js,bin/javax/swing/plaf/synth/SynthTextAreaUI.js,bin/javax/swing/plaf/synth/SynthTextPaneUI.js,bin/javax/swing/plaf/synth/SynthToolBarUI.js,bin/javax/swing/plaf/synth/SynthToolTipUI.js,bin/javax/swing/plaf/basic/BasicToolTipUI.js,bin/javax/swing/plaf/ToolTipUI.js,bin/javax/swing/plaf/synth/SynthTreeUI.js,bin/javax/swing/tree/DefaultTreeCellEditor.js,bin/javax/swing/plaf/synth/SynthViewportUI.js,bin/javax/swing/plaf/ViewportUI.js,bin/javax/swing/plaf/synth/DefaultSynthStyleFactory.js,bin/javax/swing/plaf/synth/SynthParser.js,bin/javax/swing/plaf/synth/SynthDefaultLookup.js,bin/javax/swing/FocusManager.js,bin/javax/swing/LayoutFocusTraversalPolicy.js,bin/sun/misc/Cleaner.js,bin/java/lang/ref/PhantomReference.js,bin/javax/swing/plaf/synth/SynthBorder.js,bin/javax/swing/event/MenuDragMouseEvent.js,bin/javax/swing/DefaultSingleSelectionModel.js,bin/javax/swing/OverlayLayout.js,bin/javax/swing/text/html/CSS.js,bin/javax/swing/text/html/HTML.js,bin/javax/swing/JEditorPane.js,bin/javax/accessibility/AccessibleHypertext.js,bin/javax/accessibility/AccessibleHyperlink.js,bin/javax/swing/text/StyleConstants.js,bin/javax/swing/plaf/basic/DefaultMenuLayout.js,bin/javax/swing/text/PasswordView.js,bin/javax/swing/text/FieldView.js,bin/javax/swing/text/PlainView.js,bin/javax/swing/text/TabSet.js,bin/javax/swing/SizeRequirements.js,bin/javax/swing/text/GlyphView.js,bin/javax/swing/text/TabableView.js,bin/javax/swing/JApplet.js,bin/javax/swing/text/WrappedPlainView.js,bin/javax/swing/text/StateInvariantError.js,bin/javax/swing/event/TreeExpansionEvent.js,bin/javax/swing/event/TreeModelEvent.js,bin/javax/swing/tree/FixedHeightLayoutCache.js,bin/javax/swing/tree/VariableHeightLayoutCache.js,bin/javax/swing/event/RowSorterEvent.js,bin/javax/swing/event/TableModelEvent.js,bin/sun/awt/shell/ShellFolderColumnInfo.js,bin/javax/swing/table/TableStringConverter.js,bin/javax/swing/table/TableColumnModel.js,bin/javax/swing/table/DefaultTableColumnModel.js,bin/javax/swing/event/TableColumnModelEvent.js,bin/javax/swing/SizeSequence.js,bin/javax/swing/SpinnerDateModel.js,bin/java/text/SimpleDateFormat.js,bin/java/util/GregorianCalendar.js,bin/java/util/concurrent/Callable.js,bin/java/security/GuardedObject.js,bin/java/util/Formatter.js,bin/java/text/Collator.js,bin/java/text/spi/CollatorProvider.js,bin/java/lang/StringCoding.js,bin/java/lang/ConditionalSpecialCasing.js,bin/javax/management/Query.js,bin/javax/management/AttributeValueExp.js,bin/javax/management/ValueExp.js,bin/sun/reflect/MethodAccessor.js,bin/sun/reflect/generics/repository/MethodRepository.js,bin/sun/reflect/generics/repository/ConstructorRepository.js,bin/sun/reflect/generics/tree/MethodTypeSignature.js,bin/sun/reflect/generics/factory/CoreReflectionFactory.js,bin/sun/reflect/generics/factory/GenericsFactory.js,bin/sun/reflect/generics/scope/MethodScope.js,bin/sun/reflect/generics/scope/AbstractScope.js,bin/sun/reflect/generics/scope/Scope.js,bin/sun/reflect/annotation/AnnotationParser.js,bin/java/lang/annotation/AnnotationFormatError.js,bin/java/lang/reflect/GenericSignatureFormatError.js,bin/sun/reflect/ConstantPool.js,bin/sun/reflect/annotation/ExceptionProxy.js,bin/java/lang/reflect/ReflectPermission.js,bin/java/lang/EnumConstantNotPresentException.js,bin/java/lang/annotation/AnnotationTypeMismatchException.js,bin/java/lang/annotation/IncompleteAnnotationException.js,bin/sun/misc/Unsafe.js,bin/sun/reflect/SignatureIterator.js,bin/sun/reflect/generics/scope/ClassScope.js,bin/java/io/SerialCallbackContext.js,bin/java/io/SerializablePermission.js,bin/java/lang/InheritableThreadLocal.js,bin/java/util/concurrent/RejectedExecutionException.js,bin/java/util/concurrent/ExecutorService.js,bin/java/util/concurrent/ThreadPoolExecutor.js,bin/java/util/concurrent/AbstractExecutorService.js,bin/java/util/concurrent/RejectedExecutionHandler.js,bin/java/util/concurrent/Executors.js,bin/java/util/concurrent/ThreadFactory.js,bin/java/util/concurrent/ScheduledExecutorService.js,bin/java/util/concurrent/ScheduledThreadPoolExecutor.js,bin/java/util/concurrent/RunnableScheduledFuture.js,bin/java/util/concurrent/ScheduledFuture.js,bin/java/util/concurrent/Delayed.js,bin/java/util/concurrent/BlockingQueue.js,bin/java/util/concurrent/ExecutorCompletionService.js,bin/java/util/concurrent/CompletionService.js,bin/java/util/concurrent/ConcurrentLinkedQueue.js,bin/java/util/concurrent/LinkedBlockingQueue.js,bin/java/util/concurrent/ArrayBlockingQueue.js,bin/java/util/concurrent/SynchronousQueue.js,bin/java/util/concurrent/PriorityBlockingQueue.js,bin/java/util/concurrent/DelayQueue.js,bin/java/util/concurrent/BlockingDeque.js,bin/java/util/concurrent/LinkedBlockingDeque.js,bin/java/util/concurrent/TimeUnit.js,bin/java/util/concurrent/Semaphore.js,bin/java/util/concurrent/CountDownLatch.js,bin/java/util/concurrent/CyclicBarrier.js,bin/java/util/concurrent/Exchanger.js,bin/java/util/concurrent/atomic/AtomicReference.js,bin/java/util/concurrent/ConcurrentSkipListMap.js,bin/java/util/concurrent/ConcurrentNavigableMap.js,bin/java/util/concurrent/ConcurrentSkipListSet.js,bin/java/util/concurrent/CopyOnWriteArraySet.js,bin/javax/security/auth/login/ConfigurationSpi.js,bin/sun/misc/ClassFileTransformer.js,bin/sun/misc/CompoundEnumeration.js,bin/sun/misc/Resource.js,bin/sun/misc/VM.js,bin/sun/misc/Launcher.js,bin/java/net/URLStreamHandlerFactory.js,bin/java/util/concurrent/locks/LockSupport.js,bin/sun/misc/SoftCache.js,bin/java/lang/StackOverflowError.js,bin/java/nio/channels/Selector.js,bin/javax/naming/spi/InitialContextFactoryBuilder.js,bin/javax/naming/NameImpl.js,bin/javax/naming/directory/InvalidSearchControlsException.js,bin/javax/naming/spi/ObjectFactoryBuilder.js,bin/java/rmi/server/ServerCloneException.js,bin/sun/rmi/transport/LiveRef.js,bin/sun/rmi/transport/ObjectTable.js,bin/java/rmi/server/RemoteObjectInvocationHandler.js,bin/sun/rmi/runtime/Log.js,bin/java/util/logging/StreamHandler.js,bin/java/rmi/ServerError.js,bin/java/rmi/server/Skeleton.js,bin/java/rmi/server/SkeletonNotFoundException.js,bin/sun/rmi/transport/Target.js,bin/sun/rmi/transport/tcp/TCPTransport.js,bin/sun/rmi/transport/Transport.js,bin/sun/rmi/server/Util.js,bin/java/rmi/activation/Activatable.js,bin/java/lang/management/MemoryMXBean.js,bin/javax/management/openmbean/InvalidKeyException.js,bin/javax/management/MXBean.js,bin/sun/net/www/MimeTable.js,bin/java/net/SecureCacheResponse.js,bin/java/net/CacheResponse.js,bin/sun/net/www/protocol/https/HttpsClient.js,bin/javax/net/ssl/HandshakeCompletedListener.js,bin/java/net/HttpRetryException.js,bin/java/net/ProxySelector.js,bin/java/net/CookieHandler.js,bin/java/net/ResponseCache.js,bin/java/net/CacheRequest.js,bin/sun/net/www/http/PosterOutputStream.js,bin/sun/net/www/http/ChunkedInputStream.js,bin/sun/net/www/http/Hurryable.js,bin/sun/net/www/http/ChunkedOutputStream.js,bin/sun/net/www/http/HttpCapture.js,bin/sun/net/www/protocol/http/AuthScheme.js,bin/sun/net/www/protocol/http/DigestAuthentication.js,bin/sun/net/ProgressSource.js,bin/sun/net/ApplicationProxy.js,bin/sun/net/ProgressMonitor.js,bin/sun/net/ProgressMeteringPolicy.js,bin/sun/net/www/protocol/http/HttpCallerInfo.js,bin/sun/net/www/HeaderParser.js,bin/sun/net/www/protocol/http/BasicAuthentication.js,bin/sun/net/www/protocol/http/NTLMAuthenticationProxy.js,bin/sun/net/www/protocol/http/NegotiateAuthentication.js,bin/sun/net/www/MeteredStream.js,bin/sun/net/www/protocol/https/HttpsURLConnectionImpl.js,bin/sun/net/util/IPAddressUtil.js,bin/java/security/Timestamp.js,bin/javax/swing/filechooser/FileNameExtensionFilter.js,bin/java/io/FilterWriter.js,bin/java/io/PipedWriter.js,bin/javax/accessibility/AccessibleAttributeSequence.js,bin/sun/awt/Graphics2Delegate.js,bin/sun/awt/image/ImageRepresentation.js,bin/sun/awt/image/ImageWatched.js,bin/sun/awt/image/ToolkitImage.js,bin/sun/awt/datatransfer/ToolkitThreadBlockedHandler.js,bin/java/nio/charset/CoderResult.js,bin/java/lang/CharacterData.js,bin/java/io/FilterReader.js,bin/java/io/PushbackReader.js,bin/java/io/PipedReader.js,bin/javax/swing/event/UndoableEditListener.js,bin/javax/swing/event/UndoableEditEvent.js,bin/javax/swing/undo/CannotRedoException.js,bin/javax/swing/undo/CannotUndoException.js,bin/javax/swing/text/Utilities.js,bin/javax/swing/text/SegmentCache.js,bin/javax/swing/text/LabelView.js,bin/javax/swing/DefaultBoundedRangeModel.js,bin/sun/swing/PrintingStatus.js,bin/sun/swing/text/TextComponentPrintable.js,bin/sun/swing/text/CountingPrintable.js,bin/javax/print/attribute/HashPrintRequestAttributeSet.js,bin/javax/print/attribute/HashAttributeSet.js,bin/java/util/concurrent/ExecutionException.js,bin/java/util/concurrent/TimeoutException.js,bin/javax/swing/text/TabStop.js,bin/javax/swing/text/ComponentView.js,bin/javax/swing/ViewportLayout.js,bin/javax/swing/table/DefaultTableModel.js,bin/sun/misc/JavaIODeleteOnExitAccess.js,bin/java/io/DeleteOnExitHook.js,bin/sun/misc/JavaIOFileAccess.js,bin/java/nio/channels/FileLock.js,bin/sun/awt/DefaultMouseInfoPeer.js,bin/sun/awt/ModalityEvent.js,bin/sun/awt/DebugSettings.js,bin/sun/awt/KeyboardFocusManagerPeerImpl.js,bin/sun/awt/image/URLImageSource.js,bin/sun/awt/image/InputStreamImageSource.js,bin/sun/awt/image/ImageFetchable.js,bin/sun/awt/image/FileImageSource.js,bin/sun/awt/image/ByteArrayImageSource.js,bin/sun/awt/im/SimpleInputMethodWindow.js,bin/sun/awt/im/InputMethodWindow.js,bin/sun/util/resources/LocaleData.js,bin/sun/util/resources/OpenListResourceBundle.js,bin/java/util/LocaleISOData.js,bin/java/util/ServiceConfigurationError.js,bin/java/text/spi/DateFormatSymbolsProvider.js,bin/java/text/spi/DecimalFormatSymbolsProvider.js,bin/java/util/spi/CurrencyNameProvider.js,bin/java/util/spi/TimeZoneNameProvider.js,bin/sun/reflect/FieldAccessor.js,bin/sun/reflect/generics/repository/FieldRepository.js,bin/sun/reflect/generics/tree/TypeSignature.js,bin/sun/reflect/generics/tree/ReturnType.js,bin/sun/reflect/generics/tree/TypeTree.js,bin/sun/reflect/generics/tree/FieldTypeSignature.js,bin/sun/reflect/generics/tree/BaseType.js,bin/sun/reflect/generics/tree/TypeArgument.js,bin/java/lang/ref/FinalReference.js,bin/sun/reflect/generics/visitor/Reifier.js,bin/sun/reflect/generics/visitor/TypeTreeVisitor.js,bin/sun/java2d/pipe/SpanIterator.js,bin/sun/java2d/pipe/RegionIterator.js,bin/sun/java2d/pipe/ShapeSpanIterator.js,bin/sun/awt/geom/PathConsumer2D.js,bin/sun/java2d/pipe/RegionSpanIterator.js,bin/sun/java2d/pipe/RegionClipSpanIterator.js,bin/java/nio/channels/spi/SelectorProvider.js,bin/sun/net/InetAddressCachePolicy.js,bin/java/io/Console.js,bin/sun/misc/JavaIOAccess.js,bin/java/lang/ProcessBuilder.js,bin/java/io/ExpiringCache.js,bin/java/io/IOError.js,bin/java/io/LineNumberInputStream.js,bin/java/io/SyncFailedException.js,bin/java/lang/ApplicationShutdownHooks.js,bin/java/lang/InstantiationError.js,bin/java/lang/NoSuchFieldError.js,bin/java/lang/Shutdown.js,bin/java/lang/StrictMath.js,bin/java/lang/UnknownError.js,bin/java/lang/annotation/Inherited.js,bin/java/lang/instrument/ClassDefinition.js,bin/java/lang/instrument/ClassFileTransformer.js,bin/java/lang/instrument/IllegalClassFormatException.js,bin/java/lang/instrument/Instrumentation.js,bin/java/lang/instrument/UnmodifiableClassException.js,bin/java/lang/management/ClassLoadingMXBean.js,bin/java/lang/management/CompilationMXBean.js,bin/java/lang/management/LockInfo.js,bin/java/lang/management/ManagementPermission.js,bin/java/lang/management/MemoryNotificationInfo.js,bin/java/lang/management/MemoryPoolMXBean.js,bin/java/lang/management/MemoryType.js,bin/java/lang/management/MonitorInfo.js,bin/java/lang/management/RuntimeMXBean.js,bin/java/lang/management/ThreadInfo.js,bin/java/lang/management/ThreadMXBean.js,bin/java/lang/ref/Finalizer.js,bin/java/lang/reflect/ReflectAccess.js,bin/java/math/BitSieve.js,bin/java/math/MutableBigInteger.js,bin/java/math/SignedMutableBigInteger.js,bin/java/net/AbstractPlainDatagramSocketImpl.js,bin/java/net/AbstractPlainSocketImpl.js,bin/java/net/ConnectException.js,bin/java/net/CookieManager.js,bin/java/net/CookiePolicy.js,bin/java/net/CookieStore.js,bin/java/net/DatagramSocketImplFactory.js,bin/java/net/HttpCookie.js,bin/java/net/IDN.js,bin/java/net/Inet4Address.js,bin/java/net/Inet4AddressImpl.js,bin/java/net/Inet6AddressImpl.js,bin/java/net/InetAddressImpl.js,bin/java/net/InterfaceAddress.js,bin/java/net/MulticastSocket.js,bin/java/net/NetUtil.js,bin/java/net/NetworkInterface.js,bin/java/net/NoRouteToHostException.js,bin/java/net/PortUnreachableException.js,bin/java/net/SocketImplFactory.js,bin/java/net/SocketInputStream.js,bin/java/net/SocketOutputStream.js,bin/java/net/SocksConsts.js,bin/java/net/SocksSocketImpl.js,bin/java/nio/Bits.js,bin/java/nio/ByteBufferAs-X-Buffer.js,bin/java/nio/Direct-X-Buffer-bin.js,bin/java/nio/Direct-X-Buffer.js,bin/java/nio/Heap-X-Buffer.js,bin/java/nio/StringCharBuffer.js,bin/java/nio/X-Buffer-bin.js,bin/java/nio/X-Buffer.js,bin/java/nio/channels/Channels.js,bin/java/nio/channels/DatagramChannel.js,bin/java/nio/channels/Pipe.js,bin/java/nio/channels/SelectableChannel.js,bin/java/nio/channels/SelectionKey.js,bin/java/nio/channels/ServerSocketChannel.js,bin/java/nio/channels/SocketChannel.js,bin/java/nio/channels/spi/AbstractSelectableChannel.js,bin/java/nio/channels/spi/AbstractSelectionKey.js,bin/java/nio/channels/spi/AbstractSelector.js,bin/java/nio/charset/Charset-X-Coder.js,bin/java/nio/charset/CoderMalfunctionError.js,bin/java/nio/charset/CodingErrorAction.js,bin/java/nio/charset/MalformedInputException.js,bin/java/nio/charset/UnmappableCharacterException.js,bin/java/nio/charset/spi/CharsetProvider.js,bin/java/rmi/Naming.js,bin/java/rmi/RMISecurityException.js,bin/java/rmi/ServerRuntimeException.js,bin/java/rmi/UnexpectedException.js,bin/java/rmi/activation/ActivateFailedException.js,bin/java/rmi/activation/ActivationDesc.js,bin/java/rmi/activation/ActivationException.js,bin/java/rmi/activation/ActivationGroup.js,bin/java/rmi/activation/ActivationGroupDesc.js,bin/java/rmi/activation/ActivationGroupID.js,bin/java/rmi/activation/ActivationID.js,bin/java/rmi/activation/ActivationInstantiator.js,bin/java/rmi/activation/ActivationMonitor.js,bin/java/rmi/activation/ActivationSystem.js,bin/java/rmi/activation/Activator.js,bin/java/rmi/activation/UnknownGroupException.js,bin/java/rmi/activation/UnknownObjectException.js,bin/java/rmi/dgc/DGC.js,bin/java/rmi/dgc/Lease.js,bin/java/rmi/dgc/VMID.js,bin/java/rmi/registry/RegistryHandler.js,bin/java/rmi/server/LoaderHandler.js,bin/java/rmi/server/LogStream.js,bin/java/rmi/server/ObjID.js,bin/java/rmi/server/RMIClassLoader.js,bin/java/rmi/server/RMIClassLoaderSpi.js,bin/java/rmi/server/RMIFailureHandler.js,bin/java/rmi/server/RMISocketFactory.js,bin/java/rmi/server/SkeletonMismatchException.js,bin/java/rmi/server/UID.js,bin/java/rmi/server/Unreferenced.js,bin/java/security/PolicySpi.js,bin/java/security/SecureRandomSpi.js,bin/java/security/SignedObject.js,bin/java/security/URIParameter.js,bin/java/security/UnresolvedPermissionCollection.js,bin/java/security/acl/AclNotFoundException.js,bin/java/security/cert/CRL.js,bin/java/security/cert/CRLException.js,bin/java/security/cert/CRLSelector.js,bin/java/security/cert/CertPathBuilder.js,bin/java/security/cert/CertPathBuilderException.js,bin/java/security/cert/CertPathBuilderResult.js,bin/java/security/cert/CertPathBuilderSpi.js,bin/java/security/cert/CertPathHelperImpl.js,bin/java/security/cert/CertPathParameters.js,bin/java/security/cert/CertPathValidator.js,bin/java/security/cert/CertPathValidatorException.js,bin/java/security/cert/CertPathValidatorResult.js,bin/java/security/cert/CertPathValidatorSpi.js,bin/java/security/cert/CertSelector.js,bin/java/security/cert/CertStore.js,bin/java/security/cert/CertStoreException.js,bin/java/security/cert/CertStoreSpi.js,bin/java/security/cert/CertificateFactorySpi.js,bin/java/security/cert/CollectionCertStoreParameters.js,bin/java/security/cert/LDAPCertStoreParameters.js,bin/java/security/cert/PKIXBuilderParameters.js,bin/java/security/cert/PKIXCertPathBuilderResult.js,bin/java/security/cert/PKIXCertPathChecker.js,bin/java/security/cert/PKIXCertPathValidatorResult.js,bin/java/security/cert/PKIXParameters.js,bin/java/security/cert/PolicyNode.js,bin/java/security/cert/PolicyQualifierInfo.js,bin/java/security/cert/TrustAnchor.js,bin/java/security/cert/X509CRL.js,bin/java/security/cert/X509CRLEntry.js,bin/java/security/cert/X509CRLSelector.js,bin/java/security/cert/X509CertSelector.js,bin/java/security/interfaces/DSAKeyPairGenerator.js,bin/java/security/interfaces/ECKey.js,bin/java/security/interfaces/ECPrivateKey.js,bin/java/security/interfaces/ECPublicKey.js,bin/java/security/interfaces/RSAMultiPrimePrivateCrtKey.js,bin/java/security/spec/DSAPrivateKeySpec.js,bin/java/security/spec/ECField.js,bin/java/security/spec/ECFieldF2m.js,bin/java/security/spec/ECFieldFp.js,bin/java/security/spec/ECGenParameterSpec.js,bin/java/security/spec/ECParameterSpec.js,bin/java/security/spec/ECPoint.js,bin/java/security/spec/ECPrivateKeySpec.js,bin/java/security/spec/ECPublicKeySpec.js,bin/java/security/spec/EllipticCurve.js,bin/java/security/spec/PSSParameterSpec.js,bin/java/security/spec/RSAKeyGenParameterSpec.js,bin/java/security/spec/RSAMultiPrimePrivateCrtKeySpec.js,bin/java/security/spec/RSAOtherPrimeInfo.js,bin/java/security/spec/RSAPrivateCrtKeySpec.js,bin/java/security/spec/RSAPrivateKeySpec.js,bin/java/sql/BatchUpdateException.js,bin/java/sql/CallableStatement.js,bin/java/sql/ClientInfoStatus.js,bin/java/sql/DataTruncation.js,bin/java/sql/Driver.js,bin/java/sql/DriverPropertyInfo.js,bin/java/sql/RowIdLifetime.js,bin/java/sql/SQLClientInfoException.js,bin/java/sql/SQLDataException.js,bin/java/sql/SQLIntegrityConstraintViolationException.js,bin/java/sql/SQLInvalidAuthorizationSpecException.js,bin/java/sql/SQLNonTransientConnectionException.js,bin/java/sql/SQLOutput.js,bin/java/sql/SQLPermission.js,bin/java/sql/SQLRecoverableException.js,bin/java/sql/SQLSyntaxErrorException.js,bin/java/sql/SQLTimeoutException.js,bin/java/sql/SQLTransactionRollbackException.js,bin/java/sql/SQLTransientConnectionException.js,bin/java/sql/SQLTransientException.js,bin/java/text/BreakDictionary.js,bin/java/text/CharacterIteratorFieldDelegate.js,bin/java/text/ChoiceFormat.js,bin/java/text/CollationElementIterator.js,bin/java/text/CollationKey.js,bin/java/text/CollationRules.js,bin/java/text/DateFormatSymbols.js,bin/java/text/DecimalFormat.js,bin/java/text/DecimalFormatSymbols.js,bin/java/text/DictionaryBasedBreakIterator.js,bin/java/text/DigitList.js,bin/java/text/DontCareFieldPosition.js,bin/java/text/EntryPair.js,bin/java/text/MergeCollation.js,bin/java/text/Normalizer.js,bin/java/text/PatternEntry.js,bin/java/text/RBCollationTables.js,bin/java/text/RBTableBuilder.js,bin/java/text/RuleBasedBreakIterator.js,bin/java/text/RuleBasedCollationKey.js,bin/java/text/RuleBasedCollator.js,bin/java/util/ArrayDeque.js,bin/java/util/Currency.js,bin/java/util/DuplicateFormatFlagsException.js,bin/java/util/FormatFlagsConversionMismatchException.js,bin/java/util/Formattable.js,bin/java/util/FormattableFlags.js,bin/java/util/FormatterClosedException.js,bin/java/util/IllegalFormatCodePointException.js,bin/java/util/IllegalFormatConversionException.js,bin/java/util/IllegalFormatException.js,bin/java/util/IllegalFormatFlagsException.js,bin/java/util/IllegalFormatPrecisionException.js,bin/java/util/IllegalFormatWidthException.js,bin/java/util/InputMismatchException.js,bin/java/util/JapaneseImperialCalendar.js,bin/java/util/JumboEnumSet.js,bin/java/util/MissingFormatArgumentException.js,bin/java/util/MissingFormatWidthException.js,bin/java/util/Observable.js,bin/java/util/Observer.js,bin/java/util/PriorityQueue.js,bin/java/util/RegularEnumSet.js,bin/java/util/Scanner.js,bin/java/util/SimpleTimeZone.js,bin/java/util/Timer.js,bin/java/util/TimerTask.js,bin/java/util/UUID.js,bin/java/util/UnknownFormatConversionException.js,bin/java/util/UnknownFormatFlagsException.js,bin/java/util/concurrent/BrokenBarrierException.js,bin/java/util/concurrent/CancellationException.js,bin/java/util/concurrent/atomic/AtomicIntegerArray.js,bin/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.js,bin/java/util/concurrent/atomic/AtomicLongArray.js,bin/java/util/concurrent/atomic/AtomicLongFieldUpdater.js,bin/java/util/concurrent/atomic/AtomicMarkableReference.js,bin/java/util/concurrent/atomic/AtomicReferenceArray.js,bin/java/util/concurrent/atomic/AtomicStampedReference.js,bin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.js,bin/java/util/jar/JarException.js,bin/java/util/jar/JarVerifier.js,bin/java/util/jar/JavaUtilJarAccessImpl.js,bin/java/util/logging/ConsoleHandler.js,bin/java/util/logging/ErrorManager.js,bin/java/util/logging/FileHandler.js,bin/java/util/logging/Formatter.js,bin/java/util/logging/Logging.js,bin/java/util/logging/LoggingMXBean.js,bin/java/util/logging/LoggingPermission.js,bin/java/util/logging/MemoryHandler.js,bin/java/util/logging/SimpleFormatter.js,bin/java/util/logging/SocketHandler.js,bin/java/util/logging/XMLFormatter.js,bin/java/util/prefs/AbstractPreferences.js,bin/java/util/prefs/Base64.js,bin/java/util/prefs/InvalidPreferencesFormatException.js,bin/java/util/prefs/NodeChangeEvent.js,bin/java/util/prefs/NodeChangeListener.js,bin/java/util/prefs/PreferenceChangeEvent.js,bin/java/util/prefs/PreferenceChangeListener.js,bin/java/util/prefs/PreferencesFactory.js,bin/java/util/prefs/XmlSupport.js,bin/java/util/regex/ASCII.js,bin/java/util/zip/Adler32.js,bin/java/util/zip/CheckedInputStream.js,bin/java/util/zip/DataFormatException.js,bin/java/util/zip/DeflaterInputStream.js,bin/java/util/zip/InflaterOutputStream.js,bin/java/util/zip/ZStreamRef.js,bin/java/util/zip/ZipError.js,bin/javax/accessibility/AccessibleResourceBundle.js,bin/javax/accessibility/AccessibleStreamable.js,bin/javax/crypto/CipherInputStream.js,bin/javax/crypto/CipherOutputStream.js,bin/javax/crypto/CryptoPermissions.js,bin/javax/crypto/CryptoPolicyParser.js,bin/javax/crypto/EncryptedPrivateKeyInfo.js,bin/javax/crypto/ExemptionMechanismSpi.js,bin/javax/crypto/JarVerifier.js,bin/javax/crypto/KeyAgreement.js,bin/javax/crypto/NullCipherSpi.js,bin/javax/imageio/spi/DigraphNode.js,bin/javax/imageio/spi/PartiallyOrderedSet.js,bin/javax/imageio/stream/MemoryCache.js,bin/javax/management/AndQueryExp.js,bin/javax/management/AttributeChangeNotificationFilter.js,bin/javax/management/BetweenQueryExp.js,bin/javax/management/BinaryOpValueExp.js,bin/javax/management/BinaryRelQueryExp.js,bin/javax/management/BooleanValueExp.js,bin/javax/management/ClassAttributeValueExp.js,bin/javax/management/DefaultLoaderRepository.js,bin/javax/management/DescriptorAccess.js,bin/javax/management/InQueryExp.js,bin/javax/management/InstanceOfQueryExp.js,bin/javax/management/MatchQueryExp.js,bin/javax/management/NotQueryExp.js,bin/javax/management/NumericValueExp.js,bin/javax/management/OrQueryExp.js,bin/javax/management/PersistentMBean.js,bin/javax/management/QualifiedAttributeValueExp.js,bin/javax/management/StandardEmitterMBean.js,bin/javax/management/StandardMBean.js,bin/javax/management/StringValueExp.js,bin/javax/management/loading/DefaultLoaderRepository.js,bin/javax/management/loading/MLet.js,bin/javax/management/loading/MLetContent.js,bin/javax/management/loading/MLetMBean.js,bin/javax/management/loading/MLetObjectInputStream.js,bin/javax/management/loading/MLetParser.js,bin/javax/management/loading/PrivateMLet.js,bin/javax/management/modelmbean/DescriptorSupport.js,bin/javax/management/modelmbean/InvalidTargetObjectTypeException.js,bin/javax/management/modelmbean/ModelMBean.js,bin/javax/management/modelmbean/ModelMBeanAttributeInfo.js,bin/javax/management/modelmbean/ModelMBeanConstructorInfo.js,bin/javax/management/modelmbean/ModelMBeanInfo.js,bin/javax/management/modelmbean/ModelMBeanInfoSupport.js,bin/javax/management/modelmbean/ModelMBeanNotificationBroadcaster.js,bin/javax/management/modelmbean/ModelMBeanNotificationInfo.js,bin/javax/management/modelmbean/ModelMBeanOperationInfo.js,bin/javax/management/modelmbean/RequiredModelMBean.js,bin/javax/management/modelmbean/XMLParseException.js,bin/javax/management/monitor/CounterMonitor.js,bin/javax/management/monitor/CounterMonitorMBean.js,bin/javax/management/monitor/GaugeMonitor.js,bin/javax/management/monitor/GaugeMonitorMBean.js,bin/javax/management/monitor/Monitor.js,bin/javax/management/monitor/MonitorMBean.js,bin/javax/management/monitor/MonitorNotification.js,bin/javax/management/monitor/MonitorSettingException.js,bin/javax/management/monitor/StringMonitor.js,bin/javax/management/monitor/StringMonitorMBean.js,bin/javax/management/openmbean/InvalidOpenTypeException.js,bin/javax/management/openmbean/KeyAlreadyExistsException.js,bin/javax/management/openmbean/OpenMBeanConstructorInfo.js,bin/javax/management/openmbean/OpenMBeanConstructorInfoSupport.js,bin/javax/management/openmbean/OpenMBeanInfo.js,bin/javax/management/openmbean/OpenMBeanInfoSupport.js,bin/javax/management/relation/InvalidRelationIdException.js,bin/javax/management/relation/InvalidRelationServiceException.js,bin/javax/management/relation/InvalidRelationTypeException.js,bin/javax/management/relation/InvalidRoleInfoException.js,bin/javax/management/relation/InvalidRoleValueException.js,bin/javax/management/relation/MBeanServerNotificationFilter.js,bin/javax/management/relation/Relation.js,bin/javax/management/relation/RelationException.js,bin/javax/management/relation/RelationNotFoundException.js,bin/javax/management/relation/RelationNotification.js,bin/javax/management/relation/RelationService.js,bin/javax/management/relation/RelationServiceMBean.js,bin/javax/management/relation/RelationServiceNotRegisteredException.js,bin/javax/management/relation/RelationSupport.js,bin/javax/management/relation/RelationSupportMBean.js,bin/javax/management/relation/RelationType.js,bin/javax/management/relation/RelationTypeNotFoundException.js,bin/javax/management/relation/RelationTypeSupport.js,bin/javax/management/relation/Role.js,bin/javax/management/relation/RoleInfo.js,bin/javax/management/relation/RoleInfoNotFoundException.js,bin/javax/management/relation/RoleList.js,bin/javax/management/relation/RoleNotFoundException.js,bin/javax/management/relation/RoleResult.js,bin/javax/management/relation/RoleStatus.js,bin/javax/management/relation/RoleUnresolved.js,bin/javax/management/relation/RoleUnresolvedList.js,bin/javax/management/remote/JMXConnectionNotification.js,bin/javax/management/remote/JMXProviderException.js,bin/javax/management/remote/JMXServerErrorException.js,bin/javax/management/remote/rmi/NoCallStackClassLoader.js,bin/javax/management/remote/rmi/RMIConnection.js,bin/javax/management/remote/rmi/RMIConnectionImpl.js,bin/javax/management/remote/rmi/RMIIIOPServerImpl.js,bin/javax/management/remote/rmi/RMIJRMPServerImpl.js,bin/javax/management/timer/Timer.js,bin/javax/management/timer/TimerAlarmClockNotification.js,bin/javax/management/timer/TimerMBean.js,bin/javax/management/timer/TimerNotification.js,bin/javax/naming/BinaryRefAddr.js,bin/javax/naming/InsufficientResourcesException.js,bin/javax/naming/LinkException.js,bin/javax/naming/LinkLoopException.js,bin/javax/naming/MalformedLinkException.js,bin/javax/naming/ldap/ManageReferralControl.js,bin/javax/naming/ldap/PagedResultsControl.js,bin/javax/naming/ldap/Rfc2253Parser.js,bin/javax/naming/ldap/SortControl.js,bin/javax/naming/ldap/SortKey.js,bin/javax/naming/spi/ContinuationContext.js,bin/javax/naming/spi/ContinuationDirContext.js,bin/javax/naming/spi/DirObjectFactory.js,bin/javax/net/ssl/CertPathTrustManagerParameters.js,bin/javax/net/ssl/HandshakeCompletedEvent.js,bin/javax/net/ssl/SSLEngineResult.js,bin/javax/net/ssl/SSLHandshakeException.js,bin/javax/net/ssl/SSLKeyException.js,bin/javax/net/ssl/SSLProtocolException.js,bin/javax/net/ssl/SSLServerSocket.js,bin/javax/net/ssl/SSLSessionBindingEvent.js,bin/javax/net/ssl/SSLSessionBindingListener.js,bin/javax/net/ssl/SSLSessionContext.js,bin/javax/net/ssl/X509ExtendedKeyManager.js,bin/javax/print/AttributeException.js,bin/javax/print/CancelablePrintJob.js,bin/javax/print/Doc.js,bin/javax/print/DocPrintJob.js,bin/javax/print/FlavorException.js,bin/javax/print/MimeType.js,bin/javax/print/MultiDoc.js,bin/javax/print/MultiDocPrintJob.js,bin/javax/print/MultiDocPrintService.js,bin/javax/print/PrintException.js,bin/javax/print/ServiceUI.js,bin/javax/print/ServiceUIFactory.js,bin/javax/print/SimpleDoc.js,bin/javax/print/StreamPrintService.js,bin/javax/print/URIException.js,bin/javax/print/attribute/AttributeSetUtilities.js,bin/javax/print/attribute/DateTimeSyntax.js,bin/javax/print/attribute/DocAttributeSet.js,bin/javax/print/attribute/HashDocAttributeSet.js,bin/javax/print/attribute/HashPrintJobAttributeSet.js,bin/javax/print/attribute/HashPrintServiceAttributeSet.js,bin/javax/print/attribute/IntegerSyntax.js,bin/javax/print/attribute/PrintJobAttributeSet.js,bin/javax/print/attribute/PrintServiceAttribute.js,bin/javax/print/attribute/PrintServiceAttributeSet.js,bin/javax/print/attribute/ResolutionSyntax.js,bin/javax/print/attribute/SetOfIntegerSyntax.js,bin/javax/print/attribute/SupportedValuesAttribute.js,bin/javax/print/attribute/TextSyntax.js,bin/javax/print/attribute/URISyntax.js,bin/javax/print/attribute/UnmodifiableSetException.js,bin/javax/print/attribute/standard/Chromaticity.js,bin/javax/print/attribute/standard/ColorSupported.js,bin/javax/print/attribute/standard/Compression.js,bin/javax/print/attribute/standard/Copies.js,bin/javax/print/attribute/standard/CopiesSupported.js,bin/javax/print/attribute/standard/DateTimeAtCompleted.js,bin/javax/print/attribute/standard/DateTimeAtCreation.js,bin/javax/print/attribute/standard/DateTimeAtProcessing.js,bin/javax/print/attribute/standard/Destination.js,bin/javax/print/attribute/standard/DocumentName.js,bin/javax/print/attribute/standard/Fidelity.js,bin/javax/print/attribute/standard/Finishings.js,bin/javax/print/attribute/standard/JobHoldUntil.js,bin/javax/print/attribute/standard/JobImpressions.js,bin/javax/print/attribute/standard/JobImpressionsCompleted.js,bin/javax/print/attribute/standard/JobImpressionsSupported.js,bin/javax/print/attribute/standard/JobKOctets.js,bin/javax/print/attribute/standard/JobKOctetsProcessed.js,bin/javax/print/attribute/standard/JobKOctetsSupported.js,bin/javax/print/attribute/standard/JobMediaSheets.js,bin/javax/print/attribute/standard/JobMediaSheetsCompleted.js,bin/javax/print/attribute/standard/JobMediaSheetsSupported.js,bin/javax/print/attribute/standard/JobMessageFromOperator.js,bin/javax/print/attribute/standard/JobName.js,bin/javax/print/attribute/standard/JobOriginatingUserName.js,bin/javax/print/attribute/standard/JobPriority.js,bin/javax/print/attribute/standard/JobPrioritySupported.js,bin/javax/print/attribute/standard/JobSheets.js,bin/javax/print/attribute/standard/JobState.js,bin/javax/print/attribute/standard/JobStateReason.js,bin/javax/print/attribute/standard/JobStateReasons.js,bin/javax/print/attribute/standard/MediaName.js,bin/javax/print/attribute/standard/MediaTray.js,bin/javax/print/attribute/standard/MultipleDocumentHandling.js,bin/javax/print/attribute/standard/NumberOfDocuments.js,bin/javax/print/attribute/standard/NumberOfInterveningJobs.js,bin/javax/print/attribute/standard/NumberUp.js,bin/javax/print/attribute/standard/NumberUpSupported.js,bin/javax/print/attribute/standard/OutputDeviceAssigned.js,bin/javax/print/attribute/standard/PDLOverrideSupported.js,bin/javax/print/attribute/standard/PageRanges.js,bin/javax/print/attribute/standard/PagesPerMinute.js,bin/javax/print/attribute/standard/PagesPerMinuteColor.js,bin/javax/print/attribute/standard/PresentationDirection.js,bin/javax/print/attribute/standard/PrintQuality.js,bin/javax/print/attribute/standard/PrinterInfo.js,bin/javax/print/attribute/standard/PrinterIsAcceptingJobs.js,bin/javax/print/attribute/standard/PrinterLocation.js,bin/javax/print/attribute/standard/PrinterMakeAndModel.js,bin/javax/print/attribute/standard/PrinterMessageFromOperator.js,bin/javax/print/attribute/standard/PrinterMoreInfo.js,bin/javax/print/attribute/standard/PrinterMoreInfoManufacturer.js,bin/javax/print/attribute/standard/PrinterName.js,bin/javax/print/attribute/standard/PrinterResolution.js,bin/javax/print/attribute/standard/PrinterState.js,bin/javax/print/attribute/standard/PrinterStateReason.js,bin/javax/print/attribute/standard/PrinterStateReasons.js,bin/javax/print/attribute/standard/PrinterURI.js,bin/javax/print/attribute/standard/QueuedJobCount.js,bin/javax/print/attribute/standard/ReferenceUriSchemesSupported.js,bin/javax/print/attribute/standard/RequestingUserName.js,bin/javax/print/attribute/standard/Severity.js,bin/javax/print/attribute/standard/SheetCollate.js,bin/javax/print/attribute/standard/Sides.js,bin/javax/print/event/PrintEvent.js,bin/javax/print/event/PrintJobAdapter.js,bin/javax/print/event/PrintJobAttributeEvent.js,bin/javax/print/event/PrintJobAttributeListener.js,bin/javax/print/event/PrintJobEvent.js,bin/javax/print/event/PrintJobListener.js,bin/javax/print/event/PrintServiceAttributeEvent.js,bin/javax/print/event/PrintServiceAttributeListener.js,bin/javax/security/auth/callback/LanguageCallback.js,bin/javax/security/auth/kerberos/DelegationPermission.js,bin/javax/security/auth/kerberos/KeyImpl.js,bin/javax/security/auth/kerberos/ServicePermission.js,bin/javax/security/auth/login/AccountException.js,bin/javax/security/auth/login/AccountExpiredException.js,bin/javax/security/auth/login/AccountLockedException.js,bin/javax/security/auth/login/AccountNotFoundException.js,bin/javax/security/auth/login/CredentialException.js,bin/javax/security/auth/login/CredentialExpiredException.js,bin/javax/security/auth/login/CredentialNotFoundException.js,bin/javax/security/cert/CertificateParsingException.js,bin/javax/security/sasl/AuthenticationException.js,bin/javax/smartcardio/ATR.js,bin/javax/smartcardio/Card.js,bin/javax/smartcardio/CardChannel.js,bin/javax/smartcardio/CardException.js,bin/javax/smartcardio/CardNotPresentException.js,bin/javax/smartcardio/CardPermission.js,bin/javax/smartcardio/CardTerminal.js,bin/javax/smartcardio/CardTerminals.js,bin/javax/smartcardio/CommandAPDU.js,bin/javax/smartcardio/ResponseAPDU.js,bin/javax/smartcardio/TerminalFactory.js,bin/javax/smartcardio/TerminalFactorySpi.js,bin/javax/sound/sampled/ReverbType.js,bin/javax/sql/ConnectionEvent.js,bin/javax/sql/ConnectionEventListener.js,bin/javax/sql/ConnectionPoolDataSource.js,bin/javax/sql/PooledConnection.js,bin/javax/sql/StatementEvent.js,bin/javax/sql/StatementEventListener.js,bin/javax/sql/XAConnection.js,bin/javax/sql/XADataSource.js,bin/javax/sql/rowset/serial/SQLOutputImpl.js,bin/javax/sql/rowset/serial/SerialDatalink.js,bin/javax/sql/rowset/serial/SerialJavaObject.js,bin/javax/swing/DebugGraphicsFilter.js,bin/javax/swing/DebugGraphicsInfo.js,bin/javax/swing/DebugGraphicsObserver.js,bin/javax/swing/DefaultFocusManager.js,bin/javax/swing/DelegatingDefaultFocusManager.js,bin/javax/swing/GraphicsWrapper.js,bin/javax/swing/GroupLayout.js,bin/javax/swing/JTextPane.js,bin/javax/swing/LayoutComparator.js,bin/javax/swing/MultiUIDefaults.js,bin/javax/swing/ProgressMonitor.js,bin/javax/swing/ProgressMonitorInputStream.js,bin/javax/swing/Renderer.js,bin/javax/swing/ScrollPaneLayout.js,bin/javax/swing/SpinnerListModel.js,bin/javax/swing/Spring.js,bin/javax/swing/SpringLayout.js,bin/javax/swing/SwingPaintEventDispatcher.js,bin/javax/swing/TablePrintable.js,bin/javax/swing/TimerQueue.js,bin/javax/swing/border/SoftBevelBorder.js,bin/javax/swing/colorchooser/CenterLayout.js,bin/javax/swing/colorchooser/ColorChooserComponentFactory.js,bin/javax/swing/colorchooser/DefaultColorSelectionModel.js,bin/javax/swing/colorchooser/DefaultHSBChooserPanel.js,bin/javax/swing/colorchooser/DefaultPreviewPanel.js,bin/javax/swing/colorchooser/DefaultRGBChooserPanel.js,bin/javax/swing/colorchooser/DefaultSwatchChooserPanel.js,bin/javax/swing/colorchooser/SmartGridLayout.js,bin/javax/swing/colorchooser/SyntheticImage.js,bin/javax/swing/event/HyperlinkEvent.js,bin/javax/swing/event/HyperlinkListener.js,bin/javax/swing/event/InternalFrameAdapter.js,bin/javax/swing/event/MenuEvent.js,bin/javax/swing/event/TreeWillExpandListener.js,bin/javax/swing/plaf/basic/BasicCheckBoxUI.js,bin/javax/swing/plaf/basic/BasicFormattedTextFieldUI.js,bin/javax/swing/plaf/basic/BasicIconFactory.js,bin/javax/swing/plaf/basic/BasicViewportUI.js,bin/javax/swing/plaf/basic/CenterLayout.js,bin/javax/swing/plaf/metal/DefaultMetalTheme.js,bin/javax/swing/plaf/metal/MetalBorders.js,bin/javax/swing/plaf/metal/MetalBumps.js,bin/javax/swing/plaf/metal/MetalButtonUI.js,bin/javax/swing/plaf/metal/MetalCheckBoxIcon.js,bin/javax/swing/plaf/metal/MetalCheckBoxUI.js,bin/javax/swing/plaf/metal/MetalComboBoxButton.js,bin/javax/swing/plaf/metal/MetalComboBoxEditor.js,bin/javax/swing/plaf/metal/MetalComboBoxIcon.js,bin/javax/swing/plaf/metal/MetalComboBoxUI.js,bin/javax/swing/plaf/metal/MetalDesktopIconUI.js,bin/javax/swing/plaf/metal/MetalFileChooserUI.js,bin/javax/swing/plaf/metal/MetalFontDesktopProperty.js,bin/javax/swing/plaf/metal/MetalHighContrastTheme.js,bin/javax/swing/plaf/metal/MetalIconFactory.js,bin/javax/swing/plaf/metal/MetalInternalFrameTitlePane.js,bin/javax/swing/plaf/metal/MetalInternalFrameUI.js,bin/javax/swing/plaf/metal/MetalLabelUI.js,bin/javax/swing/plaf/metal/MetalLookAndFeel.js,bin/javax/swing/plaf/metal/MetalMenuBarUI.js,bin/javax/swing/plaf/metal/MetalPopupMenuSeparatorUI.js,bin/javax/swing/plaf/metal/MetalProgressBarUI.js,bin/javax/swing/plaf/metal/MetalRadioButtonUI.js,bin/javax/swing/plaf/metal/MetalRootPaneUI.js,bin/javax/swing/plaf/metal/MetalScrollBarUI.js,bin/javax/swing/plaf/metal/MetalScrollButton.js,bin/javax/swing/plaf/metal/MetalScrollPaneUI.js,bin/javax/swing/plaf/metal/MetalSeparatorUI.js,bin/javax/swing/plaf/metal/MetalSliderUI.js,bin/javax/swing/plaf/metal/MetalSplitPaneDivider.js,bin/javax/swing/plaf/metal/MetalSplitPaneUI.js,bin/javax/swing/plaf/metal/MetalTabbedPaneUI.js,bin/javax/swing/plaf/metal/MetalTextFieldUI.js,bin/javax/swing/plaf/metal/MetalTheme.js,bin/javax/swing/plaf/metal/MetalTitlePane.js,bin/javax/swing/plaf/metal/MetalToggleButtonUI.js,bin/javax/swing/plaf/metal/MetalToolBarUI.js,bin/javax/swing/plaf/metal/MetalToolTipUI.js,bin/javax/swing/plaf/metal/MetalTreeUI.js,bin/javax/swing/plaf/metal/MetalUtils.js,bin/javax/swing/plaf/metal/OceanTheme.js,bin/javax/swing/plaf/multi/MultiButtonUI.js,bin/javax/swing/plaf/multi/MultiColorChooserUI.js,bin/javax/swing/plaf/multi/MultiComboBoxUI.js,bin/javax/swing/plaf/multi/MultiDesktopIconUI.js,bin/javax/swing/plaf/multi/MultiDesktopPaneUI.js,bin/javax/swing/plaf/multi/MultiFileChooserUI.js,bin/javax/swing/plaf/multi/MultiInternalFrameUI.js,bin/javax/swing/plaf/multi/MultiLabelUI.js,bin/javax/swing/plaf/multi/MultiListUI.js,bin/javax/swing/plaf/multi/MultiLookAndFeel.js,bin/javax/swing/plaf/multi/MultiMenuBarUI.js,bin/javax/swing/plaf/multi/MultiMenuItemUI.js,bin/javax/swing/plaf/multi/MultiOptionPaneUI.js,bin/javax/swing/plaf/multi/MultiPanelUI.js,bin/javax/swing/plaf/multi/MultiPopupMenuUI.js,bin/javax/swing/plaf/multi/MultiProgressBarUI.js,bin/javax/swing/plaf/multi/MultiRootPaneUI.js,bin/javax/swing/plaf/multi/MultiScrollBarUI.js,bin/javax/swing/plaf/multi/MultiScrollPaneUI.js,bin/javax/swing/plaf/multi/MultiSeparatorUI.js,bin/javax/swing/plaf/multi/MultiSliderUI.js,bin/javax/swing/plaf/multi/MultiSpinnerUI.js,bin/javax/swing/plaf/multi/MultiSplitPaneUI.js,bin/javax/swing/plaf/multi/MultiTabbedPaneUI.js,bin/javax/swing/plaf/multi/MultiTableHeaderUI.js,bin/javax/swing/plaf/multi/MultiTableUI.js,bin/javax/swing/plaf/multi/MultiTextUI.js,bin/javax/swing/plaf/multi/MultiToolBarUI.js,bin/javax/swing/plaf/multi/MultiToolTipUI.js,bin/javax/swing/plaf/multi/MultiTreeUI.js,bin/javax/swing/plaf/multi/MultiViewportUI.js,bin/javax/swing/plaf/synth/DefaultMenuLayout.js,bin/javax/swing/plaf/synth/ImagePainter.js,bin/javax/swing/plaf/synth/ParsedSynthStyle.js,bin/javax/swing/plaf/synth/SynthComboPopup.js,bin/javax/swing/plaf/synth/SynthInternalFrameTitlePane.js,bin/javax/swing/plaf/synth/SynthSplitPaneDivider.js,bin/javax/swing/text/AbstractWriter.js,bin/javax/swing/text/AsyncBoxView.js,bin/javax/swing/text/ChangedCharSetException.js,bin/javax/swing/text/DefaultFormatterFactory.js,bin/javax/swing/text/DefaultTextUI.js,bin/javax/swing/text/ElementIterator.js,bin/javax/swing/text/GapContent.js,bin/javax/swing/text/GapVector.js,bin/javax/swing/text/GlyphPainter1.js,bin/javax/swing/text/GlyphPainter2.js,bin/javax/swing/text/IconView.js,bin/javax/swing/text/LayoutQueue.js,bin/javax/swing/text/MaskFormatter.js,bin/javax/swing/text/StringContent.js,bin/javax/swing/text/TableView.js,bin/javax/swing/text/TextLayoutStrategy.js,bin/javax/swing/text/WhitespaceBasedBreakIterator.js,bin/javax/swing/text/ZoneView.js,bin/javax/swing/text/html/AccessibleHTML.js,bin/javax/swing/text/html/BRView.js,bin/javax/swing/text/html/CommentView.js,bin/javax/swing/text/html/EditableView.js,bin/javax/swing/text/html/FormSubmitEvent.js,bin/javax/swing/text/html/FormView.js,bin/javax/swing/text/html/FrameSetView.js,bin/javax/swing/text/html/FrameView.js,bin/javax/swing/text/html/HRuleView.js,bin/javax/swing/text/html/HTMLFrameHyperlinkEvent.js,bin/javax/swing/text/html/HTMLWriter.js,bin/javax/swing/text/html/HiddenTagView.js,bin/javax/swing/text/html/ImageView.js,bin/javax/swing/text/html/InlineView.js,bin/javax/swing/text/html/IsindexView.js,bin/javax/swing/text/html/LineView.js,bin/javax/swing/text/html/ListView.js,bin/javax/swing/text/html/Map.js,bin/javax/swing/text/html/MinimalHTMLWriter.js,bin/javax/swing/text/html/NoFramesView.js,bin/javax/swing/text/html/ObjectView.js,bin/javax/swing/text/html/Option.js,bin/javax/swing/text/html/OptionComboBoxModel.js,bin/javax/swing/text/html/OptionListModel.js,bin/javax/swing/text/html/ParagraphView.js,bin/javax/swing/text/html/ResourceLoader.js,bin/javax/swing/text/html/TableView.js,bin/javax/swing/text/html/TextAreaDocument.js,bin/javax/swing/text/html/parser/AttributeList.js,bin/javax/swing/text/html/parser/ContentModel.js,bin/javax/swing/text/html/parser/ContentModelState.js,bin/javax/swing/text/html/parser/DTD.js,bin/javax/swing/text/html/parser/DTDConstants.js,bin/javax/swing/text/html/parser/DocumentParser.js,bin/javax/swing/text/html/parser/Element.js,bin/javax/swing/text/html/parser/Entity.js,bin/javax/swing/text/html/parser/Parser.js,bin/javax/swing/text/html/parser/ParserDelegator.js,bin/javax/swing/text/html/parser/ResourceLoader.js,bin/javax/swing/text/html/parser/TagElement.js,bin/javax/swing/text/html/parser/TagStack.js,bin/javax/swing/text/rtf/AbstractFilter.js,bin/javax/swing/text/rtf/Constants.js,bin/javax/swing/text/rtf/MockAttributeSet.js,bin/javax/swing/text/rtf/RTFAttribute.js,bin/javax/swing/text/rtf/RTFAttributes.js,bin/javax/swing/text/rtf/RTFEditorKit.js,bin/javax/swing/text/rtf/RTFGenerator.js,bin/javax/swing/text/rtf/RTFParser.js,bin/javax/swing/text/rtf/RTFReader.js,bin/javax/swing/tree/ExpandVetoException.js,bin/javax/swing/undo/StateEdit.js,bin/javax/swing/undo/StateEditable.js,bin/javax/swing/undo/UndoManager.js,bin/javax/swing/undo/UndoableEditSupport.js,bin/javax/xml/crypto/AlgorithmMethod.js,bin/javax/xml/crypto/Data.js,bin/javax/xml/crypto/KeySelector.js,bin/javax/xml/crypto/KeySelectorException.js,bin/javax/xml/crypto/KeySelectorResult.js,bin/javax/xml/crypto/MarshalException.js,bin/javax/xml/crypto/NoSuchMechanismException.js,bin/javax/xml/crypto/NodeSetData.js,bin/javax/xml/crypto/OctetStreamData.js,bin/javax/xml/crypto/URIDereferencer.js,bin/javax/xml/crypto/URIReference.js,bin/javax/xml/crypto/URIReferenceException.js,bin/javax/xml/crypto/XMLCryptoContext.js,bin/javax/xml/crypto/XMLStructure.js,bin/javax/xml/crypto/dom/DOMCryptoContext.js,bin/javax/xml/crypto/dom/DOMStructure.js,bin/javax/xml/crypto/dom/DOMURIReference.js,bin/javax/xml/crypto/dsig/CanonicalizationMethod.js,bin/javax/xml/crypto/dsig/DigestMethod.js,bin/javax/xml/crypto/dsig/Manifest.js,bin/javax/xml/crypto/dsig/Reference.js,bin/javax/xml/crypto/dsig/SignatureMethod.js,bin/javax/xml/crypto/dsig/SignatureProperties.js,bin/javax/xml/crypto/dsig/SignatureProperty.js,bin/javax/xml/crypto/dsig/SignedInfo.js,bin/javax/xml/crypto/dsig/Transform.js,bin/javax/xml/crypto/dsig/TransformException.js,bin/javax/xml/crypto/dsig/TransformService.js,bin/javax/xml/crypto/dsig/XMLObject.js,bin/javax/xml/crypto/dsig/XMLSignContext.js,bin/javax/xml/crypto/dsig/XMLSignature.js,bin/javax/xml/crypto/dsig/XMLSignatureException.js,bin/javax/xml/crypto/dsig/XMLSignatureFactory.js,bin/javax/xml/crypto/dsig/XMLValidateContext.js,bin/javax/xml/crypto/dsig/dom/DOMSignContext.js,bin/javax/xml/crypto/dsig/dom/DOMValidateContext.js,bin/javax/xml/crypto/dsig/keyinfo/KeyInfo.js,bin/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.js,bin/javax/xml/crypto/dsig/keyinfo/KeyName.js,bin/javax/xml/crypto/dsig/keyinfo/KeyValue.js,bin/javax/xml/crypto/dsig/keyinfo/PGPData.js,bin/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.js,bin/javax/xml/crypto/dsig/keyinfo/X509Data.js,bin/javax/xml/crypto/dsig/keyinfo/X509IssuerSerial.js,bin/javax/xml/crypto/dsig/spec/C14NMethodParameterSpec.js,bin/javax/xml/crypto/dsig/spec/DigestMethodParameterSpec.js,bin/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.js,bin/javax/xml/crypto/dsig/spec/HMACParameterSpec.js,bin/javax/xml/crypto/dsig/spec/SignatureMethodParameterSpec.js,bin/javax/xml/crypto/dsig/spec/TransformParameterSpec.js,bin/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.js,bin/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.js,bin/javax/xml/crypto/dsig/spec/XPathType.js,bin/javax/xml/crypto/dsig/spec/XSLTTransformParameterSpec.js,bin/org/ietf/jgss/ChannelBinding.js,bin/org/jcp/xml/dsig/internal/DigesterOutputStream.js,bin/org/jcp/xml/dsig/internal/MacOutputStream.js,bin/org/jcp/xml/dsig/internal/SignerOutputStream.js,bin/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.js,bin/org/jcp/xml/dsig/internal/dom/ApacheData.js,bin/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.js,bin/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.js,bin/org/jcp/xml/dsig/internal/dom/ApacheTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.js,bin/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14N11Method.js,bin/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.js,bin/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyName.js,bin/org/jcp/xml/dsig/internal/dom/DOMKeyValue.js,bin/org/jcp/xml/dsig/internal/dom/DOMManifest.js,bin/org/jcp/xml/dsig/internal/dom/DOMPGPData.js,bin/org/jcp/xml/dsig/internal/dom/DOMReference.js,bin/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.js,bin/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.js,bin/org/jcp/xml/dsig/internal/dom/DOMStructure.js,bin/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.js,bin/org/jcp/xml/dsig/internal/dom/DOMTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.js,bin/org/jcp/xml/dsig/internal/dom/DOMUtils.js,bin/org/jcp/xml/dsig/internal/dom/DOMX509Data.js,bin/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.js,bin/org/jcp/xml/dsig/internal/dom/DOMXMLObject.js,bin/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.js,bin/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.js,bin/org/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.js,bin/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.js,bin/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.js,bin/org/jcp/xml/dsig/internal/dom/Utils.js,bin/org/jcp/xml/dsig/internal/dom/XMLDSigRI.js,bin/sun/applet/AppletClassLoader.js,bin/sun/applet/AppletEvent.js,bin/sun/applet/AppletEventMulticaster.js,bin/sun/applet/AppletIOException.js,bin/sun/applet/AppletIllegalArgumentException.js,bin/sun/applet/AppletImageRef.js,bin/sun/applet/AppletListener.js,bin/sun/applet/AppletMessageHandler.js,bin/sun/applet/AppletObjectInputStream.js,bin/sun/applet/AppletPanel.js,bin/sun/applet/AppletProps.js,bin/sun/applet/AppletResourceLoader.js,bin/sun/applet/AppletSecurity.js,bin/sun/applet/AppletSecurityException.js,bin/sun/applet/AppletThreadGroup.js,bin/sun/applet/AppletViewer.js,bin/sun/applet/AppletViewerFactory.js,bin/sun/applet/AppletViewerPanel.js,bin/sun/applet/Main.js,bin/sun/applet/resources/MsgAppletViewer.js,bin/sun/applet/resources/MsgAppletViewer_de.js,bin/sun/applet/resources/MsgAppletViewer_es.js,bin/sun/applet/resources/MsgAppletViewer_fr.js,bin/sun/applet/resources/MsgAppletViewer_it.js,bin/sun/applet/resources/MsgAppletViewer_ja.js,bin/sun/applet/resources/MsgAppletViewer_ko.js,bin/sun/applet/resources/MsgAppletViewer_pt_BR.js,bin/sun/applet/resources/MsgAppletViewer_sv.js,bin/sun/applet/resources/MsgAppletViewer_zh_CN.js,bin/sun/applet/resources/MsgAppletViewer_zh_TW.js,bin/sun/audio/AudioData.js,bin/sun/audio/AudioDataStream.js,bin/sun/audio/AudioDevice.js,bin/sun/audio/AudioPlayer.js,bin/sun/audio/AudioSecurityAction.js,bin/sun/audio/AudioSecurityExceptionAction.js,bin/sun/audio/AudioStream.js,bin/sun/audio/AudioStreamSequence.js,bin/sun/audio/AudioTranslatorStream.js,bin/sun/audio/ContinuousAudioDataStream.js,bin/sun/audio/InvalidAudioFormatException.js,bin/sun/audio/NativeAudioStream.js,bin/sun/awt/AWTCharset.js,bin/sun/awt/AWTSecurityManager.js,bin/sun/awt/CharsetString.js,bin/sun/awt/ComponentAccessor.js,bin/sun/awt/CustomCursor.js,bin/sun/awt/FocusingTextField.js,bin/sun/awt/FontConfiguration.js,bin/sun/awt/FontDescriptor.js,bin/sun/awt/GlobalCursorManager.js,bin/sun/awt/HKSCS.js,bin/sun/awt/HorizBagLayout.js,bin/sun/awt/Mutex.js,bin/sun/awt/NativeLibLoader.js,bin/sun/awt/OrientableFlowLayout.js,bin/sun/awt/PaintEventDispatcher.js,bin/sun/awt/PlatformFont.js,bin/sun/awt/RepaintArea.js,bin/sun/awt/SunDisplayChanger.js,bin/sun/awt/Symbol.js,bin/sun/awt/TracedEventQueue.js,bin/sun/awt/VariableGridLayout.js,bin/sun/awt/VerticalBagLayout.js,bin/sun/awt/WindowAccessor.js,bin/sun/awt/WindowIDProvider.js,bin/sun/awt/datatransfer/ClipboardTransferable.js,bin/sun/awt/datatransfer/SunClipboard.js,bin/sun/awt/event/IgnorePaintEvent.js,bin/sun/awt/geom/ChainEnd.js,bin/sun/awt/geom/CurveLink.js,bin/sun/awt/geom/Edge.js,bin/sun/awt/geom/Order0.js,bin/sun/awt/geom/Order1.js,bin/sun/awt/geom/Order2.js,bin/sun/awt/geom/Order3.js,bin/sun/awt/im/CompositionAreaHandler.js,bin/sun/awt/im/InputMethodAdapter.js,bin/sun/awt/im/InputMethodJFrame.js,bin/sun/awt/im/InputMethodLocator.js,bin/sun/awt/im/InputMethodManager.js,bin/sun/awt/im/InputMethodPopupMenu.js,bin/sun/awt/image/BadDepthException.js,bin/sun/awt/image/BufImgSurfaceManager.js,bin/sun/awt/image/BufImgVolatileSurfaceManager.js,bin/sun/awt/image/BufferedImageDevice.js,bin/sun/awt/image/BufferedImageGraphicsConfig.js,bin/sun/awt/image/DataBufferNative.js,bin/sun/awt/image/GifImageDecoder.js,bin/sun/awt/image/ImageAccessException.js,bin/sun/awt/image/ImageConsumerQueue.js,bin/sun/awt/image/ImageDecoder.js,bin/sun/awt/image/ImageFetcher.js,bin/sun/awt/image/ImageFormatException.js,bin/sun/awt/image/JPEGImageDecoder.js,bin/sun/awt/image/NativeLibLoader.js,bin/sun/awt/image/OffScreenImage.js,bin/sun/awt/image/PNGImageDecoder.js,bin/sun/awt/image/PixelConverter.js,bin/sun/awt/image/VolatileSurfaceManager.js,bin/sun/awt/image/WritableRasterNative.js,bin/sun/awt/image/XbmImageDecoder.js,bin/sun/awt/shell/DefaultShellFolder.js,bin/sun/awt/shell/ShellFolderManager.js,bin/sun/dc/DuctusRenderingEngine.js,bin/sun/font/CMap.js,bin/sun/font/CharToGlyphMapper.js,bin/sun/font/CompositeFontDescriptor.js,bin/sun/font/CompositeGlyphMapper.js,bin/sun/font/CompositeStrike.js,bin/sun/font/DelegatingShape.js,bin/sun/font/ExtendedTextSourceLabel.js,bin/sun/font/FileFont.js,bin/sun/font/FileFontStrike.js,bin/sun/font/FontFamily.js,bin/sun/font/FontManagerNativeLibrary.js,bin/sun/font/FontRunIterator.js,bin/sun/font/FontScaler.js,bin/sun/font/FontScalerException.js,bin/sun/font/FontStrike.js,bin/sun/font/FontStrikeDesc.js,bin/sun/font/FontStrikeDisposer.js,bin/sun/font/FreetypeFontScaler.js,bin/sun/font/GlyphList.js,bin/sun/font/NullFontScaler.js,bin/sun/font/PhysicalFont.js,bin/sun/font/PhysicalStrike.js,bin/sun/font/Script.js,bin/sun/font/ScriptRun.js,bin/sun/font/ScriptRunData.js,bin/sun/font/StandardTextSource.js,bin/sun/font/StrikeCache.js,bin/sun/font/StrikeMetrics.js,bin/sun/font/SunLayoutEngine.js,bin/sun/font/TextRecord.js,bin/sun/font/TextSource.js,bin/sun/font/TextSourceLabel.js,bin/sun/font/TrueTypeFont.js,bin/sun/font/TrueTypeGlyphMapper.js,bin/sun/font/Type1Font.js,bin/sun/font/Type1GlyphMapper.js,bin/sun/font/Underline.js,bin/sun/instrument/InstrumentationImpl.js,bin/sun/instrument/TransformerManager.js,bin/sun/io/ByteToCharASCII.js,bin/sun/io/ByteToCharBig5.js,bin/sun/io/ByteToCharBig5_HKSCS.js,bin/sun/io/ByteToCharBig5_Solaris.js,bin/sun/io/ByteToCharConverter.js,bin/sun/io/ByteToCharCp037.js,bin/sun/io/ByteToCharCp1006.js,bin/sun/io/ByteToCharCp1025.js,bin/sun/io/ByteToCharCp1026.js,bin/sun/io/ByteToCharCp1046.js,bin/sun/io/ByteToCharCp1047.js,bin/sun/io/ByteToCharCp1097.js,bin/sun/io/ByteToCharCp1098.js,bin/sun/io/ByteToCharCp1112.js,bin/sun/io/ByteToCharCp1122.js,bin/sun/io/ByteToCharCp1123.js,bin/sun/io/ByteToCharCp1124.js,bin/sun/io/ByteToCharCp1140.js,bin/sun/io/ByteToCharCp1141.js,bin/sun/io/ByteToCharCp1142.js,bin/sun/io/ByteToCharCp1143.js,bin/sun/io/ByteToCharCp1144.js,bin/sun/io/ByteToCharCp1145.js,bin/sun/io/ByteToCharCp1146.js,bin/sun/io/ByteToCharCp1147.js,bin/sun/io/ByteToCharCp1148.js,bin/sun/io/ByteToCharCp1149.js,bin/sun/io/ByteToCharCp1250.js,bin/sun/io/ByteToCharCp1251.js,bin/sun/io/ByteToCharCp1252.js,bin/sun/io/ByteToCharCp1253.js,bin/sun/io/ByteToCharCp1254.js,bin/sun/io/ByteToCharCp1255.js,bin/sun/io/ByteToCharCp1256.js,bin/sun/io/ByteToCharCp1257.js,bin/sun/io/ByteToCharCp1258.js,bin/sun/io/ByteToCharCp1381.js,bin/sun/io/ByteToCharCp1383.js,bin/sun/io/ByteToCharCp273.js,bin/sun/io/ByteToCharCp277.js,bin/sun/io/ByteToCharCp278.js,bin/sun/io/ByteToCharCp280.js,bin/sun/io/ByteToCharCp284.js,bin/sun/io/ByteToCharCp285.js,bin/sun/io/ByteToCharCp297.js,bin/sun/io/ByteToCharCp33722.js,bin/sun/io/ByteToCharCp420.js,bin/sun/io/ByteToCharCp424.js,bin/sun/io/ByteToCharCp437.js,bin/sun/io/ByteToCharCp500.js,bin/sun/io/ByteToCharCp737.js,bin/sun/io/ByteToCharCp775.js,bin/sun/io/ByteToCharCp834.js,bin/sun/io/ByteToCharCp838.js,bin/sun/io/ByteToCharCp850.js,bin/sun/io/ByteToCharCp852.js,bin/sun/io/ByteToCharCp855.js,bin/sun/io/ByteToCharCp856.js,bin/sun/io/ByteToCharCp857.js,bin/sun/io/ByteToCharCp858.js,bin/sun/io/ByteToCharCp860.js,bin/sun/io/ByteToCharCp861.js,bin/sun/io/ByteToCharCp862.js,bin/sun/io/ByteToCharCp863.js,bin/sun/io/ByteToCharCp864.js,bin/sun/io/ByteToCharCp865.js,bin/sun/io/ByteToCharCp866.js,bin/sun/io/ByteToCharCp868.js,bin/sun/io/ByteToCharCp869.js,bin/sun/io/ByteToCharCp870.js,bin/sun/io/ByteToCharCp871.js,bin/sun/io/ByteToCharCp874.js,bin/sun/io/ByteToCharCp875.js,bin/sun/io/ByteToCharCp918.js,bin/sun/io/ByteToCharCp921.js,bin/sun/io/ByteToCharCp922.js,bin/sun/io/ByteToCharCp930.js,bin/sun/io/ByteToCharCp933.js,bin/sun/io/ByteToCharCp935.js,bin/sun/io/ByteToCharCp937.js,bin/sun/io/ByteToCharCp939.js,bin/sun/io/ByteToCharCp942.js,bin/sun/io/ByteToCharCp942C.js,bin/sun/io/ByteToCharCp943.js,bin/sun/io/ByteToCharCp943C.js,bin/sun/io/ByteToCharCp948.js,bin/sun/io/ByteToCharCp949.js,bin/sun/io/ByteToCharCp949C.js,bin/sun/io/ByteToCharCp950.js,bin/sun/io/ByteToCharCp964.js,bin/sun/io/ByteToCharCp970.js,bin/sun/io/ByteToCharDBCS_ASCII.js,bin/sun/io/ByteToCharDBCS_EBCDIC.js,bin/sun/io/ByteToCharDoubleByte.js,bin/sun/io/ByteToCharEUC.js,bin/sun/io/ByteToCharEUC_CN.js,bin/sun/io/ByteToCharEUC_JP.js,bin/sun/io/ByteToCharEUC_JP_LINUX.js,bin/sun/io/ByteToCharEUC_JP_Solaris.js,bin/sun/io/ByteToCharEUC_KR.js,bin/sun/io/ByteToCharEUC_TW.js,bin/sun/io/ByteToCharGB18030.js,bin/sun/io/ByteToCharGB18030DB.js,bin/sun/io/ByteToCharGBK.js,bin/sun/io/ByteToCharHKSCS.js,bin/sun/io/ByteToCharHKSCS_2001.js,bin/sun/io/ByteToCharISCII91.js,bin/sun/io/ByteToCharISO2022.js,bin/sun/io/ByteToCharISO2022CN.js,bin/sun/io/ByteToCharISO2022JP.js,bin/sun/io/ByteToCharISO2022KR.js,bin/sun/io/ByteToCharISO8859_1.js,bin/sun/io/ByteToCharISO8859_13.js,bin/sun/io/ByteToCharISO8859_15.js,bin/sun/io/ByteToCharISO8859_2.js,bin/sun/io/ByteToCharISO8859_3.js,bin/sun/io/ByteToCharISO8859_4.js,bin/sun/io/ByteToCharISO8859_5.js,bin/sun/io/ByteToCharISO8859_6.js,bin/sun/io/ByteToCharISO8859_7.js,bin/sun/io/ByteToCharISO8859_8.js,bin/sun/io/ByteToCharISO8859_9.js,bin/sun/io/ByteToCharJIS0201.js,bin/sun/io/ByteToCharJIS0208.js,bin/sun/io/ByteToCharJIS0208_Solaris.js,bin/sun/io/ByteToCharJIS0212.js,bin/sun/io/ByteToCharJIS0212_Solaris.js,bin/sun/io/ByteToCharJISAutoDetect.js,bin/sun/io/ByteToCharJohab.js,bin/sun/io/ByteToCharKOI8_R.js,bin/sun/io/ByteToCharMS874.js,bin/sun/io/ByteToCharMS932.js,bin/sun/io/ByteToCharMS932DB.js,bin/sun/io/ByteToCharMS936.js,bin/sun/io/ByteToCharMS949.js,bin/sun/io/ByteToCharMS950.js,bin/sun/io/ByteToCharMS950_HKSCS.js,bin/sun/io/ByteToCharMacArabic.js,bin/sun/io/ByteToCharMacCentralEurope.js,bin/sun/io/ByteToCharMacCroatian.js,bin/sun/io/ByteToCharMacCyrillic.js,bin/sun/io/ByteToCharMacDingbat.js,bin/sun/io/ByteToCharMacGreek.js,bin/sun/io/ByteToCharMacHebrew.js,bin/sun/io/ByteToCharMacIceland.js,bin/sun/io/ByteToCharMacRoman.js,bin/sun/io/ByteToCharMacRomania.js,bin/sun/io/ByteToCharMacSymbol.js,bin/sun/io/ByteToCharMacThai.js,bin/sun/io/ByteToCharMacTurkish.js,bin/sun/io/ByteToCharMacUkraine.js,bin/sun/io/ByteToCharPCK.js,bin/sun/io/ByteToCharSJIS.js,bin/sun/io/ByteToCharSingleByte.js,bin/sun/io/ByteToCharTIS620.js,bin/sun/io/ByteToCharUTF16.js,bin/sun/io/ByteToCharUTF8.js,bin/sun/io/ByteToCharUnicode.js,bin/sun/io/ByteToCharUnicodeBig.js,bin/sun/io/ByteToCharUnicodeBigUnmarked.js,bin/sun/io/ByteToCharUnicodeLittle.js,bin/sun/io/ByteToCharUnicodeLittleUnmarked.js,bin/sun/io/CharToByteASCII.js,bin/sun/io/CharToByteBig5.js,bin/sun/io/CharToByteBig5_HKSCS.js,bin/sun/io/CharToByteBig5_Solaris.js,bin/sun/io/CharToByteConverter.js,bin/sun/io/CharToByteCp037.js,bin/sun/io/CharToByteCp1006.js,bin/sun/io/CharToByteCp1025.js,bin/sun/io/CharToByteCp1026.js,bin/sun/io/CharToByteCp1046.js,bin/sun/io/CharToByteCp1047.js,bin/sun/io/CharToByteCp1097.js,bin/sun/io/CharToByteCp1098.js,bin/sun/io/CharToByteCp1112.js,bin/sun/io/CharToByteCp1122.js,bin/sun/io/CharToByteCp1123.js,bin/sun/io/CharToByteCp1124.js,bin/sun/io/CharToByteCp1140.js,bin/sun/io/CharToByteCp1141.js,bin/sun/io/CharToByteCp1142.js,bin/sun/io/CharToByteCp1143.js,bin/sun/io/CharToByteCp1144.js,bin/sun/io/CharToByteCp1145.js,bin/sun/io/CharToByteCp1146.js,bin/sun/io/CharToByteCp1147.js,bin/sun/io/CharToByteCp1148.js,bin/sun/io/CharToByteCp1149.js,bin/sun/io/CharToByteCp1250.js,bin/sun/io/CharToByteCp1251.js,bin/sun/io/CharToByteCp1252.js,bin/sun/io/CharToByteCp1253.js,bin/sun/io/CharToByteCp1254.js,bin/sun/io/CharToByteCp1255.js,bin/sun/io/CharToByteCp1256.js,bin/sun/io/CharToByteCp1257.js,bin/sun/io/CharToByteCp1258.js,bin/sun/io/CharToByteCp1381.js,bin/sun/io/CharToByteCp1383.js,bin/sun/io/CharToByteCp273.js,bin/sun/io/CharToByteCp277.js,bin/sun/io/CharToByteCp278.js,bin/sun/io/CharToByteCp280.js,bin/sun/io/CharToByteCp284.js,bin/sun/io/CharToByteCp285.js,bin/sun/io/CharToByteCp297.js,bin/sun/io/CharToByteCp33722.js,bin/sun/io/CharToByteCp420.js,bin/sun/io/CharToByteCp424.js,bin/sun/io/CharToByteCp437.js,bin/sun/io/CharToByteCp500.js,bin/sun/io/CharToByteCp737.js,bin/sun/io/CharToByteCp775.js,bin/sun/io/CharToByteCp834.js,bin/sun/io/CharToByteCp838.js,bin/sun/io/CharToByteCp850.js,bin/sun/io/CharToByteCp852.js,bin/sun/io/CharToByteCp855.js,bin/sun/io/CharToByteCp856.js,bin/sun/io/CharToByteCp857.js,bin/sun/io/CharToByteCp858.js,bin/sun/io/CharToByteCp860.js,bin/sun/io/CharToByteCp861.js,bin/sun/io/CharToByteCp862.js,bin/sun/io/CharToByteCp863.js,bin/sun/io/CharToByteCp864.js,bin/sun/io/CharToByteCp865.js,bin/sun/io/CharToByteCp866.js,bin/sun/io/CharToByteCp868.js,bin/sun/io/CharToByteCp869.js,bin/sun/io/CharToByteCp870.js,bin/sun/io/CharToByteCp871.js,bin/sun/io/CharToByteCp874.js,bin/sun/io/CharToByteCp875.js,bin/sun/io/CharToByteCp918.js,bin/sun/io/CharToByteCp921.js,bin/sun/io/CharToByteCp922.js,bin/sun/io/CharToByteCp930.js,bin/sun/io/CharToByteCp933.js,bin/sun/io/CharToByteCp935.js,bin/sun/io/CharToByteCp937.js,bin/sun/io/CharToByteCp939.js,bin/sun/io/CharToByteCp942.js,bin/sun/io/CharToByteCp942C.js,bin/sun/io/CharToByteCp943.js,bin/sun/io/CharToByteCp943C.js,bin/sun/io/CharToByteCp948.js,bin/sun/io/CharToByteCp949.js,bin/sun/io/CharToByteCp949C.js,bin/sun/io/CharToByteCp950.js,bin/sun/io/CharToByteCp964.js,bin/sun/io/CharToByteCp970.js,bin/sun/io/CharToByteDBCS_ASCII.js,bin/sun/io/CharToByteDBCS_EBCDIC.js,bin/sun/io/CharToByteDoubleByte.js,bin/sun/io/CharToByteEUC.js,bin/sun/io/CharToByteEUC_CN.js,bin/sun/io/CharToByteEUC_JP.js,bin/sun/io/CharToByteEUC_JP_LINUX.js,bin/sun/io/CharToByteEUC_JP_Solaris.js,bin/sun/io/CharToByteEUC_KR.js,bin/sun/io/CharToByteEUC_TW.js,bin/sun/io/CharToByteGB18030.js,bin/sun/io/CharToByteGBK.js,bin/sun/io/CharToByteHKSCS.js,bin/sun/io/CharToByteHKSCS_2001.js,bin/sun/io/CharToByteISCII91.js,bin/sun/io/CharToByteISO2022.js,bin/sun/io/CharToByteISO2022CN_CNS.js,bin/sun/io/CharToByteISO2022CN_GB.js,bin/sun/io/CharToByteISO2022JP.js,bin/sun/io/CharToByteISO2022KR.js,bin/sun/io/CharToByteISO8859_1.js,bin/sun/io/CharToByteISO8859_13.js,bin/sun/io/CharToByteISO8859_15.js,bin/sun/io/CharToByteISO8859_2.js,bin/sun/io/CharToByteISO8859_3.js,bin/sun/io/CharToByteISO8859_4.js,bin/sun/io/CharToByteISO8859_5.js,bin/sun/io/CharToByteISO8859_6.js,bin/sun/io/CharToByteISO8859_7.js,bin/sun/io/CharToByteISO8859_8.js,bin/Native.js,bin/Security.js,bin/Toolkit.js,bin/PriviledgedAction.js,bin/PrivilegedAction.js,bin/JSToolkit.js,bin/ToolkitNative.js,bin/test/JSToolkit.js,bin/test/PrivilegedAction.js,bin/test/Security.js,bin/test/Toolkit.js,bin/test/AccessController.js,bin/CellListener.js,bin/LifeCells.js,bin/MainWindow.js,bin/Neighbor.js,bin/SimulationListener.js,bin/TanSugd3.js,bin/TanSugd3S.js,bin/test/Point2D.js,bin/jalview/ws/uimodel/PDBRestResponse.js,bin/jalview/ws/uimodel/PDBRestRequest.js,bin/jalview/ws/uimodel/AlignAnalysisUIText.js,bin/jalview/ws/seqfetcher/DbSourceProxyImpl.js,bin/jalview/ws/seqfetcher/DbSourceProxy.js,bin/jalview/ws/seqfetcher/ASequenceFetcher.js,bin/jalview/ws/rest/params/Tree.js,bin/jalview/ws/rest/params/SeqVector.js,bin/jalview/ws/rest/params/SeqIdVector.js,bin/jalview/ws/rest/params/SeqGroupIndexVector.js,bin/jalview/ws/rest/params/JobConstant.js,bin/jalview/ws/rest/params/AnnotationFile.js,bin/jalview/ws/rest/params/Alignment.js,bin/jalview/ws/rest/RestServiceDescription.js,bin/jalview/ws/rest/RestJobThread.js,bin/jalview/ws/rest/RestJob.js,bin/jalview/ws/rest/RestClient.js,bin/jalview/ws/rest/NoValidInputDataException.js,bin/jalview/ws/rest/InputType.js,bin/jalview/ws/rest/HttpResultSet.js,bin/jalview/ws/rest/AlignmentProcessor.js,bin/jalview/ws/params/simple/StringChoiceParameter.js,bin/jalview/ws/params/simple/Parameter.js,bin/jalview/ws/params/simple/Option.js,bin/jalview/ws/params/simple/IntegerParameter.js,bin/jalview/ws/params/simple/BooleanOption.js,bin/jalview/ws/params/WsParamSetI.js,bin/jalview/ws/params/ValueConstrainI.js,bin/jalview/ws/params/ParameterI.js,bin/jalview/ws/params/ParamManager.js,bin/jalview/ws/params/ParamDatastoreI.js,bin/jalview/ws/params/OptionI.js,bin/jalview/ws/params/InvalidArgumentException.js,bin/jalview/ws/params/AutoCalcSetting.js,bin/jalview/ws/params/ArgumentI.js,bin/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.js,bin/jalview/ws/jws2/jabaws2/Jws2Instance.js,bin/jalview/ws/jws2/dm/JabaWsParamSet.js,bin/jalview/ws/jws2/dm/JabaValueConstrain.js,bin/jalview/ws/jws2/dm/JabaParameter.js,bin/jalview/ws/jws2/dm/JabaOption.js,bin/jalview/ws/jws2/dm/AAConSettings.js,bin/jalview/ws/jws2/SequenceAnnotationWSClient.js,bin/jalview/ws/jws2/RNAalifoldClient.js,bin/jalview/ws/jws2/ParameterUtils.js,bin/jalview/ws/jws2/MsaWSThread.js,bin/jalview/ws/jws2/MsaWSClient.js,bin/jalview/ws/jws2/Jws2Discoverer.js,bin/jalview/ws/jws2/Jws2Client.js,bin/jalview/ws/jws2/JabawsMsaInterfaceAlignCalcWorker.js,bin/jalview/ws/jws2/JabawsCalcWorker.js,bin/jalview/ws/jws2/JabaWsServerQuery.js,bin/jalview/ws/jws2/JabaPreset.js,bin/jalview/ws/jws2/JabaParamStore.js,bin/jalview/ws/jws2/JWs2Job.js,bin/jalview/ws/jws2/JPred301Client.js,bin/jalview/ws/jws2/AbstractJabaCalcWorker.js,bin/jalview/ws/jws2/AWS2Thread.js,bin/jalview/ws/jws2/AADisorderClient.js,bin/jalview/ws/jws2/AAConClient.js,bin/jalview/ws/jws1/WSJob.js,bin/jalview/ws/jws1/WS1Client.js,bin/jalview/ws/jws1/SeqSearchWSThread.js,bin/jalview/ws/jws1/SeqSearchWSClient.js,bin/jalview/ws/jws1/MsaWSThread.js,bin/jalview/ws/jws1/MsaWSClient.js,bin/jalview/ws/jws1/JWS1Thread.js,bin/jalview/ws/jws1/JPredThread.js,bin/jalview/ws/jws1/JPredClient.js,bin/jalview/ws/jws1/Discoverer.js,bin/jalview/ws/jws1/Annotate3D.js,bin/jalview/ws/io/mime/MimeTypes.js,bin/jalview/ws/io/mime/JalviewMimeContentHandler.js,bin/jalview/ws/io/mime/HttpContentHandler.js,bin/jalview/ws/ebi/EBIFetchClient.js,bin/jalview/ws/dbsources/das/datamodel/JalviewSource.js,bin/jalview/ws/dbsources/das/datamodel/DasSourceRegistry.js,bin/jalview/ws/dbsources/das/datamodel/DasSequenceSource.js,bin/jalview/ws/dbsources/das/api/jalviewSourceI.js,bin/jalview/ws/dbsources/das/api/DasSourceRegistryI.js,bin/jalview/ws/dbsources/Xfam.js,bin/jalview/ws/dbsources/UnprotName.js,bin/jalview/ws/dbsources/Uniprot.js,bin/jalview/ws/dbsources/RfamSeed.js,bin/jalview/ws/dbsources/RfamFull.js,bin/jalview/ws/dbsources/Rfam.js,bin/jalview/ws/dbsources/PfamSeed.js,bin/jalview/ws/dbsources/PfamFull.js,bin/jalview/ws/dbsources/Pfam.js,bin/jalview/ws/dbsources/Pdb.js,bin/jalview/ws/dbsources/PDBRestClient.js,bin/jalview/ws/dbsources/GeneDbSource.js,bin/jalview/ws/dbsources/EmblXmlSource.js,bin/jalview/ws/dbsources/EmblSource.js,bin/jalview/ws/dbsources/EmblCdsSouce.js,bin/jalview/ws/dbsources/EbiFileRetrievedProxy.js,bin/jalview/ws/WSMenuEntryProviderI.js,bin/jalview/ws/WSClientI.js,bin/jalview/ws/WSClient.js,bin/jalview/ws/SequenceFetcher.js,bin/jalview/ws/JobStateSummary.js,bin/jalview/ws/HttpClientUtils.js,bin/jalview/ws/DasSequenceFeatureFetcher.js,bin/jalview/ws/DBRefFetcher.js,bin/jalview/ws/AWsJob.js,bin/jalview/ws/AWSThread.js,bin/jalview/workers/StrucConsensusThread.js,bin/jalview/workers/ConservationThread.js,bin/jalview/workers/ConsensusThread.js,bin/jalview/workers/ComplementConsensusThread.js,bin/jalview/workers/AlignCalcWorker.js,bin/jalview/workers/AlignCalcManager.js,bin/jalview/viewmodel/styles/ViewStyle.js,bin/jalview/viewmodel/seqfeatures/FeaturesDisplayed.js,bin/jalview/viewmodel/seqfeatures/FeatureSettingsModel.js,bin/jalview/viewmodel/seqfeatures/FeatureRendererSettings.js,bin/jalview/viewmodel/seqfeatures/FeatureRendererModel.js,bin/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.js,bin/jalview/viewmodel/PCAModel.js,bin/jalview/viewmodel/AlignmentViewport.js,bin/jalview/util/jarInputStreamProvider.js,bin/jalview/util/UrlLink.js,bin/jalview/util/TableSorter.js,bin/jalview/util/StringUtils.js,bin/jalview/util/ShiftList.js,bin/jalview/util/ReverseListIterator.js,bin/jalview/util/QuickSort.js,bin/jalview/util/Platform.js,bin/jalview/util/ParseHtmlBodyAndLinks.js,bin/jalview/util/MessageManager.js,bin/jalview/util/MappingUtils.js,bin/jalview/util/MapList.js,bin/jalview/util/ImageMaker.js,bin/jalview/util/GroupUrlLink.js,bin/jalview/util/Format.js,bin/jalview/util/DBRefUtils.js,bin/jalview/util/Comparison.js,bin/jalview/util/ColorUtils.js,bin/jalview/util/BrowserLauncher.js,bin/jalview/util/AWTConsole.js,bin/jalview/structures/models/SequenceStructureBindingModel.js,bin/jalview/structures/models/AAStructureBindingModel.js,bin/jalview/structure/VamsasSource.js,bin/jalview/structure/VamsasListener.js,bin/jalview/structure/StructureSelectionManager.js,bin/jalview/structure/StructureMappingcommandSet.js,bin/jalview/structure/StructureMapping.js,bin/jalview/structure/StructureListener.js,bin/jalview/structure/SequenceListener.js,bin/jalview/structure/SelectionSource.js,bin/jalview/structure/SelectionListener.js,bin/jalview/structure/SecondaryStructureListener.js,bin/jalview/structure/CommandListener.js,bin/jalview/structure/AtomSpec.js,bin/jalview/structure/AlignmentViewPanelListener.js,bin/jalview/schemes/ZappoColourScheme.js,bin/jalview/schemes/UserColourScheme.js,bin/jalview/schemes/TurnColourScheme.js,bin/jalview/schemes/TaylorColourScheme.js,bin/jalview/schemes/TCoffeeColourScheme.js,bin/jalview/schemes/StrandColourScheme.js,bin/jalview/schemes/ScoreMatrix.js,bin/jalview/schemes/ScoreColourScheme.js,bin/jalview/schemes/ResidueProperties.js,bin/jalview/schemes/ResidueColourScheme.js,bin/jalview/schemes/RNAInteractionColourScheme.js,bin/jalview/schemes/RNAHelicesColourChooser.js,bin/jalview/schemes/RNAHelicesColour.js,bin/jalview/schemes/PurinePyrimidineColourScheme.js,bin/jalview/schemes/PIDColourScheme.js,bin/jalview/schemes/NucleotideColourScheme.js,bin/jalview/schemes/HydrophobicColourScheme.js,bin/jalview/schemes/HelixColourScheme.js,bin/jalview/schemes/GraduatedColor.js,bin/jalview/schemes/FollowerColourScheme.js,bin/jalview/schemes/CovariationColourScheme.js,bin/jalview/schemes/Consensus.js,bin/jalview/schemes/ColourSchemeProperty.js,bin/jalview/schemes/ColourSchemeI.js,bin/jalview/schemes/ClustalxColourScheme.js,bin/jalview/schemes/BuriedColourScheme.js,bin/jalview/schemes/Blosum62ColourScheme.js,bin/jalview/schemes/AnnotationColourGradient.js,bin/jalview/schemabinding/version2/descriptors/WebServiceParameterSetDescriptor.js,bin/jalview/schemabinding/version2/descriptors/ViewportDescriptor.js,bin/jalview/schemabinding/version2/descriptors/VamsasModelDescriptor.js,bin/jalview/schemabinding/version2/descriptors/VAMSASDescriptor.js,bin/jalview/schemabinding/version2/descriptors/UserColoursDescriptor.js,bin/jalview/schemabinding/version2/descriptors/UserColourSchemeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/TreeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/ThresholdLineDescriptor.js,bin/jalview/schemabinding/version2/descriptors/StructureStateDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SettingDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceTypeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceSetPropertiesDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceSetDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SequenceDescriptor.js,bin/jalview/schemabinding/version2/descriptors/SecondaryStructureDescriptor.js,bin/jalview/schemabinding/version2/descriptors/RnaViewerDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PropertyDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PdbidsDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PdbentryItemDescriptor.js,bin/jalview/schemabinding/version2/descriptors/PdbentryDescriptor.js,bin/jalview/schemabinding/version2/descriptors/OtherDataDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MappingDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MappingChoiceDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MapListTypeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MapListToDescriptor.js,bin/jalview/schemabinding/version2/descriptors/MapListFromDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JalviewUserColoursDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JalviewModelDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JSeqDescriptor.js,bin/jalview/schemabinding/version2/descriptors/JGroupDescriptor.js,bin/jalview/schemabinding/version2/descriptors/HiddenColumnsDescriptor.js,bin/jalview/schemabinding/version2/descriptors/GroupDescriptor.js,bin/jalview/schemabinding/version2/descriptors/FeaturesDescriptor.js,bin/jalview/schemabinding/version2/descriptors/FeatureSettingsDescriptor.js,bin/jalview/schemabinding/version2/descriptors/FeatureDescriptor.js,bin/jalview/schemabinding/version2/descriptors/DBRefDescriptor.js,bin/jalview/schemabinding/version2/descriptors/ColourDescriptor.js,bin/jalview/schemabinding/version2/descriptors/CalcIdParamDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationElementDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AnnotationColourSchemeDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AlcodonFrameDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AlcodonDescriptor.js,bin/jalview/schemabinding/version2/descriptors/AlcodMapDescriptor.js,bin/jalview/schemabinding/version2/WebServiceParameterSet.js,bin/jalview/schemabinding/version2/Viewport.js,bin/jalview/schemabinding/version2/VamsasModel.js,bin/jalview/schemabinding/version2/VAMSAS.js,bin/jalview/schemabinding/version2/UserColours.js,bin/jalview/schemabinding/version2/UserColourScheme.js,bin/jalview/schemabinding/version2/Tree.js,bin/jalview/schemabinding/version2/ThresholdLine.js,bin/jalview/schemabinding/version2/StructureState.js,bin/jalview/schemabinding/version2/Setting.js,bin/jalview/schemabinding/version2/SequenceType.js,bin/jalview/schemabinding/version2/SequenceSetProperties.js,bin/jalview/schemabinding/version2/SequenceSet.js,bin/jalview/schemabinding/version2/Sequence.js,bin/jalview/schemabinding/version2/SecondaryStructure.js,bin/jalview/schemabinding/version2/RnaViewer.js,bin/jalview/schemabinding/version2/Property.js,bin/jalview/schemabinding/version2/Pdbids.js,bin/jalview/schemabinding/version2/PdbentryItem.js,bin/jalview/schemabinding/version2/Pdbentry.js,bin/jalview/schemabinding/version2/OtherData.js,bin/jalview/schemabinding/version2/MappingChoice.js,bin/jalview/schemabinding/version2/Mapping.js,bin/jalview/schemabinding/version2/MapListType.js,bin/jalview/schemabinding/version2/MapListTo.js,bin/jalview/schemabinding/version2/MapListFrom.js,bin/jalview/schemabinding/version2/JalviewUserColours.js,bin/jalview/schemabinding/version2/JalviewModelSequence.js,bin/jalview/schemabinding/version2/JalviewModel.js,bin/jalview/schemabinding/version2/JSeq.js,bin/jalview/schemabinding/version2/JGroup.js,bin/jalview/schemabinding/version2/HiddenColumns.js,bin/jalview/schemabinding/version2/Group.js,bin/jalview/schemabinding/version2/Features.js,bin/jalview/schemabinding/version2/FeatureSettings.js,bin/jalview/schemabinding/version2/Feature.js,bin/jalview/schemabinding/version2/DBRef.js,bin/jalview/schemabinding/version2/Colour.js,bin/jalview/schemabinding/version2/CalcIdParam.js,bin/jalview/schemabinding/version2/AnnotationElement.js,bin/jalview/schemabinding/version2/AnnotationColours.js,bin/jalview/schemabinding/version2/AnnotationColourScheme.js,bin/jalview/schemabinding/version2/Annotation.js,bin/jalview/schemabinding/version2/AlcodonFrame.js,bin/jalview/schemabinding/version2/Alcodon.js,bin/jalview/schemabinding/version2/AlcodMap.js,bin/jalview/rest/RestHandler.js,bin/jalview/renderer/seqfeatures/FeatureRenderer.js,bin/jalview/renderer/AwtRenderPanelI.js,bin/jalview/renderer/AnnotationRenderer.js,bin/jalview/math/RotatableMatrix.js,bin/jalview/math/Matrix.js,bin/jalview/math/AlignmentDimension.js,bin/jalview/json/binding/v1/SequencePojo.js,bin/jalview/json/binding/v1/SequenceGrpPojo.js,bin/jalview/json/binding/v1/SequenceFeaturesPojo.js,bin/jalview/json/binding/v1/BioJSRepositoryPojo.js,bin/jalview/json/binding/v1/BioJSReleasePojo.js,bin/jalview/json/binding/v1/AppSettingsPojo.js,bin/jalview/json/binding/v1/AnnotationPojo.js,bin/jalview/json/binding/v1/AlignmentPojo.js,bin/jalview/json/binding/v1/AlignmentAnnotationPojo.js,bin/jalview/jbgui/PDBDocFieldPreferences.js,bin/jalview/jbgui/GWsPreferences.js,bin/jalview/jbgui/GWebserviceInfo.js,bin/jalview/jbgui/GUserDefinedColours.js,bin/jalview/jbgui/GTreePanel.js,bin/jalview/jbgui/GStructureViewer.js,bin/jalview/jbgui/GStructureChooser.js,bin/jalview/jbgui/GSplitFrame.js,bin/jalview/jbgui/GSliderPanel.js,bin/jalview/jbgui/GSequenceLink.js,bin/jalview/jbgui/GRnaStructureViewer.js,bin/jalview/jbgui/GRestServiceEditorPane.js,bin/jalview/jbgui/GRestInputParamEditDialog.js,bin/jalview/jbgui/GPreferences.js,bin/jalview/jbgui/GPairwiseAlignPanel.js,bin/jalview/jbgui/GPDBSearchPanel.js,bin/jalview/jbgui/GPCAPanel.js,bin/jalview/jbgui/GFontChooser.js,bin/jalview/jbgui/GFinder.js,bin/jalview/jbgui/GDesktop.js,bin/jalview/jbgui/GDasSourceBrowser.js,bin/jalview/jbgui/GCutAndPasteTransfer.js,bin/jalview/jbgui/GCutAndPasteHtmlTransfer.js,bin/jalview/jbgui/GAlignmentPanel.js,bin/jalview/jbgui/GAlignFrame.js,bin/jalview/jbgui/GAlignExportSettings.js,bin/jalview/javascript/MouseOverStructureListener.js,bin/jalview/javascript/MouseOverListener.js,bin/jalview/javascript/JsSelectionSender.js,bin/jalview/javascript/JsCallBack.js,bin/jalview/javascript/JalviewLiteJsApi.js,bin/jalview/javascript/JSFunctionExec.js,bin/jalview/io/vamsas/Tree.js,bin/jalview/io/vamsas/Sequencemapping.js,bin/jalview/io/vamsas/Sequencefeature.js,bin/jalview/io/vamsas/Rangetype.js,bin/jalview/io/vamsas/LocalDocSyncObject.js,bin/jalview/io/vamsas/Dbref.js,bin/jalview/io/vamsas/DatastoreRegistry.js,bin/jalview/io/vamsas/DatastoreItem.js,bin/jalview/io/vamsas/Datasetsequence.js,bin/jalview/io/packed/SimpleDataProvider.js,bin/jalview/io/packed/ParsePackedSet.js,bin/jalview/io/packed/JalviewDataset.js,bin/jalview/io/packed/DataProvider.js,bin/jalview/io/WSWUBlastClient.js,bin/jalview/io/VamsasAppDatastore.js,bin/jalview/io/TCoffeeScoreFile.js,bin/jalview/io/StockholmFile.js,bin/jalview/io/SimpleBlastFile.js,bin/jalview/io/SequenceAnnotationReport.js,bin/jalview/io/RnamlFile.js,bin/jalview/io/PileUpfile.js,bin/jalview/io/PhylipFile.js,bin/jalview/io/PfamFile.js,bin/jalview/io/PIRFile.js,bin/jalview/io/NewickFile.js,bin/jalview/io/ModellerDescription.js,bin/jalview/io/MatrixFile.js,bin/jalview/io/MSFfile.js,bin/jalview/io/JnetAnnotationMaker.js,bin/jalview/io/JalviewFileView.js,bin/jalview/io/JalviewFileFilter.js,bin/jalview/io/JalviewFileChooser.js,bin/jalview/io/JSONFile.js,bin/jalview/io/JPredFile.js,bin/jalview/io/InputStreamParser.js,bin/jalview/io/IdentifyFile.js,bin/jalview/io/HtmlSvgOutput.js,bin/jalview/io/HtmlFile.js,bin/jalview/io/HTMLOutput.js,bin/jalview/io/Gff3File.js,bin/jalview/io/FormatAdapter.js,bin/jalview/io/FileParse.js,bin/jalview/io/FileLoader.js,bin/jalview/io/FeaturesFile.js,bin/jalview/io/FastaFile.js,bin/jalview/io/DBRefFile.js,bin/jalview/io/ClustalFile.js,bin/jalview/io/ClansFile.js,bin/jalview/io/BioJsHTMLOutput.js,bin/jalview/io/BLCFile.js,bin/jalview/io/AppletFormatAdapter.js,bin/jalview/io/AnnotationFile.js,bin/jalview/io/AlignmentProperties.js,bin/jalview/io/AlignFile.js,bin/jalview/io/AMSAFile.js,bin/jalview/httpserver/HttpServer.js,bin/jalview/httpserver/AbstractRequestHandler.js,bin/jalview/gui/WsPreferences.js,bin/jalview/gui/WsParamSetManager.js,bin/jalview/gui/WsJobParameters.js,bin/jalview/gui/WebserviceInfo.js,bin/jalview/gui/ViewSelectionMenu.js,bin/jalview/gui/VamsasApplication.js,bin/jalview/gui/UserQuestionnaireCheck.js,bin/jalview/gui/UserDefinedColours.js,bin/jalview/gui/TreePanel.js,bin/jalview/gui/TreeCanvas.js,bin/jalview/gui/TextColourChooser.js,bin/jalview/gui/StructureViewerBase.js,bin/jalview/gui/StructureViewer.js,bin/jalview/gui/StructureChooser.js,bin/jalview/gui/SplitFrame.js,bin/jalview/gui/SplashScreen.js,bin/jalview/gui/SliderPanel.js,bin/jalview/gui/SequenceRenderer.js,bin/jalview/gui/SequenceFetcher.js,bin/jalview/gui/SeqPanel.js,bin/jalview/gui/SeqCanvas.js,bin/jalview/gui/ScalePanel.js,bin/jalview/gui/SVGOptions.js,bin/jalview/gui/RotatableCanvas.js,bin/jalview/gui/RestServiceEditorPane.js,bin/jalview/gui/RestInputParamEditDialog.js,bin/jalview/gui/RedundancyPanel.js,bin/jalview/gui/PromptUserConfig.js,bin/jalview/gui/ProgressBar.js,bin/jalview/gui/Preferences.js,bin/jalview/gui/PopupMenu.js,bin/jalview/gui/PairwiseAlignPanel.js,bin/jalview/gui/PaintRefresher.js,bin/jalview/gui/PDBSearchPanel.js,bin/jalview/gui/PCAPanel.js,bin/jalview/gui/OverviewPanel.js,bin/jalview/gui/OptsParametersContainerI.js,bin/jalview/gui/OptsAndParamsPage.js,bin/jalview/gui/OOMWarning.js,bin/jalview/gui/MenuChooser.js,bin/jalview/gui/JvSwingUtils.js,bin/jalview/gui/JalviewDialog.js,bin/jalview/gui/JalviewChimeraBindingModel.js,bin/jalview/gui/JalviewChangeSupport.js,bin/jalview/gui/JalviewAppender.js,bin/jalview/gui/Jalview2XML_V1.js,bin/jalview/gui/Jalview2XML.js,bin/jalview/gui/JDatabaseTree.js,bin/jalview/gui/IdwidthAdjuster.js,bin/jalview/gui/IdPanel.js,bin/jalview/gui/IdCanvas.js,bin/jalview/gui/IProgressIndicatorHandler.js,bin/jalview/gui/IProgressIndicator.js,bin/jalview/gui/Help.js,bin/jalview/gui/HTMLOptions.js,bin/jalview/gui/FontChooser.js,bin/jalview/gui/Finder.js,bin/jalview/gui/FeatureSettings.js,bin/jalview/gui/FeatureRenderer.js,bin/jalview/gui/FeatureColourChooser.js,bin/jalview/gui/EditNameDialog.js,bin/jalview/gui/EPSOptions.js,bin/jalview/gui/Desktop.js,bin/jalview/gui/DasSourceBrowser.js,bin/jalview/gui/CutAndPasteTransfer.js,bin/jalview/gui/CutAndPasteHtmlTransfer.js,bin/jalview/gui/Console.js,bin/jalview/gui/ChimeraViewFrame.js,bin/jalview/gui/BlogReader.js,bin/jalview/gui/AssociatePdbFileWithSeq.js,bin/jalview/gui/AppVarnaBinding.js,bin/jalview/gui/AppVarna.js,bin/jalview/gui/AppJmolBinding.js,bin/jalview/gui/AppJmol.js,bin/jalview/gui/AnnotationRowFilter.js,bin/jalview/gui/AnnotationPanel.js,bin/jalview/gui/AnnotationLabels.js,bin/jalview/gui/AnnotationExporter.js,bin/jalview/gui/AnnotationColumnChooser.js,bin/jalview/gui/AnnotationColourChooser.js,bin/jalview/gui/AnnotationChooser.js,bin/jalview/gui/AlignmentPanel.js,bin/jalview/gui/AlignViewport.js,bin/jalview/gui/AlignFrame.js,bin/jalview/gui/AlignExportSettings.js,bin/jalview/ext/varna/VarnaCommands.js,bin/jalview/ext/varna/RnaModel.js,bin/jalview/ext/varna/JalviewVarnaBinding.js,bin/jalview/ext/rbvi/chimera/JalviewChimeraBinding.js,bin/jalview/ext/rbvi/chimera/ChimeraListener.js,bin/jalview/ext/rbvi/chimera/ChimeraCommands.js,bin/jalview/ext/paradise/Annotate3D.js,bin/jalview/ext/jmol/PDBFileWithJmol.js,bin/jalview/ext/jmol/JmolCommands.js,bin/jalview/ext/jmol/JalviewJmolBinding.js,bin/jalview/exceptions/NoFileSelectedException.js,bin/jalview/exceptions/JalviewException.js,bin/jalview/datamodel/xdb/embl/Qualifier.js,bin/jalview/datamodel/xdb/embl/EmblSequence.js,bin/jalview/datamodel/xdb/embl/EmblFile.js,bin/jalview/datamodel/xdb/embl/EmblFeatureLocations.js,bin/jalview/datamodel/xdb/embl/EmblFeatureLocElement.js,bin/jalview/datamodel/xdb/embl/EmblFeature.js,bin/jalview/datamodel/xdb/embl/EmblError.js,bin/jalview/datamodel/xdb/embl/EmblEntry.js,bin/jalview/datamodel/xdb/embl/BasePosition.js,bin/jalview/datamodel/UniprotSequence.js,bin/jalview/datamodel/UniprotProteinName.js,bin/jalview/datamodel/UniprotFile.js,bin/jalview/datamodel/UniprotEntry.js,bin/jalview/datamodel/StructureViewerModel.js,bin/jalview/datamodel/SequencePoint.js,bin/jalview/datamodel/SequenceNode.js,bin/jalview/datamodel/SequenceI.js,bin/jalview/datamodel/SequenceGroup.js,bin/jalview/datamodel/SequenceFeature.js,bin/jalview/datamodel/SequenceDummy.js,bin/jalview/datamodel/SequenceCollectionI.js,bin/jalview/datamodel/Sequence.js,bin/jalview/datamodel/SeqCigar.js,bin/jalview/datamodel/SecondaryStructureAnnotation.js,bin/jalview/datamodel/SearchResults.js,bin/jalview/datamodel/RnaViewerModel.js,bin/jalview/datamodel/ProvenanceEntry.js,bin/jalview/datamodel/Provenance.js,bin/jalview/datamodel/PDBEntry.js,bin/jalview/datamodel/NodeTransformI.js,bin/jalview/datamodel/Mapping.js,bin/jalview/datamodel/IncompleteCodonException.js,bin/jalview/datamodel/HiddenSequences.js,bin/jalview/datamodel/GraphLine.js,bin/jalview/datamodel/FeatureProperties.js,bin/jalview/datamodel/DBRefSource.js,bin/jalview/datamodel/DBRefEntry.js,bin/jalview/datamodel/ColumnSelection.js,bin/jalview/datamodel/CigarSimple.js,bin/jalview/datamodel/CigarCigar.js,bin/jalview/datamodel/CigarBase.js,bin/jalview/datamodel/CigarArray.js,bin/jalview/datamodel/BinarySequence.js,bin/jalview/datamodel/BinaryNode.js,bin/jalview/datamodel/Annotation.js,bin/jalview/datamodel/AnnotatedCollectionI.js,bin/jalview/datamodel/AlignmentView.js,bin/jalview/datamodel/AlignmentOrder.js,bin/jalview/datamodel/AlignmentI.js,bin/jalview/datamodel/AlignmentExportData.js,bin/jalview/datamodel/AlignmentAnnotation.js,bin/jalview/datamodel/Alignment.js,bin/jalview/datamodel/AlignedCodonFrame.js,bin/jalview/datamodel/AlignedCodon.js,bin/jalview/datamodel/ASequenceI.js,bin/jalview/datamodel/ASequence.js,bin/jalview/controller/FeatureSettingsControllerGuiI.js,bin/jalview/controller/FeatureSettingsController.js,bin/jalview/controller/AlignViewController.js,bin/jalview/commands/TrimRegionCommand.js,bin/jalview/commands/SlideSequencesCommand.js,bin/jalview/commands/RemoveGapsCommand.js,bin/jalview/commands/RemoveGapColCommand.js,bin/jalview/commands/OrderCommand.js,bin/jalview/commands/EditCommand.js,bin/jalview/commands/CommandI.js,bin/jalview/commands/ChangeCaseCommand.js,bin/jalview/binding/Viewport.js,bin/jalview/binding/VamsasModel.js,bin/jalview/binding/VAMSAS.js,bin/jalview/binding/UserColours.js,bin/jalview/binding/UserColourScheme.js,bin/jalview/binding/Tree.js,bin/jalview/binding/Setting.js,bin/jalview/binding/SequenceType.js,bin/jalview/binding/SequenceSet.js,bin/jalview/binding/Sequence.js,bin/jalview/binding/Property.js,bin/jalview/binding/Pdbids.js,bin/jalview/binding/PdbentryItem.js,bin/jalview/binding/Pdbentry.js,bin/jalview/binding/JalviewUserColours.js,bin/jalview/binding/JalviewModelSequence.js,bin/jalview/binding/JalviewModel.js,bin/jalview/binding/JSeq.js,bin/jalview/binding/JGroup.js,bin/jalview/binding/Features.js,bin/jalview/binding/FeatureSettings.js,bin/jalview/binding/Feature.js,bin/jalview/binding/Colour.js,bin/jalview/binding/AnnotationElement.js,bin/jalview/binding/Annotation.js,bin/jalview/binding/Alignment.js,bin/jalview/bin/JalviewLiteURLRetrieve.js,bin/jalview/bin/JalviewLite.js,bin/jalview/bin/Jalview.js,bin/jalview/bin/Cache.js,bin/jalview/appletgui/UserDefinedColours.js,bin/jalview/appletgui/TreePanel.js,bin/jalview/appletgui/TreeCanvas.js,bin/jalview/appletgui/Tooltip.js,bin/jalview/appletgui/TitledPanel.js,bin/jalview/appletgui/SplitFrame.js,bin/jalview/appletgui/SliderPanel.js,bin/jalview/appletgui/SequenceRenderer.js,bin/jalview/appletgui/SeqPanel.js,bin/jalview/appletgui/SeqCanvas.js,bin/jalview/appletgui/ScalePanel.js,bin/jalview/appletgui/RotatableCanvas.js,bin/jalview/appletgui/RedundancyPanel.js,bin/jalview/appletgui/PairwiseAlignPanel.js,bin/jalview/appletgui/PaintRefresher.js,bin/jalview/appletgui/PCAPanel.js,bin/jalview/appletgui/OverviewPanel.js,bin/jalview/appletgui/JVDialog.js,bin/jalview/appletgui/IdwidthAdjuster.js,bin/jalview/appletgui/IdPanel.js,bin/jalview/appletgui/IdCanvas.js,bin/jalview/appletgui/FontChooser.js,bin/jalview/appletgui/Finder.js,bin/jalview/appletgui/FeatureSettings.js,bin/jalview/appletgui/FeatureRenderer.js,bin/jalview/appletgui/FeatureColourChooser.js,bin/jalview/appletgui/ExtJmol.js,bin/jalview/appletgui/EmbmenuFrame.js,bin/jalview/appletgui/EditNameDialog.js,bin/jalview/appletgui/CutAndPasteTransfer.js,bin/jalview/appletgui/AppletJmolBinding.js,bin/jalview/appletgui/AppletJmol.js,bin/jalview/appletgui/AnnotationRowFilter.js,bin/jalview/appletgui/AnnotationPanel.js,bin/jalview/appletgui/AnnotationLabels.js,bin/jalview/appletgui/AnnotationColumnChooser.js,bin/jalview/appletgui/AnnotationColourChooser.js,bin/jalview/appletgui/AlignmentPanel.js,bin/jalview/appletgui/AlignViewport.js,bin/jalview/appletgui/AlignFrame.js,bin/jalview/appletgui/APopupMenu.js,bin/jalview/api/structures/JalviewStructureDisplayI.js,bin/jalview/api/analysis/ViewBasedAnalysisI.js,bin/jalview/api/analysis/ScoreModelI.js,bin/jalview/api/ViewStyleI.js,bin/jalview/api/StructureSelectionManagerProvider.js,bin/jalview/api/SplitContainerI.js,bin/jalview/api/SequenceStructureBinding.js,bin/jalview/api/SequenceRenderer.js,bin/jalview/api/RotatableCanvasI.js,bin/jalview/api/OOMHandlerI.js,bin/jalview/api/FeaturesDisplayedI.js,bin/jalview/api/FeatureSettingsModelI.js,bin/jalview/api/FeatureSettingsControllerI.js,bin/jalview/api/FeatureRenderer.js,bin/jalview/api/ComplexAlignFile.js,bin/jalview/api/AlignmentViewPanel.js,bin/jalview/api/AlignViewportI.js,bin/jalview/api/AlignViewControllerI.js,bin/jalview/api/AlignViewControllerGuiI.js,bin/jalview/api/AlignExportSettingI.js,bin/jalview/api/AlignCalcWorkerI.js,bin/jalview/api/AlignCalcManagerI.js,bin/jalview/analysis/scoremodels/SWScoreModel.js,bin/jalview/analysis/scoremodels/PairwiseSeqScoreModel.js,bin/jalview/analysis/scoremodels/PIDScoreModel.js,bin/jalview/analysis/scoremodels/FeatureScoreModel.js,bin/jalview/analysis/WUSSParseException.js,bin/jalview/analysis/StructureFrequency.js,bin/jalview/analysis/SequenceIdMatcher.js,bin/jalview/analysis/SeqsetUtils.js,bin/jalview/analysis/SecStrConsensus.js,bin/jalview/analysis/Rna.js,bin/jalview/analysis/ParseProperties.js,bin/jalview/analysis/PCA.js,bin/jalview/analysis/NJTree.js,bin/jalview/analysis/Grouping.js,bin/jalview/analysis/Finder.js,bin/jalview/analysis/Dna.js,bin/jalview/analysis/CrossRef.js,bin/jalview/analysis/Conservation.js,bin/jalview/analysis/CodonComparator.js,bin/jalview/analysis/CodingUtils.js,bin/jalview/analysis/AnnotationSorter.js,bin/jalview/analysis/AlignmentUtils.js,bin/jalview/analysis/AlignmentSorter.js,bin/jalview/analysis/AlignmentAnnotationUtils.js,bin/jalview/analysis/AlignSeq.js,bin/jalview/analysis/AAFrequency.js,bin/org/jmol/viewer/Viewer.js,bin/org/exolab/castor/xml/Unmarshaller.js,bin/org/exolab/castor/mapping/Mapping.js,bin/netscape/javascript/JSObject.js,bin/netscape/javascript/JSException.js,bin/javajs/util/ZipTools.js,bin/javajs/util/ZipData.js,bin/javajs/util/XmlUtil.js,bin/javajs/util/V3d.js,bin/javajs/util/V3.js,bin/javajs/util/T4.js,bin/javajs/util/T3i.js,bin/javajs/util/T3d.js,bin/javajs/util/T3.js,bin/javajs/util/StringDataReader.js,bin/javajs/util/SB.js,bin/javajs/util/Rdr.js,bin/javajs/util/Quat.js,bin/javajs/util/PT.js,bin/javajs/util/P4.js,bin/javajs/util/P3i.js,bin/javajs/util/P3.js,bin/javajs/util/OC.js,bin/javajs/util/Measure.js,bin/javajs/util/Matrix.js,bin/javajs/util/M4.js,bin/javajs/util/M34.js,bin/javajs/util/M3.js,bin/javajs/util/Lst.js,bin/javajs/util/ListDataReader.js,bin/javajs/util/LimitedLineReader.js,bin/javajs/util/Encoding.js,bin/javajs/util/Eigen.js,bin/javajs/util/DataReader.js,bin/javajs/util/DF.js,bin/javajs/util/CompoundDocument.js,bin/javajs/util/CompoundDocHeader.js,bin/javajs/util/CompoundDocDirEntry.js,bin/javajs/util/CifDataParser.js,bin/javajs/util/CU.js,bin/javajs/util/BinaryDocument.js,bin/javajs/util/Base64.js,bin/javajs/util/BS.js,bin/javajs/util/BC.js,bin/javajs/util/BArray.js,bin/javajs/util/ArrayDataReader.js,bin/javajs/util/AjaxURLStreamHandlerFactory.js,bin/javajs/util/AjaxURLStreamHandler.js,bin/javajs/util/AjaxURLConnection.js,bin/javajs/util/AU.js,bin/javajs/util/A4.js,bin/javajs/swing/TableColumn.js,bin/javajs/swing/TableCellRenderer.js,bin/javajs/swing/SwingConstants.js,bin/javajs/swing/ListSelectionModel.js,bin/javajs/swing/JTextPane.js,bin/javajs/swing/JTextField.js,bin/javajs/swing/JTable.js,bin/javajs/swing/JSplitPane.js,bin/javajs/swing/JScrollPane.js,bin/javajs/swing/JRadioButtonMenuItem.js,bin/javajs/swing/JPopupMenu.js,bin/javajs/swing/JPanel.js,bin/javajs/swing/JMenuItem.js,bin/javajs/swing/JMenu.js,bin/javajs/swing/JLabel.js,bin/javajs/swing/JEditorPane.js,bin/javajs/swing/JDialog.js,bin/javajs/swing/JContentPane.js,bin/javajs/swing/JComponentImp.js,bin/javajs/swing/JComponent.js,bin/javajs/swing/JComboBox.js,bin/javajs/swing/JCheckBoxMenuItem.js,bin/javajs/swing/JCheckBox.js,bin/javajs/swing/JButton.js,bin/javajs/swing/Insets.js,bin/javajs/swing/GridBagLayout.js,bin/javajs/swing/GridBagConstraints.js,bin/javajs/swing/Grid.js,bin/javajs/swing/FlowLayout.js,bin/javajs/swing/Document.js,bin/javajs/swing/ColumnSelectionModel.js,bin/javajs/swing/Cell.js,bin/javajs/swing/ButtonGroup.js,bin/javajs/swing/AbstractTableModel.js,bin/javajs/swing/AbstractButton.js,bin/javajs/img/PpmEncoder.js,bin/javajs/img/PngEncoder.js,bin/javajs/img/PdfEncoder.js,bin/javajs/img/JpgEncoder.js,bin/javajs/img/Jpg64Encoder.js,bin/javajs/img/ImageEncoder.js,bin/javajs/img/GifEncoder.js,bin/javajs/img/CRCEncoder.js,bin/javajs/img/BMPDecoder.js,bin/javajs/export/PDFObject.js,bin/javajs/export/PDFCreator.js,bin/javajs/awt/event/WindowListener.js,bin/javajs/awt/event/WindowEvent.js,bin/javajs/awt/event/ItemEvent.js,bin/javajs/awt/event/Event.js,bin/javajs/awt/event/ActionListener.js,bin/javajs/awt/event/ActionEvent.js,bin/javajs/awt/LayoutManager.js,bin/javajs/awt/Font.js,bin/javajs/awt/Dimension.js,bin/javajs/awt/Container.js,bin/javajs/awt/Component.js,bin/javajs/awt/Color.js,bin/javajs/awt/BorderLayout.js,bin/javajs/api/ZInputStream.js,bin/javajs/api/SwingController.js,bin/javajs/api/SC.js,bin/javajs/api/PlatformViewer.js,bin/javajs/api/JmolObjectInterface.js,bin/javajs/api/JSONEncodable.js,bin/javajs/api/JSInterface.js,bin/javajs/api/Interface.js,bin/javajs/api/HTMLWindowEvent.js,bin/javajs/api/HTMLElement.js,bin/javajs/api/GenericZipTools.js,bin/javajs/api/GenericZipInputStream.js,bin/javajs/api/GenericPlatform.js,bin/javajs/api/GenericMouseInterface.js,bin/javajs/api/GenericMenuInterface.js,bin/javajs/api/GenericLineReader.js,bin/javajs/api/GenericImageEncoder.js,bin/javajs/api/GenericImageDialog.js,bin/javajs/api/GenericFileInterface.js,bin/javajs/api/GenericColor.js,bin/javajs/api/GenericCifDataParser.js,bin/javajs/api/GenericBinaryDocument.js,bin/javajs/api/FontManager.js,bin/javajs/api/EventManager.js,bin/javajs/api/EigenInterface.js,bin/javajs/api/BytePoster.js,bin/javajs/J2SRequireImport.js,bin/javajs/J2SIgnoreImport.js,bin/jalview/jsdev/api/VarnaRNA.js,bin/jalview/jsdev/GenericFileAdapter.js,bin/jalview/jsdev/Constants.js,bin/fr/orsay/lri/varna/models/rna/RNA.js,bin/com/stevesoft/pat/wrap/WriterWrap.js,bin/com/stevesoft/pat/wrap/StringWrap.js,bin/com/stevesoft/pat/wrap/StringBufferWrap.js,bin/com/stevesoft/pat/wrap/RandomAccessFileWrap.js,bin/com/stevesoft/pat/wrap/CharArrayWrap.js,bin/com/stevesoft/pat/wrap/CharArrayBufferWrap.js,bin/com/stevesoft/pat/patInt.js,bin/com/stevesoft/pat/patInf.js,bin/com/stevesoft/pat/parsePerl.js,bin/com/stevesoft/pat/oneChar.js,bin/com/stevesoft/pat/lookAhead.js,bin/com/stevesoft/pat/WantMoreTextReplaceRule.js,bin/com/stevesoft/pat/Validator.js,bin/com/stevesoft/pat/UniValidator.js,bin/com/stevesoft/pat/Transformer.js,bin/com/stevesoft/pat/TransPat.js,bin/com/stevesoft/pat/SubMark.js,bin/com/stevesoft/pat/StringRule.js,bin/com/stevesoft/pat/StringLike.js,bin/com/stevesoft/pat/StringBufferLike.js,bin/com/stevesoft/pat/StrPos.js,bin/com/stevesoft/pat/Start.js,bin/com/stevesoft/pat/SpecialRule.js,bin/com/stevesoft/pat/Skipped.js,bin/com/stevesoft/pat/SkipBMH.js,bin/com/stevesoft/pat/Skip2.js,bin/com/stevesoft/pat/Skip.js,bin/com/stevesoft/pat/RuleHolder.js,bin/com/stevesoft/pat/Rthings.js,bin/com/stevesoft/pat/RightRule.js,bin/com/stevesoft/pat/Replacer.js,bin/com/stevesoft/pat/ReplaceRule.js,bin/com/stevesoft/pat/RegexWriter.js,bin/com/stevesoft/pat/RegexTokenizer.js,bin/com/stevesoft/pat/RegexReader.js,bin/com/stevesoft/pat/Regex.js,bin/com/stevesoft/pat/RegSyntaxError.js,bin/com/stevesoft/pat/RegSyntax.js,bin/com/stevesoft/pat/RegRes.js,bin/com/stevesoft/pat/RegOpt.js,bin/com/stevesoft/pat/Range.js,bin/com/stevesoft/pat/RBuffer.js,bin/com/stevesoft/pat/PushRule.js,bin/com/stevesoft/pat/Pthings.js,bin/com/stevesoft/pat/Prop.js,bin/com/stevesoft/pat/PopRule.js,bin/com/stevesoft/pat/PatternSub.js,bin/com/stevesoft/pat/Pattern.js,bin/com/stevesoft/pat/PartialBuffer.js,bin/com/stevesoft/pat/OrMark.js,bin/com/stevesoft/pat/Or.js,bin/com/stevesoft/pat/NullRule.js,bin/com/stevesoft/pat/NullPattern.js,bin/com/stevesoft/pat/NotImplementedError.js,bin/com/stevesoft/pat/NonDirFileRegex.js,bin/com/stevesoft/pat/NoPattern.js,bin/com/stevesoft/pat/Multi_stage2.js,bin/com/stevesoft/pat/MultiMin.js,bin/com/stevesoft/pat/Multi.js,bin/com/stevesoft/pat/LeftRule.js,bin/com/stevesoft/pat/Group.js,bin/com/stevesoft/pat/FileRegex.js,bin/com/stevesoft/pat/FastMulti.js,bin/com/stevesoft/pat/FastBracket.js,bin/com/stevesoft/pat/End.js,bin/com/stevesoft/pat/DotMulti.js,bin/com/stevesoft/pat/DirFileRegex.js,bin/com/stevesoft/pat/CustomEndpoint.js,bin/com/stevesoft/pat/Custom.js,bin/com/stevesoft/pat/Ctrl.js,bin/com/stevesoft/pat/CodeRule.js,bin/com/stevesoft/pat/ChangeRule.js,bin/com/stevesoft/pat/CaseMgr.js,bin/com/stevesoft/pat/Bracket.js,bin/com/stevesoft/pat/Boundary.js,bin/com/stevesoft/pat/Bits.js,bin/com/stevesoft/pat/BasicStringBufferLike.js,bin/com/stevesoft/pat/Backup.js,bin/com/stevesoft/pat/BackRefRule.js,bin/com/stevesoft/pat/BackMatch.js,bin/com/stevesoft/pat/BackG.js,bin/com/stevesoft/pat/Any.js,bin/com/stevesoft/pat/AmpersandRule.js,bin/awt2swing/TextField.js,bin/awt2swing/TextArea.js,bin/awt2swing/Scrollbar.js,bin/awt2swing/ScrollPane.js,bin/awt2swing/PopupMenu.js,bin/awt2swing/Panel.js,bin/awt2swing/MenuItem.js,bin/awt2swing/MenuBar.js,bin/awt2swing/Menu.js,bin/awt2swing/Label.js,bin/awt2swing/Frame.js,bin/awt2swing/CheckboxMenuItem.js,bin/awt2swing/Checkbox.js,bin/MCview/Residue.js,bin/MCview/PDBfile.js,bin/MCview/PDBChain.js,bin/MCview/Bond.js,bin/MCview/Atom.js,bin/awt2swing/Button.js,bin/awt2swing/Canvas.js,bin/awt2swing/Choice.js,bin/jalview/appletgui/Cache.js,bin/com/stevesoft/pat/Util.js,bin/jalview/jsdev/Regex.js,bin/jalview/jsdev/RegexJS.js,bin/com/stevesoft/pat/MessageManager.js,bin/jalview/jsdev/api/RegexInterface.js,bin/jalview/jsdev/api/RegExpInterface.js,bin/jalview/jsdev/RegExp.js,bin/jalview/jsdev/JavaScriptRegExp.js,bin/jalview/jsdev/JSRegex.js,bin/swingjs/JSEvent.js,bin/swingjs/JSThread.js,bin/swingjs/api/JSFunction.js,bin/swingjs/JSImage.js,bin/swingjs/api/DOMNode.js
+j2s.compiler.abbreviation.prefix=$_
+j2s.abandoned.resources.list=
+j2s.output.path=bin
+j2s.compiler.status=enable
diff --git a/bin/.gitignore b/bin/.gitignore
new file mode 100644
index 0000000..77d60bf
--- /dev/null
+++ b/bin/.gitignore
@@ -0,0 +1,9 @@
+/MCview/
+/awt2swing/
+/com/
+/fr/
+/jalview/
+/javajs/
+/netscape/
+/org/
+/swingjs/
diff --git a/bin/MCview/Atom.js b/bin/MCview/Atom.js
index 1f4c66f..ff57b47 100644
--- a/bin/MCview/Atom.js
+++ b/bin/MCview/Atom.js
@@ -1,55 +1,55 @@
-Clazz.declarePackage ("MCview");
-Clazz.load (["java.awt.Color"], "MCview.Atom", ["java.lang.Float"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.x = 0;
-this.y = 0;
-this.z = 0;
-this.number = 0;
-this.name = null;
-this.resName = null;
-this.resNumber = 0;
-this.insCode = ' ';
-this.resNumIns = null;
-this.type = 0;
-this.color = null;
-this.chain = null;
-this.alignmentMapping = -1;
-this.atomIndex = 0;
-this.occupancy = 0;
-this.tfactor = 0;
-this.isSelected = false;
-Clazz.instantialize (this, arguments);
-}, MCview, "Atom");
-Clazz.prepareFields (c$, function () {
-this.color = java.awt.Color.lightGray;
-});
-Clazz.makeConstructor (c$,
-function (str) {
-this.atomIndex = Integer.parseInt (str.substring (6, 11).trim ());
-this.name = str.substring (12, 15).trim ();
-this.resName = str.substring (17, 20);
-this.chain = str.substring (21, 22);
-this.resNumber = Integer.parseInt (str.substring (22, 26).trim ());
-this.resNumIns = str.substring (22, 27).trim ();
-this.insCode = str.substring (26, 27).charAt (0);
-this.x = ( new Float (str.substring (30, 38).trim ()).floatValue ());
-this.y = ( new Float (str.substring (38, 46).trim ()).floatValue ());
-this.z = ( new Float (str.substring (47, 55).trim ()).floatValue ());
-var tm = str.substring (54, 60).trim ();
-if (tm.length > 0) {
-this.occupancy = ( new Float (tm)).floatValue ();
-} else {
-this.occupancy = 1;
-}tm = str.substring (60, 66).trim ();
-if (tm.length > 0) {
-this.tfactor = ( new Float (tm).floatValue ());
-} else {
-this.tfactor = 1;
-}}, "~S");
-Clazz.makeConstructor (c$,
-function (x, y, z) {
-this.x = x;
-this.y = y;
-this.z = z;
-}, "~N,~N,~N");
-});
+Clazz.declarePackage ("MCview");
+Clazz.load (["java.awt.Color"], "MCview.Atom", ["java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+this.number = 0;
+this.name = null;
+this.resName = null;
+this.resNumber = 0;
+this.insCode = ' ';
+this.resNumIns = null;
+this.type = 0;
+this.color = null;
+this.chain = null;
+this.alignmentMapping = -1;
+this.atomIndex = 0;
+this.occupancy = 0;
+this.tfactor = 0;
+this.isSelected = false;
+Clazz.instantialize (this, arguments);
+}, MCview, "Atom");
+Clazz.prepareFields (c$, function () {
+this.color = java.awt.Color.lightGray;
+});
+Clazz.makeConstructor (c$,
+function (str) {
+this.atomIndex = Integer.parseInt (str.substring (6, 11).trim ());
+this.name = str.substring (12, 15).trim ();
+this.resName = str.substring (17, 20);
+this.chain = str.substring (21, 22);
+this.resNumber = Integer.parseInt (str.substring (22, 26).trim ());
+this.resNumIns = str.substring (22, 27).trim ();
+this.insCode = str.substring (26, 27).charAt (0);
+this.x = ( new Float (str.substring (30, 38).trim ()).floatValue ());
+this.y = ( new Float (str.substring (38, 46).trim ()).floatValue ());
+this.z = ( new Float (str.substring (47, 55).trim ()).floatValue ());
+var tm = str.substring (54, 60).trim ();
+if (tm.length > 0) {
+this.occupancy = ( new Float (tm)).floatValue ();
+} else {
+this.occupancy = 1;
+}tm = str.substring (60, 66).trim ();
+if (tm.length > 0) {
+this.tfactor = ( new Float (tm).floatValue ());
+} else {
+this.tfactor = 1;
+}}, "~S");
+Clazz.makeConstructor (c$,
+function (x, y, z) {
+this.x = x;
+this.y = y;
+this.z = z;
+}, "~N,~N,~N");
+});
diff --git a/bin/MCview/Bond.js b/bin/MCview/Bond.js
index 539e323..9aaba45 100644
--- a/bin/MCview/Bond.js
+++ b/bin/MCview/Bond.js
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("MCview");
-Clazz.load (["java.awt.Color"], "MCview.Bond", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.start = null;
-this.end = null;
-this.startCol = null;
-this.endCol = null;
-this.at1 = null;
-this.at2 = null;
-Clazz.instantialize (this, arguments);
-}, MCview, "Bond");
-Clazz.prepareFields (c$, function () {
-this.startCol = java.awt.Color.lightGray;
-this.endCol = java.awt.Color.lightGray;
-});
-Clazz.makeConstructor (c$,
-function (at1, at2) {
-this.start = Clazz.newFloatArray (-1, [at1.x, at1.y, at1.z]);
-this.end = Clazz.newFloatArray (-1, [at2.x, at2.y, at2.z]);
-this.startCol = at1.color;
-this.endCol = at2.color;
-this.at1 = at1;
-this.at2 = at2;
-}, "MCview.Atom,MCview.Atom");
-Clazz.defineMethod (c$, "translate",
-function (x, y, z) {
-this.start[0] = this.start[0] + x;
-this.end[0] = this.end[0] + x;
-this.start[1] = this.start[1] + y;
-this.end[1] = this.end[1] + y;
-this.start[2] = this.start[2] + z;
-this.end[2] = this.end[2] + z;
-}, "~N,~N,~N");
-});
+Clazz.declarePackage ("MCview");
+Clazz.load (["java.awt.Color"], "MCview.Bond", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.start = null;
+this.end = null;
+this.startCol = null;
+this.endCol = null;
+this.at1 = null;
+this.at2 = null;
+Clazz.instantialize (this, arguments);
+}, MCview, "Bond");
+Clazz.prepareFields (c$, function () {
+this.startCol = java.awt.Color.lightGray;
+this.endCol = java.awt.Color.lightGray;
+});
+Clazz.makeConstructor (c$,
+function (at1, at2) {
+this.start = Clazz.newFloatArray (-1, [at1.x, at1.y, at1.z]);
+this.end = Clazz.newFloatArray (-1, [at2.x, at2.y, at2.z]);
+this.startCol = at1.color;
+this.endCol = at2.color;
+this.at1 = at1;
+this.at2 = at2;
+}, "MCview.Atom,MCview.Atom");
+Clazz.defineMethod (c$, "translate",
+function (x, y, z) {
+this.start[0] = this.start[0] + x;
+this.end[0] = this.end[0] + x;
+this.start[1] = this.start[1] + y;
+this.end[1] = this.end[1] + y;
+this.start[2] = this.start[2] + z;
+this.end[2] = this.end[2] + z;
+}, "~N,~N,~N");
+});
diff --git a/bin/MCview/PDBChain.class b/bin/MCview/PDBChain.class
index 3e017ed153ee3caa0f240c67576004e6421d13d6..8244cf66d0a0eac72f9e12a128a3080b16f0cd6d 100644
GIT binary patch
delta 87
zcmX?~a5iB>q5|XP%}EOL7*$Ld*#9wbGBPs$X9#5AU}pfb7}*)NgHZ)LLj?na0@q|!
nrFzB-o0lr3vNC5eNN(oUux4cAdzIT
delta 89
zcmX?`a6Vx}q5|WU%}EOL7*$OfIQ}tkGBPs$X9#5AU}pfb7}*)NgHZ)LLj?na0z1=W
p6{UK{i<_4yrLr<-Ge~Xb(XeJ@XJg_O_|L#PnO{R 0 && (Clazz.doubleToInt (numNa / (this.residues.size () - 1)) > 0.99)) {
-this.isNa = true;
-}});
-Clazz.defineMethod (c$, "makeBond",
-function (at1, at2) {
-this.bonds.addElement ( new MCview.Bond (at1, at2));
-}, "MCview.Atom,MCview.Atom");
-Clazz.defineMethod (c$, "makeResidueList",
-function (visibleChainAnnotation) {
-var count = 0;
-var symbol;
-var deoxyn = false;
-var nucleotide = false;
-var seq = new StringBuilder (256);
-var resFeatures = new java.util.Vector ();
-var resAnnotation = new java.util.Vector ();
-var i;
-var iSize = this.atoms.size () - 1;
-var resNumber = -1;
-for (i = 0; i <= iSize; i++) {
-var tmp = this.atoms.elementAt (i);
-resNumber = tmp.resNumber;
-var res = resNumber;
-if (i == 0) {
-this.offset = resNumber;
-}var resAtoms = new java.util.Vector ();
-while ((resNumber == res) && (i < this.atoms.size ())) {
-resAtoms.add (this.atoms.elementAt (i));
-i++;
-if (i < this.atoms.size ()) {
-resNumber = this.atoms.elementAt (i).resNumber;
-} else {
-resNumber++;
-}}
-i--;
-this.residues.addElement ( new MCview.Residue (resAtoms, resNumber - 1, count));
-var tmpres = this.residues.lastElement ();
-var tmpat = tmpres.atoms.get (0);
-var sf = new jalview.datamodel.SequenceFeature ("RESNUM", tmpat.resName + ":" + tmpat.resNumIns + " " + this.pdbid + this.id, "", this.offset + count, this.offset + count, this.pdbid);
-resFeatures.addElement (sf);
-resAnnotation.addElement ( new jalview.datamodel.Annotation (tmpat.tfactor));
-if ((symbol = jalview.schemes.ResidueProperties.getAA3Hash ().get (tmpat.resName)) == null) {
-var nucname = tmpat.resName.trim ();
-deoxyn = nucname.length == 2 && jalview.schemes.ResidueProperties.aaIndex[nucname.charCodeAt (0)] == jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)];
-if (tmpat.name.equalsIgnoreCase ("CA") || jalview.schemes.ResidueProperties.nucleotideIndex[nucname.charCodeAt ((deoxyn ? 1 : 0))] == -1) {
-seq.append ("X");
-} else {
-nucleotide = true;
-seq.append (nucname.charAt ((deoxyn ? 1 : 0)));
-}} else {
-if (nucleotide) {
-System.err.println ("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");
-}seq.append (jalview.schemes.ResidueProperties.aa[(symbol).intValue ()]);
-}count++;
-}
-if (this.id.length < 1) {
-this.id = " ";
-}this.isNa = nucleotide;
-this.sequence = new jalview.datamodel.Sequence (this.id, seq.toString (), this.offset, resNumber - 1);
-for (i = 0, iSize = resFeatures.size (); i < iSize; i++) {
-this.sequence.addSequenceFeature (resFeatures.elementAt (i));
-resFeatures.setElementAt (null, i);
-}
-if (visibleChainAnnotation) {
-var annots = new Array (resAnnotation.size ());
-var max = 0;
-for (i = 0, iSize = annots.length; i < iSize; i++) {
-annots[i] = resAnnotation.elementAt (i);
-if (annots[i].value > max) {
-max = annots[i].value;
-}resAnnotation.setElementAt (null, i);
-}
-var tfactorann = new jalview.datamodel.AlignmentAnnotation ("Temperature Factor", "Temperature Factor for " + this.pdbid + this.id, annots, 0, max, 2);
-tfactorann.setSequenceRef (this.sequence);
-this.sequence.addAlignmentAnnotation (tfactorann);
-}}, "~B");
-Clazz.defineMethod (c$, "setChargeColours",
-function () {
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
-if (b.at1 != null && b.at2 != null) {
-b.startCol = MCview.PDBChain.getChargeColour (b.at1.resName);
-b.endCol = MCview.PDBChain.getChargeColour (b.at2.resName);
-} else {
-b.startCol = java.awt.Color.gray;
-b.endCol = java.awt.Color.gray;
-}}
-});
-c$.getChargeColour = Clazz.defineMethod (c$, "getChargeColour",
-function (resName) {
-var result = java.awt.Color.lightGray;
-if ("ASP".equals (resName) || "GLU".equals (resName)) {
-result = java.awt.Color.red;
-} else if ("LYS".equals (resName) || "ARG".equals (resName)) {
-result = java.awt.Color.blue;
-} else if ("CYS".equals (resName)) {
-result = java.awt.Color.yellow;
-}return result;
-}, "~S");
-Clazz.defineMethod (c$, "setChainColours",
-function (cs) {
-var index;
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
-try {
-index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at1.resName).intValue ();
-b.startCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
-index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at2.resName).intValue ();
-b.endCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-b.startCol = java.awt.Color.gray;
-b.endCol = java.awt.Color.gray;
-} else {
-throw e;
-}
-}
-}
-}, "jalview.schemes.ColourSchemeI");
-Clazz.defineMethod (c$, "setChainColours",
-function (col) {
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
-b.startCol = col;
-b.endCol = col;
-}
-}, "java.awt.Color");
-Clazz.defineMethod (c$, "transferResidueAnnotation",
-function (mapping, sqmpping) {
-var sq = mapping.getSequence ();
-var dsq = sq;
-if (sq != null) {
-while (dsq.getDatasetSequence () != null) {
-dsq = dsq.getDatasetSequence ();
-}
-if (this.shadow != null && this.shadow.getAnnotation () != null) {
-for (var ana, $ana = 0, $$ana = this.shadow.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
-var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
-if (transfer == null || transfer.size () == 0) {
-ana = new jalview.datamodel.AlignmentAnnotation (ana);
-ana.liftOver (this.sequence, this.shadowMap);
-ana.liftOver (dsq, sqmpping);
-dsq.addAlignmentAnnotation (ana);
-} else {
-continue;
-}}
-} else {
-if (this.sequence != null && this.sequence.getAnnotation () != null) {
-for (var ana, $ana = 0, $$ana = this.sequence.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
-var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
-if (transfer == null || transfer.size () == 0) {
-ana = new jalview.datamodel.AlignmentAnnotation (ana);
-ana.liftOver (dsq, sqmpping);
-} else {
-continue;
-}}
-}}if (false) {
-var min = -1;
-var max = 0;
-var an = new Array (sq.getEnd () - sq.getStart () + 1);
-for (var i = sq.getStart (), j = sq.getEnd (), k = 0; i <= j; i++, k++) {
-var prn = mapping.getPDBResNum (k + 1);
-an[k] = new jalview.datamodel.Annotation (prn);
-if (min == -1) {
-min = k;
-max = k;
-} else {
-if (min > k) {
-min = k;
-} else if (max < k) {
-max = k;
-}}}
-sq.addAlignmentAnnotation ( new jalview.datamodel.AlignmentAnnotation ("PDB.RESNUM", "PDB Residue Numbering for " + this.pdbid + ":" + this.id, an, min, max, 2));
-}}}, "jalview.structure.StructureMapping,jalview.datamodel.Mapping");
-Clazz.defineStatics (c$,
-"PDBFILEFEATURE", "PDBFile",
-"IEASTATUS", "IEA:jalview");
-});
+Clazz.declarePackage ("MCview");
+Clazz.load (["java.util.Vector"], "MCview.PDBChain", ["MCview.Bond", "$.Residue", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "java.awt.Color", "java.lang.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = null;
+this.bonds = null;
+this.atoms = null;
+this.residues = null;
+this.offset = 0;
+this.sequence = null;
+this.shadow = null;
+this.isNa = false;
+this.isVisible = true;
+this.pdbstart = 0;
+this.pdbend = 0;
+this.seqstart = 0;
+this.seqend = 0;
+this.pdbid = "";
+this.newline = null;
+this.shadowMap = null;
+Clazz.instantialize (this, arguments);
+}, MCview, "PDBChain");
+Clazz.prepareFields (c$, function () {
+this.bonds = new java.util.Vector ();
+this.atoms = new java.util.Vector ();
+this.residues = new java.util.Vector ();
+this.newline = System.getProperty ("line.separator");
+});
+Clazz.makeConstructor (c$,
+function (pdbid, id) {
+this.pdbid = pdbid.toLowerCase ();
+this.id = id;
+}, "~S,~S");
+Clazz.defineMethod (c$, "setNewlineString",
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz.defineMethod (c$, "getNewlineString",
+function () {
+return this.newline;
+});
+Clazz.defineMethod (c$, "print",
+function () {
+var tmp = new StringBuilder (256);
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+tmp.append (b.at1.resName).append (" ").append (b.at1.resNumber).append (" ").append (this.offset).append (this.newline);
+}
+return tmp.toString ();
+});
+Clazz.defineMethod (c$, "makeExactMapping",
+function (as, s1) {
+var pdbpos = as.getSeq2Start () - 2;
+var alignpos = s1.getStart () + as.getSeq1Start () - 3;
+for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+atom.alignmentMapping = -1;
+}
+for (var i = 0; i < as.astr1.length; i++) {
+if (as.astr1.charAt (i) != '-') {
+alignpos++;
+}if (as.astr2.charAt (i) != '-') {
+pdbpos++;
+}if (as.astr1.charAt (i) == as.astr2.charAt (i)) {
+var res = this.residues.elementAt (pdbpos);
+for (var atom, $atom = res.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+atom.alignmentMapping = alignpos;
+}
+}}
+}, "jalview.analysis.AlignSeq,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "transferRESNUMFeatures",
+function (seq, status) {
+var sq = seq;
+while (sq != null && sq.getDatasetSequence () != null) {
+sq = sq.getDatasetSequence ();
+if (sq === this.sequence) {
+return null;
+}}
+if (status == null) {
+status = "IEA:jalview";
+}var features = this.sequence.getSequenceFeatures ();
+for (var i = 0; i < features.length; i++) {
+if (features[i].getFeatureGroup ().equals (this.pdbid)) {
+var tx = new jalview.datamodel.SequenceFeature (features[i]);
+tx.setBegin (1 + this.residues.elementAt (tx.getBegin () - this.offset).atoms.elementAt (0).alignmentMapping);
+tx.setEnd (1 + this.residues.elementAt (tx.getEnd () - this.offset).atoms.elementAt (0).alignmentMapping);
+tx.setStatus (status + ((tx.getStatus () == null || tx.getStatus ().length == 0) ? "" : ":" + tx.getStatus ()));
+if (tx.begin != 0 && tx.end != 0) {
+sq.addSequenceFeature (tx);
+}}}
+return features;
+}, "jalview.datamodel.SequenceI,~S");
+Clazz.defineMethod (c$, "makeCaBondList",
+function () {
+var na = false;
+var numNa = 0;
+for (var i = 0; i < (this.residues.size () - 1); i++) {
+var tmpres = this.residues.elementAt (i);
+var tmpres2 = this.residues.elementAt (i + 1);
+var at1 = tmpres.findAtom ("CA");
+var at2 = tmpres2.findAtom ("CA");
+na = false;
+if ((at1 == null) && (at2 == null)) {
+na = true;
+at1 = tmpres.findAtom ("P");
+at2 = tmpres2.findAtom ("P");
+}if ((at1 != null) && (at2 != null)) {
+if (at1.chain.equals (at2.chain)) {
+if (na) {
+numNa++;
+}this.makeBond (at1, at2);
+}} else {
+System.out.println ("not found " + i);
+}}
+if (this.residues.size () > 0 && (Clazz.doubleToInt (numNa / (this.residues.size () - 1)) > 0.99)) {
+this.isNa = true;
+}});
+Clazz.defineMethod (c$, "makeBond",
+function (at1, at2) {
+this.bonds.addElement ( new MCview.Bond (at1, at2));
+}, "MCview.Atom,MCview.Atom");
+Clazz.defineMethod (c$, "makeResidueList",
+function (visibleChainAnnotation) {
+var count = 0;
+var symbol;
+var deoxyn = false;
+var nucleotide = false;
+var seq = new StringBuilder (256);
+var resFeatures = new java.util.Vector ();
+var resAnnotation = new java.util.Vector ();
+var i;
+var iSize = this.atoms.size () - 1;
+var resNumber = -1;
+for (i = 0; i <= iSize; i++) {
+var tmp = this.atoms.elementAt (i);
+resNumber = tmp.resNumber;
+var res = resNumber;
+if (i == 0) {
+this.offset = resNumber;
+}var resAtoms = new java.util.Vector ();
+while ((resNumber == res) && (i < this.atoms.size ())) {
+resAtoms.add (this.atoms.elementAt (i));
+i++;
+if (i < this.atoms.size ()) {
+resNumber = this.atoms.elementAt (i).resNumber;
+} else {
+resNumber++;
+}}
+i--;
+this.residues.addElement ( new MCview.Residue (resAtoms, resNumber - 1, count));
+var tmpres = this.residues.lastElement ();
+var tmpat = tmpres.atoms.get (0);
+var sf = new jalview.datamodel.SequenceFeature ("RESNUM", tmpat.resName + ":" + tmpat.resNumIns + " " + this.pdbid + this.id, "", this.offset + count, this.offset + count, this.pdbid);
+resFeatures.addElement (sf);
+resAnnotation.addElement ( new jalview.datamodel.Annotation (tmpat.tfactor));
+if ((symbol = jalview.schemes.ResidueProperties.getAA3Hash ().get (tmpat.resName)) == null) {
+var nucname = tmpat.resName.trim ();
+deoxyn = nucname.length == 2 && jalview.schemes.ResidueProperties.aaIndex[nucname.charCodeAt (0)] == jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)];
+if (tmpat.name.equalsIgnoreCase ("CA") || jalview.schemes.ResidueProperties.nucleotideIndex[nucname.charCodeAt ((deoxyn ? 1 : 0))] == -1) {
+seq.append ("X");
+} else {
+nucleotide = true;
+seq.append (nucname.charAt ((deoxyn ? 1 : 0)));
+}} else {
+if (nucleotide) {
+System.err.println ("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");
+}seq.append (jalview.schemes.ResidueProperties.aa[(symbol).intValue ()]);
+}count++;
+}
+if (this.id.length < 1) {
+this.id = " ";
+}this.isNa = nucleotide;
+this.sequence = new jalview.datamodel.Sequence (this.id, seq.toString (), this.offset, resNumber - 1);
+for (i = 0, iSize = resFeatures.size (); i < iSize; i++) {
+this.sequence.addSequenceFeature (resFeatures.elementAt (i));
+resFeatures.setElementAt (null, i);
+}
+if (visibleChainAnnotation) {
+var annots = new Array (resAnnotation.size ());
+var max = 0;
+for (i = 0, iSize = annots.length; i < iSize; i++) {
+annots[i] = resAnnotation.elementAt (i);
+if (annots[i].value > max) {
+max = annots[i].value;
+}resAnnotation.setElementAt (null, i);
+}
+var tfactorann = new jalview.datamodel.AlignmentAnnotation ("Temperature Factor", "Temperature Factor for " + this.pdbid + this.id, annots, 0, max, 2);
+tfactorann.setSequenceRef (this.sequence);
+this.sequence.addAlignmentAnnotation (tfactorann);
+}}, "~B");
+Clazz.defineMethod (c$, "setChargeColours",
+function () {
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+if (b.at1 != null && b.at2 != null) {
+b.startCol = MCview.PDBChain.getChargeColour (b.at1.resName);
+b.endCol = MCview.PDBChain.getChargeColour (b.at2.resName);
+} else {
+b.startCol = java.awt.Color.gray;
+b.endCol = java.awt.Color.gray;
+}}
+});
+c$.getChargeColour = Clazz.defineMethod (c$, "getChargeColour",
+function (resName) {
+var result = java.awt.Color.lightGray;
+if ("ASP".equals (resName) || "GLU".equals (resName)) {
+result = java.awt.Color.red;
+} else if ("LYS".equals (resName) || "ARG".equals (resName)) {
+result = java.awt.Color.blue;
+} else if ("CYS".equals (resName)) {
+result = java.awt.Color.yellow;
+}return result;
+}, "~S");
+Clazz.defineMethod (c$, "setChainColours",
+function (cs) {
+var index;
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+try {
+index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at1.resName).intValue ();
+b.startCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
+index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at2.resName).intValue ();
+b.endCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+b.startCol = java.awt.Color.gray;
+b.endCol = java.awt.Color.gray;
+} else {
+throw e;
+}
+}
+}
+}, "jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "setChainColours",
+function (col) {
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+b.startCol = col;
+b.endCol = col;
+}
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "transferResidueAnnotation",
+function (mapping, sqmpping) {
+var sq = mapping.getSequence ();
+var dsq = sq;
+if (sq != null) {
+while (dsq.getDatasetSequence () != null) {
+dsq = dsq.getDatasetSequence ();
+}
+if (this.shadow != null && this.shadow.getAnnotation () != null) {
+for (var ana, $ana = 0, $$ana = this.shadow.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
+var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
+if (transfer == null || transfer.size () == 0) {
+ana = new jalview.datamodel.AlignmentAnnotation (ana);
+ana.liftOver (this.sequence, this.shadowMap);
+ana.liftOver (dsq, sqmpping);
+dsq.addAlignmentAnnotation (ana);
+} else {
+continue;
+}}
+} else {
+if (this.sequence != null && this.sequence.getAnnotation () != null) {
+for (var ana, $ana = 0, $$ana = this.sequence.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
+var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
+if (transfer == null || transfer.size () == 0) {
+ana = new jalview.datamodel.AlignmentAnnotation (ana);
+ana.liftOver (dsq, sqmpping);
+} else {
+continue;
+}}
+}}if (false) {
+var min = -1;
+var max = 0;
+var an = new Array (sq.getEnd () - sq.getStart () + 1);
+for (var i = sq.getStart (), j = sq.getEnd (), k = 0; i <= j; i++, k++) {
+var prn = mapping.getPDBResNum (k + 1);
+an[k] = new jalview.datamodel.Annotation (prn);
+if (min == -1) {
+min = k;
+max = k;
+} else {
+if (min > k) {
+min = k;
+} else if (max < k) {
+max = k;
+}}}
+sq.addAlignmentAnnotation ( new jalview.datamodel.AlignmentAnnotation ("PDB.RESNUM", "PDB Residue Numbering for " + this.pdbid + ":" + this.id, an, min, max, 2));
+}}}, "jalview.structure.StructureMapping,jalview.datamodel.Mapping");
+Clazz.defineStatics (c$,
+"PDBFILEFEATURE", "PDBFile",
+"IEASTATUS", "IEA:jalview");
+});
diff --git a/bin/MCview/PDBfile.class b/bin/MCview/PDBfile.class
index 251deb77dd63d33fa94c2bd2d8591821928339ed..a9bf8743bbf50abf4656690829a0e6e965f64269 100644
GIT binary patch
delta 159
zcmdm)vn6N440%S)%`@dSSlAi0Xu${b6MT$%B4+A$lL(nep0>wkvs$@g^RC-2sA;udFMVrO7vXV}ZYxS3OTB@-jd=FR#G
x7}=6R%3>x@FqD)sV_=6UVP{;x&bXSL@eDg713SZd28PMKhB7E7Y&C3Q0RYb`Dj@&>
delta 145
zcmdmzvomMI40%TF%`@dSSlAgE86^HQ*iK%cBFV#`_lJR-ogs+#7X#DeH_DqC#X!PL
z3{IPOsc^F~x^6zEb&ip(jDhVxL-*u6I`Wfu>NxR;Ffg$*FtRi3WdN#U(_P8L$hLWd
k{sKm}R0j6{3^9{?3?&(jCl>%orpcX#GN|e|7`Ctg0Qg}iL;wH)
diff --git a/bin/MCview/PDBfile.js b/bin/MCview/PDBfile.js
index dfc40cc..c6af5ca 100644
--- a/bin/MCview/PDBfile.js
+++ b/bin/MCview/PDBfile.js
@@ -1,320 +1,320 @@
-Clazz.declarePackage ("MCview");
-Clazz.load (["jalview.io.AlignFile"], "MCview.PDBfile", ["MCview.Atom", "$.PDBChain", "jalview.analysis.AlignSeq", "jalview.datamodel.Alignment", "$.AlignmentI", "$.PDBEntry", "jalview.io.FileParse", "jalview.util.MessageManager", "java.awt.Color", "java.io.IOException", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.chains = null;
-this.id = null;
-this.visibleChainAnnotation = false;
-this.$predictSecondaryStructure = true;
-this.externalSecondaryStructure = false;
-Clazz.instantialize (this, arguments);
-}, MCview, "PDBfile", jalview.io.AlignFile);
-Clazz.makeConstructor (c$,
-function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr) {
-Clazz.superConstructor (this, MCview.PDBfile);
-this.visibleChainAnnotation = addAlignmentAnnotations;
-this.$predictSecondaryStructure = predictSecondaryStructure;
-this.externalSecondaryStructure = externalSecStr;
-}, "~B,~B,~B");
-Clazz.makeConstructor (c$,
-function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, file, protocol) {
-Clazz.superConstructor (this, MCview.PDBfile, [false, file, protocol]);
-this.visibleChainAnnotation = addAlignmentAnnotations;
-this.$predictSecondaryStructure = predictSecondaryStructure;
-this.externalSecondaryStructure = externalSecStr;
-this.doParse ();
-}, "~B,~B,~B,~S,~S");
-Clazz.makeConstructor (c$,
-function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, source) {
-Clazz.superConstructor (this, MCview.PDBfile, [false, source]);
-this.visibleChainAnnotation = addAlignmentAnnotations;
-this.$predictSecondaryStructure = predictSecondaryStructure;
-this.externalSecondaryStructure = externalSecStr;
-this.doParse ();
-}, "~B,~B,~B,jalview.io.FileParse");
-Clazz.overrideMethod (c$, "print",
-function () {
-return null;
-});
-Clazz.overrideMethod (c$, "parse",
-function () {
-this.id = this.safeName (this.getDataName ());
-this.chains = new java.util.Vector ();
-var rna = new java.util.ArrayList ();
-var prot = new java.util.ArrayList ();
-var tmpchain;
-var line = null;
-var modelFlag = false;
-var terFlag = false;
-var lastID = "";
-var indexx = 0;
-var atomnam = null;
-try {
-while ((line = this.nextLine ()) != null) {
-if (line.indexOf ("HEADER") == 0) {
-if (line.length > 62) {
-var tid;
-if (line.length > 67) {
-tid = line.substring (62, 67).trim ();
-} else {
-tid = line.substring (62).trim ();
-}if (tid.length > 0) {
-this.id = tid;
-}continue;
-}}if (line.indexOf ("SEQRES") == 0) {
-}if (line.indexOf ("MODEL") == 0) {
-modelFlag = true;
-}if (line.indexOf ("TER") == 0) {
-terFlag = true;
-}if (modelFlag && line.indexOf ("ENDMDL") == 0) {
-break;
-}if (line.indexOf ("ATOM") == 0 || (line.indexOf ("HETATM") == 0 && !terFlag)) {
-terFlag = false;
-atomnam = line.substring (12, 15).trim ();
-if (!atomnam.equals ("CA") && !atomnam.equals ("P")) {
-continue;
-}var tmpatom = new MCview.Atom (line);
-tmpchain = this.findChain (tmpatom.chain);
-if (tmpchain != null) {
-if (tmpatom.resNumIns.trim ().equals (lastID)) {
-continue;
-}tmpchain.atoms.addElement (tmpatom);
-} else {
-tmpchain = new MCview.PDBChain (this.id, tmpatom.chain);
-this.chains.addElement (tmpchain);
-tmpchain.atoms.addElement (tmpatom);
-}lastID = tmpatom.resNumIns.trim ();
-}this.index++;
-}
-this.makeResidueList ();
-this.makeCaBondList ();
-if (this.id == null) {
-this.id = this.inFile.getName ();
-}for (var chain, $chain = this.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {
-var chainseq = this.postProcessChain (chain);
-if (MCview.PDBfile.isRNA (chainseq)) {
-rna.add (chainseq);
-} else {
-prot.add (chainseq);
-}}
-if (this.$predictSecondaryStructure) {
-this.predictSecondaryStructure (rna, prot);
-}} catch (e$$) {
-if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {
-var er = e$$;
-{
-System.out.println ("OUT OF MEMORY LOADING PDB FILE");
-throw new java.io.IOException (jalview.util.MessageManager.getString ("exception.outofmemory_loading_pdb_file"));
-}
-} else if (Clazz.exceptionOf (e$$, NumberFormatException)) {
-var ex = e$$;
-{
-if (line != null) {
-System.err.println ("Couldn't read number from line:");
-System.err.println (line);
-}}
-} else {
-throw e$$;
-}
-}
-this.markCalcIds ();
-});
-Clazz.defineMethod (c$, "predictSecondaryStructure",
-function (rnaSequences, proteinSequences) {
-if (this.externalSecondaryStructure && rnaSequences.size () > 0) {
-try {
-this.processPdbFileWithAnnotate3d (rnaSequences);
-} catch (x) {
-if (Clazz.exceptionOf (x, Exception)) {
-System.err.println ("Exceptions when dealing with RNA in pdb file");
-x.printStackTrace ();
-} else {
-throw x;
-}
-}
-}if (proteinSequences.size () > 0) {
-try {
-this.processPdbFileWithJmol (proteinSequences);
-} catch (x) {
-if (Clazz.exceptionOf (x, Exception)) {
-System.err.println ("Exceptions from Jmol when processing data in pdb file");
-x.printStackTrace ();
-} else {
-throw x;
-}
-}
-}}, "java.util.List,java.util.List");
-Clazz.defineMethod (c$, "postProcessChain",
-function (chain) {
-var dataset = chain.sequence;
-dataset.setName (this.id + "|" + dataset.getName ());
-var entry = new jalview.datamodel.PDBEntry ();
-entry.setId (this.id);
-entry.setType (jalview.datamodel.PDBEntry.Type.PDB);
-entry.setProperty ( new java.util.Hashtable ());
-if (chain.id != null) {
-entry.setChainCode (String.valueOf (chain.id));
-}if (this.inFile != null) {
-entry.setFile (this.inFile.getAbsolutePath ());
-} else {
-entry.setFile (this.getDataName ());
-}dataset.addPDBId (entry);
-var chainseq = dataset.deriveSequence ();
-this.seqs.addElement (chainseq);
-var chainannot = chainseq.getAnnotation ();
-if (chainannot != null && this.visibleChainAnnotation) {
-for (var ai = 0; ai < chainannot.length; ai++) {
-chainannot[ai].visible = this.visibleChainAnnotation;
-this.annotations.addElement (chainannot[ai]);
-}
-}return chainseq;
-}, "MCview.PDBChain");
-c$.isCalcIdHandled = Clazz.defineMethod (c$, "isCalcIdHandled",
-function (calcId) {
-return calcId != null && (MCview.PDBfile.CALC_ID_PREFIX.equals (calcId));
-}, "~S");
-c$.isCalcIdForFile = Clazz.defineMethod (c$, "isCalcIdForFile",
-function (alan, pdbFile) {
-return alan.getCalcId () != null && MCview.PDBfile.CALC_ID_PREFIX.equals (alan.getCalcId ()) && pdbFile.equals (alan.getProperty ("PDBID"));
-}, "jalview.datamodel.AlignmentAnnotation,~S");
-c$.relocateCalcId = Clazz.defineMethod (c$, "relocateCalcId",
-function (calcId, alreadyLoadedPDB) {
-var s = MCview.PDBfile.CALC_ID_PREFIX.length;
-var end = calcId.indexOf (MCview.PDBfile.CALC_ID_PREFIX, s);
-var between = calcId.substring (s, end - 1);
-return MCview.PDBfile.CALC_ID_PREFIX + alreadyLoadedPDB.get (between) + ":" + calcId.substring (end);
-}, "~S,java.util.Hashtable");
-Clazz.defineMethod (c$, "markCalcIds",
-($fz = function () {
-for (var sq, $sq = this.seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
-if (sq.getAnnotation () != null) {
-for (var aa, $aa = 0, $$aa = sq.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
-var oldId = aa.getCalcId ();
-if (oldId == null) {
-oldId = "";
-}aa.setCalcId (MCview.PDBfile.CALC_ID_PREFIX);
-aa.setProperty ("PDBID", this.id);
-aa.setProperty ("oldCalcId", oldId);
-}
-}}
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "processPdbFileWithJmol",
-($fz = function (prot) {
-try {
-var cl = Class.forName ("jalview.ext.jmol.PDBFileWithJmol");
-if (cl != null) {
-var constructor = cl.getConstructor ( Clazz.newArray (-1, [jalview.io.FileParse]));
-var args = Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)]);
-var jmf = constructor.newInstance (args);
-var al = new jalview.datamodel.Alignment (cl.getMethod ("getSeqsAsArray", Clazz.newArray (-1, [])).invoke (jmf, []));
-cl.getMethod ("addAnnotations", Clazz.newArray (-1, [jalview.datamodel.AlignmentI])).invoke (jmf, [al]);
-for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
-if (sq.getDatasetSequence () != null) {
-sq.getDatasetSequence ().getPDBId ().clear ();
-} else {
-sq.getPDBId ().clear ();
-}}
-this.replaceAndUpdateChains (prot, al, "pep", false);
-}} catch (q) {
-if (Clazz.exceptionOf (q, ClassNotFoundException)) {
-} else {
-throw q;
-}
-}
-}, $fz.isPrivate = true, $fz), "java.util.List");
-Clazz.defineMethod (c$, "replaceAndUpdateChains",
-($fz = function (prot, al, pep, b) {
-var replaced = jalview.analysis.AlignSeq.replaceMatchingSeqsWith (this.seqs, this.annotations, prot, al, pep, false);
-for (var ch, $ch = this.chains.iterator (); $ch.hasNext () && ((ch = $ch.next ()) || true);) {
-var p = 0;
-for (var sq, $sq = replaced.get (0).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
-p++;
-if (sq === ch.sequence || sq.getDatasetSequence () === ch.sequence) {
-p = -p;
-break;
-}}
-if (p < 0) {
-p = -p - 1;
-ch.shadow = replaced.get (1).get (p);
-ch.shadowMap = (replaced.get (2).get (p)).getMappingFromS1 (false);
-}}
-}, $fz.isPrivate = true, $fz), "java.util.List,jalview.datamodel.AlignmentI,~S,~B");
-Clazz.defineMethod (c$, "processPdbFileWithAnnotate3d",
-($fz = function (rna) {
-try {
-var cl = Class.forName ("jalview.ws.jws1.Annotate3D");
-if (cl != null) {
-var annotate3d = cl.getConstructor ( Clazz.newArray (-1, [])).newInstance ( Clazz.newArray (-1, []));
-var al = (cl.getMethod ("getRNAMLFor", Clazz.newArray (-1, [jalview.io.FileParse])).invoke (annotate3d, Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)])));
-for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
-if (sq.getDatasetSequence () != null) {
-if (sq.getDatasetSequence ().getPDBId () != null) {
-sq.getDatasetSequence ().getPDBId ().clear ();
-}} else {
-if (sq.getPDBId () != null) {
-sq.getPDBId ().clear ();
-}}}
-this.replaceAndUpdateChains (rna, al, "dna", false);
-}} catch (x) {
-if (Clazz.exceptionOf (x, ClassNotFoundException)) {
-} else {
-throw x;
-}
-}
-;}, $fz.isPrivate = true, $fz), "java.util.List");
-Clazz.defineMethod (c$, "safeName",
-($fz = function (dataName) {
-var p = 0;
-while ((p = dataName.indexOf ("/")) > -1 && p < dataName.length) {
-dataName = dataName.substring (p + 1);
-}
-return dataName;
-}, $fz.isPrivate = true, $fz), "~S");
-Clazz.defineMethod (c$, "makeResidueList",
-function () {
-for (var i = 0; i < this.chains.size (); i++) {
-this.chains.elementAt (i).makeResidueList (this.visibleChainAnnotation);
-}
-});
-Clazz.defineMethod (c$, "makeCaBondList",
-function () {
-for (var i = 0; i < this.chains.size (); i++) {
-this.chains.elementAt (i).makeCaBondList ();
-}
-});
-Clazz.defineMethod (c$, "findChain",
-function (id) {
-for (var i = 0; i < this.chains.size (); i++) {
-if (this.chains.elementAt (i).id.equals (id)) {
-return this.chains.elementAt (i);
-}}
-return null;
-}, "~S");
-Clazz.defineMethod (c$, "setChargeColours",
-function () {
-for (var i = 0; i < this.chains.size (); i++) {
-this.chains.elementAt (i).setChargeColours ();
-}
-});
-Clazz.defineMethod (c$, "setColours",
-function (cs) {
-for (var i = 0; i < this.chains.size (); i++) {
-this.chains.elementAt (i).setChainColours (cs);
-}
-}, "jalview.schemes.ColourSchemeI");
-Clazz.defineMethod (c$, "setChainColours",
-function () {
-for (var i = 0; i < this.chains.size (); i++) {
-this.chains.elementAt (i).setChainColours (java.awt.Color.getHSBColor (1.0 / i, .4, 1.0));
-}
-});
-c$.isRNA = Clazz.defineMethod (c$, "isRNA",
-function (seq) {
-for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
-if ((c != 'A') && (c != 'C') && (c != 'G') && (c != 'U')) {
-return false;
-}}
-return true;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineStatics (c$,
-"CALC_ID_PREFIX", "JalviewPDB");
-});
+Clazz.declarePackage ("MCview");
+Clazz.load (["jalview.io.AlignFile"], "MCview.PDBfile", ["MCview.Atom", "$.PDBChain", "jalview.analysis.AlignSeq", "jalview.datamodel.Alignment", "$.AlignmentI", "$.PDBEntry", "jalview.io.FileParse", "jalview.util.MessageManager", "java.awt.Color", "java.io.IOException", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.chains = null;
+this.id = null;
+this.visibleChainAnnotation = false;
+this.$predictSecondaryStructure = true;
+this.externalSecondaryStructure = false;
+Clazz.instantialize (this, arguments);
+}, MCview, "PDBfile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$,
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr) {
+Clazz.superConstructor (this, MCview.PDBfile);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+}, "~B,~B,~B");
+Clazz.makeConstructor (c$,
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, file, protocol) {
+Clazz.superConstructor (this, MCview.PDBfile, [false, file, protocol]);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+this.doParse ();
+}, "~B,~B,~B,~S,~S");
+Clazz.makeConstructor (c$,
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, source) {
+Clazz.superConstructor (this, MCview.PDBfile, [false, source]);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+this.doParse ();
+}, "~B,~B,~B,jalview.io.FileParse");
+Clazz.overrideMethod (c$, "print",
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "parse",
+function () {
+this.id = this.safeName (this.getDataName ());
+this.chains = new java.util.Vector ();
+var rna = new java.util.ArrayList ();
+var prot = new java.util.ArrayList ();
+var tmpchain;
+var line = null;
+var modelFlag = false;
+var terFlag = false;
+var lastID = "";
+var indexx = 0;
+var atomnam = null;
+try {
+while ((line = this.nextLine ()) != null) {
+if (line.indexOf ("HEADER") == 0) {
+if (line.length > 62) {
+var tid;
+if (line.length > 67) {
+tid = line.substring (62, 67).trim ();
+} else {
+tid = line.substring (62).trim ();
+}if (tid.length > 0) {
+this.id = tid;
+}continue;
+}}if (line.indexOf ("SEQRES") == 0) {
+}if (line.indexOf ("MODEL") == 0) {
+modelFlag = true;
+}if (line.indexOf ("TER") == 0) {
+terFlag = true;
+}if (modelFlag && line.indexOf ("ENDMDL") == 0) {
+break;
+}if (line.indexOf ("ATOM") == 0 || (line.indexOf ("HETATM") == 0 && !terFlag)) {
+terFlag = false;
+atomnam = line.substring (12, 15).trim ();
+if (!atomnam.equals ("CA") && !atomnam.equals ("P")) {
+continue;
+}var tmpatom = new MCview.Atom (line);
+tmpchain = this.findChain (tmpatom.chain);
+if (tmpchain != null) {
+if (tmpatom.resNumIns.trim ().equals (lastID)) {
+continue;
+}tmpchain.atoms.addElement (tmpatom);
+} else {
+tmpchain = new MCview.PDBChain (this.id, tmpatom.chain);
+this.chains.addElement (tmpchain);
+tmpchain.atoms.addElement (tmpatom);
+}lastID = tmpatom.resNumIns.trim ();
+}this.index++;
+}
+this.makeResidueList ();
+this.makeCaBondList ();
+if (this.id == null) {
+this.id = this.inFile.getName ();
+}for (var chain, $chain = this.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {
+var chainseq = this.postProcessChain (chain);
+if (MCview.PDBfile.isRNA (chainseq)) {
+rna.add (chainseq);
+} else {
+prot.add (chainseq);
+}}
+if (this.$predictSecondaryStructure) {
+this.predictSecondaryStructure (rna, prot);
+}} catch (e$$) {
+if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {
+var er = e$$;
+{
+System.out.println ("OUT OF MEMORY LOADING PDB FILE");
+throw new java.io.IOException (jalview.util.MessageManager.getString ("exception.outofmemory_loading_pdb_file"));
+}
+} else if (Clazz.exceptionOf (e$$, NumberFormatException)) {
+var ex = e$$;
+{
+if (line != null) {
+System.err.println ("Couldn't read number from line:");
+System.err.println (line);
+}}
+} else {
+throw e$$;
+}
+}
+this.markCalcIds ();
+});
+Clazz.defineMethod (c$, "predictSecondaryStructure",
+function (rnaSequences, proteinSequences) {
+if (this.externalSecondaryStructure && rnaSequences.size () > 0) {
+try {
+this.processPdbFileWithAnnotate3d (rnaSequences);
+} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+System.err.println ("Exceptions when dealing with RNA in pdb file");
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}if (proteinSequences.size () > 0) {
+try {
+this.processPdbFileWithJmol (proteinSequences);
+} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+System.err.println ("Exceptions from Jmol when processing data in pdb file");
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}}, "java.util.List,java.util.List");
+Clazz.defineMethod (c$, "postProcessChain",
+function (chain) {
+var dataset = chain.sequence;
+dataset.setName (this.id + "|" + dataset.getName ());
+var entry = new jalview.datamodel.PDBEntry ();
+entry.setId (this.id);
+entry.setType (jalview.datamodel.PDBEntry.Type.PDB);
+entry.setProperty ( new java.util.Hashtable ());
+if (chain.id != null) {
+entry.setChainCode (String.valueOf (chain.id));
+}if (this.inFile != null) {
+entry.setFile (this.inFile.getAbsolutePath ());
+} else {
+entry.setFile (this.getDataName ());
+}dataset.addPDBId (entry);
+var chainseq = dataset.deriveSequence ();
+this.seqs.addElement (chainseq);
+var chainannot = chainseq.getAnnotation ();
+if (chainannot != null && this.visibleChainAnnotation) {
+for (var ai = 0; ai < chainannot.length; ai++) {
+chainannot[ai].visible = this.visibleChainAnnotation;
+this.annotations.addElement (chainannot[ai]);
+}
+}return chainseq;
+}, "MCview.PDBChain");
+c$.isCalcIdHandled = Clazz.defineMethod (c$, "isCalcIdHandled",
+function (calcId) {
+return calcId != null && (MCview.PDBfile.CALC_ID_PREFIX.equals (calcId));
+}, "~S");
+c$.isCalcIdForFile = Clazz.defineMethod (c$, "isCalcIdForFile",
+function (alan, pdbFile) {
+return alan.getCalcId () != null && MCview.PDBfile.CALC_ID_PREFIX.equals (alan.getCalcId ()) && pdbFile.equals (alan.getProperty ("PDBID"));
+}, "jalview.datamodel.AlignmentAnnotation,~S");
+c$.relocateCalcId = Clazz.defineMethod (c$, "relocateCalcId",
+function (calcId, alreadyLoadedPDB) {
+var s = MCview.PDBfile.CALC_ID_PREFIX.length;
+var end = calcId.indexOf (MCview.PDBfile.CALC_ID_PREFIX, s);
+var between = calcId.substring (s, end - 1);
+return MCview.PDBfile.CALC_ID_PREFIX + alreadyLoadedPDB.get (between) + ":" + calcId.substring (end);
+}, "~S,java.util.Hashtable");
+Clazz.defineMethod (c$, "markCalcIds",
+($fz = function () {
+for (var sq, $sq = this.seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getAnnotation () != null) {
+for (var aa, $aa = 0, $$aa = sq.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+var oldId = aa.getCalcId ();
+if (oldId == null) {
+oldId = "";
+}aa.setCalcId (MCview.PDBfile.CALC_ID_PREFIX);
+aa.setProperty ("PDBID", this.id);
+aa.setProperty ("oldCalcId", oldId);
+}
+}}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "processPdbFileWithJmol",
+($fz = function (prot) {
+try {
+var cl = Class.forName ("jalview.ext.jmol.PDBFileWithJmol");
+if (cl != null) {
+var constructor = cl.getConstructor ( Clazz.newArray (-1, [jalview.io.FileParse]));
+var args = Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)]);
+var jmf = constructor.newInstance (args);
+var al = new jalview.datamodel.Alignment (cl.getMethod ("getSeqsAsArray", Clazz.newArray (-1, [])).invoke (jmf, []));
+cl.getMethod ("addAnnotations", Clazz.newArray (-1, [jalview.datamodel.AlignmentI])).invoke (jmf, [al]);
+for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getDatasetSequence () != null) {
+sq.getDatasetSequence ().getPDBId ().clear ();
+} else {
+sq.getPDBId ().clear ();
+}}
+this.replaceAndUpdateChains (prot, al, "pep", false);
+}} catch (q) {
+if (Clazz.exceptionOf (q, ClassNotFoundException)) {
+} else {
+throw q;
+}
+}
+}, $fz.isPrivate = true, $fz), "java.util.List");
+Clazz.defineMethod (c$, "replaceAndUpdateChains",
+($fz = function (prot, al, pep, b) {
+var replaced = jalview.analysis.AlignSeq.replaceMatchingSeqsWith (this.seqs, this.annotations, prot, al, pep, false);
+for (var ch, $ch = this.chains.iterator (); $ch.hasNext () && ((ch = $ch.next ()) || true);) {
+var p = 0;
+for (var sq, $sq = replaced.get (0).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+p++;
+if (sq === ch.sequence || sq.getDatasetSequence () === ch.sequence) {
+p = -p;
+break;
+}}
+if (p < 0) {
+p = -p - 1;
+ch.shadow = replaced.get (1).get (p);
+ch.shadowMap = (replaced.get (2).get (p)).getMappingFromS1 (false);
+}}
+}, $fz.isPrivate = true, $fz), "java.util.List,jalview.datamodel.AlignmentI,~S,~B");
+Clazz.defineMethod (c$, "processPdbFileWithAnnotate3d",
+($fz = function (rna) {
+try {
+var cl = Class.forName ("jalview.ws.jws1.Annotate3D");
+if (cl != null) {
+var annotate3d = cl.getConstructor ( Clazz.newArray (-1, [])).newInstance ( Clazz.newArray (-1, []));
+var al = (cl.getMethod ("getRNAMLFor", Clazz.newArray (-1, [jalview.io.FileParse])).invoke (annotate3d, Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)])));
+for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getDatasetSequence () != null) {
+if (sq.getDatasetSequence ().getPDBId () != null) {
+sq.getDatasetSequence ().getPDBId ().clear ();
+}} else {
+if (sq.getPDBId () != null) {
+sq.getPDBId ().clear ();
+}}}
+this.replaceAndUpdateChains (rna, al, "dna", false);
+}} catch (x) {
+if (Clazz.exceptionOf (x, ClassNotFoundException)) {
+} else {
+throw x;
+}
+}
+;}, $fz.isPrivate = true, $fz), "java.util.List");
+Clazz.defineMethod (c$, "safeName",
+($fz = function (dataName) {
+var p = 0;
+while ((p = dataName.indexOf ("/")) > -1 && p < dataName.length) {
+dataName = dataName.substring (p + 1);
+}
+return dataName;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "makeResidueList",
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).makeResidueList (this.visibleChainAnnotation);
+}
+});
+Clazz.defineMethod (c$, "makeCaBondList",
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).makeCaBondList ();
+}
+});
+Clazz.defineMethod (c$, "findChain",
+function (id) {
+for (var i = 0; i < this.chains.size (); i++) {
+if (this.chains.elementAt (i).id.equals (id)) {
+return this.chains.elementAt (i);
+}}
+return null;
+}, "~S");
+Clazz.defineMethod (c$, "setChargeColours",
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChargeColours ();
+}
+});
+Clazz.defineMethod (c$, "setColours",
+function (cs) {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChainColours (cs);
+}
+}, "jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "setChainColours",
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChainColours (java.awt.Color.getHSBColor (1.0 / i, .4, 1.0));
+}
+});
+c$.isRNA = Clazz.defineMethod (c$, "isRNA",
+function (seq) {
+for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if ((c != 'A') && (c != 'C') && (c != 'G') && (c != 'U')) {
+return false;
+}}
+return true;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineStatics (c$,
+"CALC_ID_PREFIX", "JalviewPDB");
+});
diff --git a/bin/MCview/Residue.js b/bin/MCview/Residue.js
index 93e2930..6cb43ed 100644
--- a/bin/MCview/Residue.js
+++ b/bin/MCview/Residue.js
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("MCview");
-c$ = Clazz.decorateAsClass (function () {
-this.atoms = null;
-this.number = 0;
-this.count = 0;
-Clazz.instantialize (this, arguments);
-}, MCview, "Residue");
-Clazz.makeConstructor (c$,
-function (resAtoms, number, count) {
-this.atoms = resAtoms;
-this.number = number;
-this.count = count;
-}, "java.util.Vector,~N,~N");
-Clazz.defineMethod (c$, "findAtom",
-function (name) {
-for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
-if (atom.name.equals (name)) {
-return atom;
-}}
-return null;
-}, "~S");
+Clazz.declarePackage ("MCview");
+c$ = Clazz.decorateAsClass (function () {
+this.atoms = null;
+this.number = 0;
+this.count = 0;
+Clazz.instantialize (this, arguments);
+}, MCview, "Residue");
+Clazz.makeConstructor (c$,
+function (resAtoms, number, count) {
+this.atoms = resAtoms;
+this.number = number;
+this.count = count;
+}, "java.util.Vector,~N,~N");
+Clazz.defineMethod (c$, "findAtom",
+function (name) {
+for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+if (atom.name.equals (name)) {
+return atom;
+}}
+return null;
+}, "~S");
diff --git a/bin/awt2swing/Button.js b/bin/awt2swing/Button.js
index b25baa7..80ce87e 100644
--- a/bin/awt2swing/Button.js
+++ b/bin/awt2swing/Button.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JButton"], "awt2swing.Button", null, function () {
-c$ = Clazz.declareType (awt2swing, "Button", javax.swing.JButton);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JButton"], "awt2swing.Button", null, function () {
+c$ = Clazz.declareType (awt2swing, "Button", javax.swing.JButton);
+});
diff --git a/bin/awt2swing/Canvas.js b/bin/awt2swing/Canvas.js
index df3f0b9..cf449b4 100644
--- a/bin/awt2swing/Canvas.js
+++ b/bin/awt2swing/Canvas.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["awt2swing.Panel"], "awt2swing.Canvas", null, function () {
-c$ = Clazz.declareType (awt2swing, "Canvas", awt2swing.Panel);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["awt2swing.Panel"], "awt2swing.Canvas", null, function () {
+c$ = Clazz.declareType (awt2swing, "Canvas", awt2swing.Panel);
+});
diff --git a/bin/awt2swing/Checkbox.js b/bin/awt2swing/Checkbox.js
index cd50679..cfc477c 100644
--- a/bin/awt2swing/Checkbox.js
+++ b/bin/awt2swing/Checkbox.js
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JCheckBox"], "awt2swing.Checkbox", null, function () {
-c$ = Clazz.declareType (awt2swing, "Checkbox", javax.swing.JCheckBox);
-Clazz.defineMethod (c$, "getState",
-function () {
-return this.isSelected ();
-});
-Clazz.defineMethod (c$, "setState",
-function (b) {
-this.setSelected (b);
-}, "~B");
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JCheckBox"], "awt2swing.Checkbox", null, function () {
+c$ = Clazz.declareType (awt2swing, "Checkbox", javax.swing.JCheckBox);
+Clazz.defineMethod (c$, "getState",
+function () {
+return this.isSelected ();
+});
+Clazz.defineMethod (c$, "setState",
+function (b) {
+this.setSelected (b);
+}, "~B");
+});
diff --git a/bin/awt2swing/CheckboxMenuItem.js b/bin/awt2swing/CheckboxMenuItem.js
index 782c150..9364af7 100644
--- a/bin/awt2swing/CheckboxMenuItem.js
+++ b/bin/awt2swing/CheckboxMenuItem.js
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JCheckBoxMenuItem"], "awt2swing.CheckboxMenuItem", null, function () {
-c$ = Clazz.declareType (awt2swing, "CheckboxMenuItem", javax.swing.JCheckBoxMenuItem);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, awt2swing.CheckboxMenuItem, []);
-});
-Clazz.overrideMethod (c$, "getState",
-function () {
-return this.isSelected ();
-});
-Clazz.overrideMethod (c$, "setState",
-function (tf) {
-this.setSelected (tf);
-}, "~B");
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JCheckBoxMenuItem"], "awt2swing.CheckboxMenuItem", null, function () {
+c$ = Clazz.declareType (awt2swing, "CheckboxMenuItem", javax.swing.JCheckBoxMenuItem);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, awt2swing.CheckboxMenuItem, []);
+});
+Clazz.overrideMethod (c$, "getState",
+function () {
+return this.isSelected ();
+});
+Clazz.overrideMethod (c$, "setState",
+function (tf) {
+this.setSelected (tf);
+}, "~B");
+});
diff --git a/bin/awt2swing/Choice.js b/bin/awt2swing/Choice.js
index a4208b1..0eb2843 100644
--- a/bin/awt2swing/Choice.js
+++ b/bin/awt2swing/Choice.js
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JComboBox"], "awt2swing.Choice", null, function () {
-c$ = Clazz.declareType (awt2swing, "Choice", javax.swing.JComboBox);
-Clazz.defineMethod (c$, "select",
-function (key) {
-this.setSelectedItem (key);
-}, "~O");
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JComboBox"], "awt2swing.Choice", null, function () {
+c$ = Clazz.declareType (awt2swing, "Choice", javax.swing.JComboBox);
+Clazz.defineMethod (c$, "select",
+function (key) {
+this.setSelectedItem (key);
+}, "~O");
+});
diff --git a/bin/awt2swing/Frame.js b/bin/awt2swing/Frame.js
index 027d871..a4e228b 100644
--- a/bin/awt2swing/Frame.js
+++ b/bin/awt2swing/Frame.js
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JFrame"], "awt2swing.Frame", null, function () {
-c$ = Clazz.declareType (awt2swing, "Frame", javax.swing.JFrame);
-Clazz.defineMethod (c$, "remove",
-function (i) {
-{
-this.removeInt(i);
-}}, "~N");
-Clazz.defineMethod (c$, "setMenuBar",
-function (m) {
-this.setJMenuBar (m);
-}, "awt2swing.MenuBar");
-Clazz.defineMethod (c$, "unsetMenuBar",
-function () {
-this.setJMenuBar (null);
-});
-Clazz.defineMethod (c$, "getMenubar",
-function () {
-return this.getJMenuBar ();
-});
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JFrame"], "awt2swing.Frame", null, function () {
+c$ = Clazz.declareType (awt2swing, "Frame", javax.swing.JFrame);
+Clazz.defineMethod (c$, "remove",
+function (i) {
+{
+this.removeInt(i);
+}}, "~N");
+Clazz.defineMethod (c$, "setMenuBar",
+function (m) {
+this.setJMenuBar (m);
+}, "awt2swing.MenuBar");
+Clazz.defineMethod (c$, "unsetMenuBar",
+function () {
+this.setJMenuBar (null);
+});
+Clazz.defineMethod (c$, "getMenubar",
+function () {
+return this.getJMenuBar ();
+});
+});
diff --git a/bin/awt2swing/Label.js b/bin/awt2swing/Label.js
index 380eaf6..713f8b3 100644
--- a/bin/awt2swing/Label.js
+++ b/bin/awt2swing/Label.js
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JLabel"], "awt2swing.Label", null, function () {
-c$ = Clazz.declareType (awt2swing, "Label", javax.swing.JLabel);
-Clazz.defineMethod (c$, "setAlignment",
-function (alignment) {
-this.setAlignmentX (alignment);
-}, "~N");
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JLabel"], "awt2swing.Label", null, function () {
+c$ = Clazz.declareType (awt2swing, "Label", javax.swing.JLabel);
+Clazz.defineMethod (c$, "setAlignment",
+function (alignment) {
+this.setAlignmentX (alignment);
+}, "~N");
+});
diff --git a/bin/awt2swing/Menu.js b/bin/awt2swing/Menu.js
index da1b846..867b6ab 100644
--- a/bin/awt2swing/Menu.js
+++ b/bin/awt2swing/Menu.js
@@ -1,14 +1,14 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JMenu"], "awt2swing.Menu", null, function () {
-c$ = Clazz.declareType (awt2swing, "Menu", javax.swing.JMenu);
-Clazz.makeConstructor (c$,
-function (title) {
-Clazz.superConstructor (this, awt2swing.Menu, [title]);
-title = null;
-}, "~S");
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, awt2swing.Menu);
-var s = null;
-});
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JMenu"], "awt2swing.Menu", null, function () {
+c$ = Clazz.declareType (awt2swing, "Menu", javax.swing.JMenu);
+Clazz.makeConstructor (c$,
+function (title) {
+Clazz.superConstructor (this, awt2swing.Menu, [title]);
+title = null;
+}, "~S");
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, awt2swing.Menu);
+var s = null;
+});
+});
diff --git a/bin/awt2swing/MenuBar.js b/bin/awt2swing/MenuBar.js
index 4865fdd..3b43191 100644
--- a/bin/awt2swing/MenuBar.js
+++ b/bin/awt2swing/MenuBar.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JMenuBar"], "awt2swing.MenuBar", null, function () {
-c$ = Clazz.declareType (awt2swing, "MenuBar", javax.swing.JMenuBar);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JMenuBar"], "awt2swing.MenuBar", null, function () {
+c$ = Clazz.declareType (awt2swing, "MenuBar", javax.swing.JMenuBar);
+});
diff --git a/bin/awt2swing/MenuItem.js b/bin/awt2swing/MenuItem.js
index d20f729..f610760 100644
--- a/bin/awt2swing/MenuItem.js
+++ b/bin/awt2swing/MenuItem.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JMenuItem"], "awt2swing.MenuItem", null, function () {
-c$ = Clazz.declareType (awt2swing, "MenuItem", javax.swing.JMenuItem);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JMenuItem"], "awt2swing.MenuItem", null, function () {
+c$ = Clazz.declareType (awt2swing, "MenuItem", javax.swing.JMenuItem);
+});
diff --git a/bin/awt2swing/Panel.js b/bin/awt2swing/Panel.js
index 5e33047..b6061d0 100644
--- a/bin/awt2swing/Panel.js
+++ b/bin/awt2swing/Panel.js
@@ -1,9 +1,9 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JPanel"], "awt2swing.Panel", null, function () {
-c$ = Clazz.declareType (awt2swing, "Panel", javax.swing.JPanel);
-Clazz.defineMethod (c$, "setName",
-function (name) {
-System.out.println (name);
-Clazz.superCall (this, awt2swing.Panel, "setName", [name]);
-}, "~S");
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JPanel"], "awt2swing.Panel", null, function () {
+c$ = Clazz.declareType (awt2swing, "Panel", javax.swing.JPanel);
+Clazz.defineMethod (c$, "setName",
+function (name) {
+System.out.println (name);
+Clazz.superCall (this, awt2swing.Panel, "setName", [name]);
+}, "~S");
+});
diff --git a/bin/awt2swing/PopupMenu.js b/bin/awt2swing/PopupMenu.js
index 007642a..4af0e16 100644
--- a/bin/awt2swing/PopupMenu.js
+++ b/bin/awt2swing/PopupMenu.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JPopupMenu"], "awt2swing.PopupMenu", null, function () {
-c$ = Clazz.declareType (awt2swing, "PopupMenu", javax.swing.JPopupMenu);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JPopupMenu"], "awt2swing.PopupMenu", null, function () {
+c$ = Clazz.declareType (awt2swing, "PopupMenu", javax.swing.JPopupMenu);
+});
diff --git a/bin/awt2swing/ScrollPane.js b/bin/awt2swing/ScrollPane.js
index 2ea1cea..3ba78cf 100644
--- a/bin/awt2swing/ScrollPane.js
+++ b/bin/awt2swing/ScrollPane.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JScrollPane"], "awt2swing.ScrollPane", null, function () {
-c$ = Clazz.declareType (awt2swing, "ScrollPane", javax.swing.JScrollPane);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JScrollPane"], "awt2swing.ScrollPane", null, function () {
+c$ = Clazz.declareType (awt2swing, "ScrollPane", javax.swing.JScrollPane);
+});
diff --git a/bin/awt2swing/Scrollbar.js b/bin/awt2swing/Scrollbar.js
index b68bd0c..3859a96 100644
--- a/bin/awt2swing/Scrollbar.js
+++ b/bin/awt2swing/Scrollbar.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JScrollBar"], "awt2swing.Scrollbar", null, function () {
-c$ = Clazz.declareType (awt2swing, "Scrollbar", javax.swing.JScrollBar);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JScrollBar"], "awt2swing.Scrollbar", null, function () {
+c$ = Clazz.declareType (awt2swing, "Scrollbar", javax.swing.JScrollBar);
+});
diff --git a/bin/awt2swing/TextArea.js b/bin/awt2swing/TextArea.js
index 3aec891..4358c37 100644
--- a/bin/awt2swing/TextArea.js
+++ b/bin/awt2swing/TextArea.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JTextArea"], "awt2swing.TextArea", null, function () {
-c$ = Clazz.declareType (awt2swing, "TextArea", javax.swing.JTextArea);
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JTextArea"], "awt2swing.TextArea", null, function () {
+c$ = Clazz.declareType (awt2swing, "TextArea", javax.swing.JTextArea);
+});
diff --git a/bin/awt2swing/TextField.js b/bin/awt2swing/TextField.js
index e8c1558..ef48b75 100644
--- a/bin/awt2swing/TextField.js
+++ b/bin/awt2swing/TextField.js
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("awt2swing");
-Clazz.load (["javax.swing.JTextField"], "awt2swing.TextField", ["java.awt.event.TextEvent", "javax.swing.event.DocumentListener"], function () {
-c$ = Clazz.declareType (awt2swing, "TextField", javax.swing.JTextField);
-Clazz.defineMethod (c$, "addTextListener",
-function (textListener) {
-this.getDocument ().addDocumentListener (((Clazz.isClassDefined ("awt2swing.TextField$1") ? 0 : awt2swing.TextField.$TextField$1$ ()), Clazz.innerTypeInstance (awt2swing.TextField$1, this, Clazz.cloneFinals ("textListener", textListener))));
-}, "java.awt.event.TextListener");
-c$.$TextField$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (awt2swing, "TextField$1", null, javax.swing.event.DocumentListener);
-Clazz.overrideMethod (c$, "insertUpdate",
-function (e) {
-}, "javax.swing.event.DocumentEvent");
-Clazz.overrideMethod (c$, "removeUpdate",
-function (e) {
-}, "javax.swing.event.DocumentEvent");
-Clazz.overrideMethod (c$, "changedUpdate",
-function (e) {
-this.f$.textListener.textValueChanged ( new java.awt.event.TextEvent (this, 0));
-}, "javax.swing.event.DocumentEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JTextField"], "awt2swing.TextField", ["java.awt.event.TextEvent", "javax.swing.event.DocumentListener"], function () {
+c$ = Clazz.declareType (awt2swing, "TextField", javax.swing.JTextField);
+Clazz.defineMethod (c$, "addTextListener",
+function (textListener) {
+this.getDocument ().addDocumentListener (((Clazz.isClassDefined ("awt2swing.TextField$1") ? 0 : awt2swing.TextField.$TextField$1$ ()), Clazz.innerTypeInstance (awt2swing.TextField$1, this, Clazz.cloneFinals ("textListener", textListener))));
+}, "java.awt.event.TextListener");
+c$.$TextField$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (awt2swing, "TextField$1", null, javax.swing.event.DocumentListener);
+Clazz.overrideMethod (c$, "insertUpdate",
+function (e) {
+}, "javax.swing.event.DocumentEvent");
+Clazz.overrideMethod (c$, "removeUpdate",
+function (e) {
+}, "javax.swing.event.DocumentEvent");
+Clazz.overrideMethod (c$, "changedUpdate",
+function (e) {
+this.f$.textListener.textValueChanged ( new java.awt.event.TextEvent (this, 0));
+}, "javax.swing.event.DocumentEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/com/stevesoft/pat/AmpersandRule.js b/bin/com/stevesoft/pat/AmpersandRule.js
index ac1ce77..6d1f622 100644
--- a/bin/com/stevesoft/pat/AmpersandRule.js
+++ b/bin/com/stevesoft/pat/AmpersandRule.js
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.AmpersandRule", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "AmpersandRule", com.stevesoft.pat.ReplaceRule);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.AmpersandRule, []);
-});
-Clazz.overrideMethod (c$, "apply",
-function (sb, res) {
-sb.append (res.stringMatched ());
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "$&";
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.AmpersandRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "AmpersandRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.AmpersandRule, []);
+});
+Clazz.overrideMethod (c$, "apply",
+function (sb, res) {
+sb.append (res.stringMatched ());
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "$&";
+});
+});
diff --git a/bin/com/stevesoft/pat/Any.js b/bin/com/stevesoft/pat/Any.js
index f129d92..503de21 100644
--- a/bin/com/stevesoft/pat/Any.js
+++ b/bin/com/stevesoft/pat/Any.js
@@ -1,30 +1,30 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Any", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "Any", com.stevesoft.pat.Pattern);
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-if (pos < pt.src.length ()) {
-if (pt.dotDoesntMatchCR) {
-if (pt.src.charAt (pos) != '\n') {
-return this.nextMatch (pos + 1, pt);
-}} else {
-return this.nextMatch (pos + 1, pt);
-}}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "." + this.nextString ();
-});
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.Any ();
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Any", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "Any", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+if (pos < pt.src.length ()) {
+if (pt.dotDoesntMatchCR) {
+if (pt.src.charAt (pos) != '\n') {
+return this.nextMatch (pos + 1, pt);
+}} else {
+return this.nextMatch (pos + 1, pt);
+}}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "." + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.Any ();
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/BackG.js b/bin/com/stevesoft/pat/BackG.js
index 28d17cd..a9d07b7 100644
--- a/bin/com/stevesoft/pat/BackG.js
+++ b/bin/com/stevesoft/pat/BackG.js
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackG", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.c = '\0';
-this.altc = '\0';
-this.altc2 = '\0';
-this.mask = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "BackG", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.BackG, []);
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-return pos == pt.lastPos ? this.nextMatch (pos, pt) : -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "\\G" + this.nextString ();
-});
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.BackG ();
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackG", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = '\0';
+this.altc = '\0';
+this.altc2 = '\0';
+this.mask = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "BackG", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.BackG, []);
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+return pos == pt.lastPos ? this.nextMatch (pos, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "\\G" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.BackG ();
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/BackMatch.js b/bin/com/stevesoft/pat/BackMatch.js
index 018cdda..f3a2ea9 100644
--- a/bin/com/stevesoft/pat/BackMatch.js
+++ b/bin/com/stevesoft/pat/BackMatch.js
@@ -1,36 +1,36 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackMatch", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.id = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "BackMatch", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function (id) {
-Clazz.superConstructor (this, com.stevesoft.pat.BackMatch, []);
-this.id = id;
-}, "~N");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "\\" + (this.id) + this.nextString ();
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, p) {
-var i1 = p.marks[this.id];
-var i2 = p.marks[this.id + p.nMarks];
-var imax = i2 - i1;
-if (i1 < 0 || imax < 0 || pos + imax > p.src.length ()) {
-return -1;
-}var ns = p.src.length () - pos;
-if (imax < ns) {
-ns = imax;
-}for (var i = 0; i < ns; i++) {
-if (p.src.charAt (i + i1) != p.src.charAt (pos + i)) {
-return -1;
-}}
-return this.nextMatch (pos + imax, p);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.BackMatch (this.id);
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackMatch", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "BackMatch", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function (id) {
+Clazz.superConstructor (this, com.stevesoft.pat.BackMatch, []);
+this.id = id;
+}, "~N");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "\\" + (this.id) + this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, p) {
+var i1 = p.marks[this.id];
+var i2 = p.marks[this.id + p.nMarks];
+var imax = i2 - i1;
+if (i1 < 0 || imax < 0 || pos + imax > p.src.length ()) {
+return -1;
+}var ns = p.src.length () - pos;
+if (imax < ns) {
+ns = imax;
+}for (var i = 0; i < ns; i++) {
+if (p.src.charAt (i + i1) != p.src.charAt (pos + i)) {
+return -1;
+}}
+return this.nextMatch (pos + imax, p);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.BackMatch (this.id);
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/BackRefRule.js b/bin/com/stevesoft/pat/BackRefRule.js
index d6a1e2e..f744c08 100644
--- a/bin/com/stevesoft/pat/BackRefRule.js
+++ b/bin/com/stevesoft/pat/BackRefRule.js
@@ -1,25 +1,25 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.BackRefRule", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.n = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "BackRefRule", com.stevesoft.pat.ReplaceRule);
-Clazz.makeConstructor (c$,
-function (n) {
-Clazz.superConstructor (this, com.stevesoft.pat.BackRefRule, []);
-this.n = n;
-}, "~N");
-Clazz.overrideMethod (c$, "apply",
-function (sb, res) {
-var x = res.stringMatchedI (this.n);
-sb.append (x == null ? "" : x);
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "$" + this.n;
-});
-Clazz.overrideMethod (c$, "clone1",
-function () {
-return new com.stevesoft.pat.BackRefRule (this.n);
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.BackRefRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.n = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "BackRefRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$,
+function (n) {
+Clazz.superConstructor (this, com.stevesoft.pat.BackRefRule, []);
+this.n = n;
+}, "~N");
+Clazz.overrideMethod (c$, "apply",
+function (sb, res) {
+var x = res.stringMatchedI (this.n);
+sb.append (x == null ? "" : x);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "$" + this.n;
+});
+Clazz.overrideMethod (c$, "clone1",
+function () {
+return new com.stevesoft.pat.BackRefRule (this.n);
+});
+});
diff --git a/bin/com/stevesoft/pat/Backup.js b/bin/com/stevesoft/pat/Backup.js
index f155142..3063b71 100644
--- a/bin/com/stevesoft/pat/Backup.js
+++ b/bin/com/stevesoft/pat/Backup.js
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Backup", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.bk = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Backup", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function (ii) {
-Clazz.superConstructor (this, com.stevesoft.pat.Backup, []);
-this.bk = ii;
-}, "~N");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "(?" + (this.bk < 0 ? ">" + (-this.bk) : "<" + this.bk) + ")" + this.nextString ();
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-if (pos < this.bk) {
-return -1;
-}return this.nextMatch (pos - this.bk, pt);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (-this.bk);
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (-this.bk);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.Backup (this.bk);
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Backup", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.bk = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Backup", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function (ii) {
+Clazz.superConstructor (this, com.stevesoft.pat.Backup, []);
+this.bk = ii;
+}, "~N");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "(?" + (this.bk < 0 ? ">" + (-this.bk) : "<" + this.bk) + ")" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+if (pos < this.bk) {
+return -1;
+}return this.nextMatch (pos - this.bk, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (-this.bk);
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (-this.bk);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.Backup (this.bk);
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/BasicStringBufferLike.js b/bin/com/stevesoft/pat/BasicStringBufferLike.js
index f4df37f..c492d08 100644
--- a/bin/com/stevesoft/pat/BasicStringBufferLike.js
+++ b/bin/com/stevesoft/pat/BasicStringBufferLike.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.declareInterface (com.stevesoft.pat, "BasicStringBufferLike");
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.declareInterface (com.stevesoft.pat, "BasicStringBufferLike");
diff --git a/bin/com/stevesoft/pat/Bits.js b/bin/com/stevesoft/pat/Bits.js
index ec8b74c..61bb0fd 100644
--- a/bin/com/stevesoft/pat/Bits.js
+++ b/bin/com/stevesoft/pat/Bits.js
@@ -1,2958 +1,2958 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-c$ = Clazz.decorateAsClass (function () {
-this.carray = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Bits");
-Clazz.makeConstructor (c$,
-function (carray) {
-this.carray = carray;
-}, "~A");
-Clazz.defineMethod (c$, "get",
-function (i) {
-return ((this.carray[i >> 4]).charCodeAt (0) & (1 << (i & 15))) != 0;
-}, "~N");
-Clazz.defineMethod (c$, "set",
-function (i, b) {
-if (b) {
-this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) | ((String.fromCharCode (1)).charCodeAt (0) << (i & 15)));
-} else {
-this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) & (String.fromCharCode (~(1 << (i & 15)))).charCodeAt (0));
-}}, "~N,~B");
-c$.upper_f = Clazz.defineMethod (c$, "upper_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.upper = new com.stevesoft.pat.Bits (data);
-data[4] = String.fromCharCode (0xfffe);
-data[5] = String.fromCharCode (0x07ff);
-data[12] = String.fromCharCode (0xffff);
-data[13] = String.fromCharCode (0x7f7f);
-data[16] = String.fromCharCode (0x5555);
-data[17] = String.fromCharCode (0x5555);
-data[18] = String.fromCharCode (0x5555);
-data[19] = String.fromCharCode (0xaa55);
-data[20] = String.fromCharCode (0x54aa);
-data[21] = String.fromCharCode (0x5555);
-data[22] = String.fromCharCode (0x5555);
-data[23] = String.fromCharCode (0x2b55);
-data[24] = String.fromCharCode (0xced6);
-data[25] = String.fromCharCode (0xb1db);
-data[26] = String.fromCharCode (0xd2d5);
-data[27] = String.fromCharCode (0x11ae);
-data[28] = String.fromCharCode (0xa490);
-data[29] = String.fromCharCode (0x4aaa);
-data[30] = String.fromCharCode (0x5555);
-data[31] = String.fromCharCode (0x5412);
-data[32] = String.fromCharCode (0x5555);
-data[33] = 'U';
-data[56] = String.fromCharCode (0xd740);
-data[57] = String.fromCharCode (0xfffe);
-data[58] = String.fromCharCode (0x0ffb);
-data[61] = String.fromCharCode (0x541c);
-data[62] = String.fromCharCode (0x5555);
-data[64] = String.fromCharCode (0xdffe);
-data[65] = String.fromCharCode (0xffff);
-data[66] = String.fromCharCode (0xffff);
-data[70] = String.fromCharCode (0x5555);
-data[71] = String.fromCharCode (0x5555);
-data[72] = String.fromCharCode (0x0001);
-data[73] = String.fromCharCode (0x5555);
-data[74] = String.fromCharCode (0x5555);
-data[75] = String.fromCharCode (0x5555);
-data[76] = String.fromCharCode (0x088a);
-data[77] = String.fromCharCode (0x5555);
-data[78] = String.fromCharCode (0x4555);
-data[79] = String.fromCharCode (0x0115);
-data[83] = String.fromCharCode (0xfffe);
-data[84] = String.fromCharCode (0xffff);
-data[85] = String.fromCharCode (0x007f);
-data[266] = String.fromCharCode (0xffff);
-data[267] = String.fromCharCode (0xffff);
-data[268] = String.fromCharCode (0x003f);
-data[480] = String.fromCharCode (0x5555);
-data[481] = String.fromCharCode (0x5555);
-data[482] = String.fromCharCode (0x5555);
-data[483] = String.fromCharCode (0x5555);
-data[484] = String.fromCharCode (0x5555);
-data[485] = String.fromCharCode (0x5555);
-data[486] = String.fromCharCode (0x5555);
-data[487] = String.fromCharCode (0x5555);
-data[488] = String.fromCharCode (0x5555);
-data[489] = String.fromCharCode (0x0015);
-data[490] = String.fromCharCode (0x5555);
-data[491] = String.fromCharCode (0x5555);
-data[492] = String.fromCharCode (0x5555);
-data[493] = String.fromCharCode (0x5555);
-data[494] = String.fromCharCode (0x5555);
-data[495] = String.fromCharCode (0x0155);
-data[496] = String.fromCharCode (0xff00);
-data[497] = String.fromCharCode (0x3f00);
-data[498] = String.fromCharCode (0xff00);
-data[499] = String.fromCharCode (0xff00);
-data[500] = String.fromCharCode (0x3f00);
-data[501] = String.fromCharCode (0xaa00);
-data[502] = String.fromCharCode (0xff00);
-data[504] = String.fromCharCode (0xff00);
-data[505] = String.fromCharCode (0xff00);
-data[506] = String.fromCharCode (0xff00);
-data[507] = String.fromCharCode (0x5f00);
-data[508] = String.fromCharCode (0x1f00);
-data[509] = String.fromCharCode (0x0f00);
-data[510] = String.fromCharCode (0x1f00);
-data[511] = String.fromCharCode (0x1f00);
-data[528] = String.fromCharCode (0x3884);
-data[529] = String.fromCharCode (0x3f27);
-data[530] = String.fromCharCode (0x3d50);
-data[531] = String.fromCharCode (0x000b);
-data[4082] = String.fromCharCode (0xfffe);
-data[4083] = String.fromCharCode (0x07ff);
-data[4100] = String.fromCharCode (0xfffe);
-data[4101] = String.fromCharCode (0x07ff);
-data[4108] = String.fromCharCode (0xffff);
-data[4109] = String.fromCharCode (0x7f7f);
-data[4112] = String.fromCharCode (0x5555);
-data[4113] = String.fromCharCode (0x5555);
-data[4114] = String.fromCharCode (0x5555);
-data[4115] = String.fromCharCode (0xaa55);
-data[4116] = String.fromCharCode (0x54aa);
-data[4117] = String.fromCharCode (0x5555);
-data[4118] = String.fromCharCode (0x5555);
-data[4119] = String.fromCharCode (0x2b55);
-data[4120] = String.fromCharCode (0xced6);
-data[4121] = String.fromCharCode (0xb1db);
-data[4122] = String.fromCharCode (0xd2d5);
-data[4123] = String.fromCharCode (0x11ae);
-data[4124] = String.fromCharCode (0xa490);
-data[4125] = String.fromCharCode (0x4aaa);
-data[4126] = String.fromCharCode (0x5555);
-data[4127] = String.fromCharCode (0x5412);
-data[4128] = String.fromCharCode (0x5555);
-data[4129] = 'U';
-data[4152] = String.fromCharCode (0xd740);
-data[4153] = String.fromCharCode (0xfffe);
-data[4154] = String.fromCharCode (0x0ffb);
-data[4157] = String.fromCharCode (0x541c);
-data[4158] = 'U';
-});
-c$.lower_f = Clazz.defineMethod (c$, "lower_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.lower = new com.stevesoft.pat.Bits (data);
-data[6] = String.fromCharCode (0xfffe);
-data[7] = String.fromCharCode (0x07ff);
-data[10] = String.fromCharCode (0x0400);
-data[11] = String.fromCharCode (0x0420);
-data[13] = String.fromCharCode (0x8000);
-data[14] = String.fromCharCode (0xffff);
-data[15] = String.fromCharCode (0xff7f);
-data[16] = String.fromCharCode (0xaaaa);
-data[17] = String.fromCharCode (0xaaaa);
-data[18] = String.fromCharCode (0xaaaa);
-data[19] = String.fromCharCode (0x55aa);
-data[20] = String.fromCharCode (0xab55);
-data[21] = String.fromCharCode (0xaaaa);
-data[22] = String.fromCharCode (0xaaaa);
-data[23] = String.fromCharCode (0xd4aa);
-data[24] = String.fromCharCode (0x3129);
-data[25] = String.fromCharCode (0x4e24);
-data[26] = String.fromCharCode (0x292a);
-data[27] = String.fromCharCode (0x2651);
-data[28] = String.fromCharCode (0x5240);
-data[29] = String.fromCharCode (0xb555);
-data[30] = String.fromCharCode (0xaaaa);
-data[31] = String.fromCharCode (0xa829);
-data[32] = String.fromCharCode (0xaaaa);
-data[33] = String.fromCharCode (0x00aa);
-data[37] = String.fromCharCode (0xffff);
-data[38] = String.fromCharCode (0xffff);
-data[39] = String.fromCharCode (0xffff);
-data[40] = String.fromCharCode (0xffff);
-data[41] = String.fromCharCode (0xffff);
-data[42] = String.fromCharCode (0x01ff);
-data[57] = String.fromCharCode (0x0001);
-data[58] = String.fromCharCode (0xf000);
-data[59] = String.fromCharCode (0xffff);
-data[60] = String.fromCharCode (0x7fff);
-data[61] = 'c';
-data[62] = String.fromCharCode (0xaaa8);
-data[63] = String.fromCharCode (0x0007);
-data[67] = String.fromCharCode (0xffff);
-data[68] = String.fromCharCode (0xffff);
-data[69] = String.fromCharCode (0xdffe);
-data[70] = String.fromCharCode (0xaaaa);
-data[71] = String.fromCharCode (0xaaaa);
-data[72] = String.fromCharCode (0x0002);
-data[73] = String.fromCharCode (0xaaaa);
-data[74] = String.fromCharCode (0xaaaa);
-data[75] = String.fromCharCode (0xaaaa);
-data[76] = String.fromCharCode (0x1114);
-data[77] = String.fromCharCode (0xaaaa);
-data[78] = String.fromCharCode (0x8aaa);
-data[79] = String.fromCharCode (0x022a);
-data[86] = String.fromCharCode (0xfffe);
-data[87] = String.fromCharCode (0xffff);
-data[88] = String.fromCharCode (0x00ff);
-data[269] = String.fromCharCode (0xffff);
-data[270] = String.fromCharCode (0xffff);
-data[271] = String.fromCharCode (0x007f);
-data[480] = String.fromCharCode (0xaaaa);
-data[481] = String.fromCharCode (0xaaaa);
-data[482] = String.fromCharCode (0xaaaa);
-data[483] = String.fromCharCode (0xaaaa);
-data[484] = String.fromCharCode (0xaaaa);
-data[485] = String.fromCharCode (0xaaaa);
-data[486] = String.fromCharCode (0xaaaa);
-data[487] = String.fromCharCode (0xaaaa);
-data[488] = String.fromCharCode (0xaaaa);
-data[489] = String.fromCharCode (0x0fea);
-data[490] = String.fromCharCode (0xaaaa);
-data[491] = String.fromCharCode (0xaaaa);
-data[492] = String.fromCharCode (0xaaaa);
-data[493] = String.fromCharCode (0xaaaa);
-data[494] = String.fromCharCode (0xaaaa);
-data[495] = String.fromCharCode (0x02aa);
-data[496] = String.fromCharCode (0x00ff);
-data[497] = String.fromCharCode (0x003f);
-data[498] = String.fromCharCode (0x00ff);
-data[499] = String.fromCharCode (0x00ff);
-data[500] = String.fromCharCode (0x003f);
-data[501] = String.fromCharCode (0x00ff);
-data[502] = String.fromCharCode (0x00ff);
-data[503] = String.fromCharCode (0x3fff);
-data[504] = String.fromCharCode (0x00ff);
-data[505] = String.fromCharCode (0x00ff);
-data[506] = String.fromCharCode (0x00ff);
-data[507] = String.fromCharCode (0x00df);
-data[508] = String.fromCharCode (0x00dc);
-data[509] = String.fromCharCode (0x00cf);
-data[510] = String.fromCharCode (0x00ff);
-data[511] = String.fromCharCode (0x00dc);
-data[519] = String.fromCharCode (0x8000);
-data[528] = String.fromCharCode (0xc400);
-data[529] = String.fromCharCode (0x0008);
-data[530] = String.fromCharCode (0xc000);
-data[531] = String.fromCharCode (0x0010);
-data[4016] = String.fromCharCode (0x007f);
-data[4017] = String.fromCharCode (0x00f8);
-data[4084] = String.fromCharCode (0xfffe);
-data[4085] = String.fromCharCode (0x07ff);
-data[4102] = String.fromCharCode (0xfffe);
-data[4103] = String.fromCharCode (0x07ff);
-data[4106] = String.fromCharCode (0x0400);
-data[4107] = String.fromCharCode (0x0420);
-data[4109] = String.fromCharCode (0x8000);
-data[4110] = String.fromCharCode (0xffff);
-data[4111] = String.fromCharCode (0xff7f);
-data[4112] = String.fromCharCode (0xaaaa);
-data[4113] = String.fromCharCode (0xaaaa);
-data[4114] = String.fromCharCode (0xaaaa);
-data[4115] = String.fromCharCode (0x55aa);
-data[4116] = String.fromCharCode (0xab55);
-data[4117] = String.fromCharCode (0xaaaa);
-data[4118] = String.fromCharCode (0xaaaa);
-data[4119] = String.fromCharCode (0xd4aa);
-data[4120] = String.fromCharCode (0x3129);
-data[4121] = String.fromCharCode (0x4e24);
-data[4122] = String.fromCharCode (0x292a);
-data[4123] = String.fromCharCode (0x2651);
-data[4124] = String.fromCharCode (0x5240);
-data[4125] = String.fromCharCode (0xb555);
-data[4126] = String.fromCharCode (0xaaaa);
-data[4127] = String.fromCharCode (0xa829);
-data[4128] = String.fromCharCode (0xaaaa);
-data[4129] = String.fromCharCode (0x00aa);
-data[4133] = String.fromCharCode (0xffff);
-data[4134] = String.fromCharCode (0xffff);
-data[4135] = String.fromCharCode (0xffff);
-data[4136] = String.fromCharCode (0xffff);
-data[4137] = String.fromCharCode (0xffff);
-data[4138] = String.fromCharCode (0x01ff);
-data[4153] = String.fromCharCode (0x0001);
-data[4154] = String.fromCharCode (0xf000);
-data[4155] = String.fromCharCode (0xffff);
-data[4156] = String.fromCharCode (0x7fff);
-data[4157] = 'c';
-data[4158] = String.fromCharCode (0x00a8);
-});
-c$.title_f = Clazz.defineMethod (c$, "title_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.title = new com.stevesoft.pat.Bits (data);
-data[6] = String.fromCharCode (0xfffe);
-data[7] = String.fromCharCode (0x07ff);
-data[10] = String.fromCharCode (0x0400);
-data[11] = String.fromCharCode (0x0420);
-data[13] = String.fromCharCode (0x8000);
-data[14] = String.fromCharCode (0xffff);
-data[15] = String.fromCharCode (0xff7f);
-data[16] = String.fromCharCode (0xaaaa);
-data[17] = String.fromCharCode (0xaaaa);
-data[18] = String.fromCharCode (0xaaaa);
-data[19] = String.fromCharCode (0x55aa);
-data[20] = String.fromCharCode (0xab55);
-data[21] = String.fromCharCode (0xaaaa);
-data[22] = String.fromCharCode (0xaaaa);
-data[23] = String.fromCharCode (0xd4aa);
-data[24] = String.fromCharCode (0x3129);
-data[25] = String.fromCharCode (0x4e24);
-data[26] = String.fromCharCode (0x292a);
-data[27] = String.fromCharCode (0x2651);
-data[28] = String.fromCharCode (0x5240);
-data[29] = String.fromCharCode (0xb555);
-data[30] = String.fromCharCode (0xaaaa);
-data[31] = String.fromCharCode (0xa829);
-data[32] = String.fromCharCode (0xaaaa);
-data[33] = String.fromCharCode (0x00aa);
-data[37] = String.fromCharCode (0xffff);
-data[38] = String.fromCharCode (0xffff);
-data[39] = String.fromCharCode (0xffff);
-data[40] = String.fromCharCode (0xffff);
-data[41] = String.fromCharCode (0xffff);
-data[42] = String.fromCharCode (0x01ff);
-data[57] = String.fromCharCode (0x0001);
-data[58] = String.fromCharCode (0xf000);
-data[59] = String.fromCharCode (0xffff);
-data[60] = String.fromCharCode (0x7fff);
-data[61] = 'c';
-data[62] = String.fromCharCode (0xaaa8);
-data[63] = String.fromCharCode (0x0007);
-data[67] = String.fromCharCode (0xffff);
-data[68] = String.fromCharCode (0xffff);
-data[69] = String.fromCharCode (0xdffe);
-data[70] = String.fromCharCode (0xaaaa);
-data[71] = String.fromCharCode (0xaaaa);
-data[72] = String.fromCharCode (0x0002);
-data[73] = String.fromCharCode (0xaaaa);
-data[74] = String.fromCharCode (0xaaaa);
-data[75] = String.fromCharCode (0xaaaa);
-data[76] = String.fromCharCode (0x1114);
-data[77] = String.fromCharCode (0xaaaa);
-data[78] = String.fromCharCode (0x8aaa);
-data[79] = String.fromCharCode (0x022a);
-data[86] = String.fromCharCode (0xfffe);
-data[87] = String.fromCharCode (0xffff);
-data[88] = String.fromCharCode (0x00ff);
-data[269] = String.fromCharCode (0xffff);
-data[270] = String.fromCharCode (0xffff);
-data[271] = String.fromCharCode (0x007f);
-data[480] = String.fromCharCode (0xaaaa);
-data[481] = String.fromCharCode (0xaaaa);
-data[482] = String.fromCharCode (0xaaaa);
-data[483] = String.fromCharCode (0xaaaa);
-data[484] = String.fromCharCode (0xaaaa);
-data[485] = String.fromCharCode (0xaaaa);
-data[486] = String.fromCharCode (0xaaaa);
-data[487] = String.fromCharCode (0xaaaa);
-data[488] = String.fromCharCode (0xaaaa);
-data[489] = String.fromCharCode (0x0fea);
-data[490] = String.fromCharCode (0xaaaa);
-data[491] = String.fromCharCode (0xaaaa);
-data[492] = String.fromCharCode (0xaaaa);
-data[493] = String.fromCharCode (0xaaaa);
-data[494] = String.fromCharCode (0xaaaa);
-data[495] = String.fromCharCode (0x02aa);
-data[496] = String.fromCharCode (0x00ff);
-data[497] = String.fromCharCode (0x003f);
-data[498] = String.fromCharCode (0x00ff);
-data[499] = String.fromCharCode (0x00ff);
-data[500] = String.fromCharCode (0x003f);
-data[501] = String.fromCharCode (0x00ff);
-data[502] = String.fromCharCode (0x00ff);
-data[503] = String.fromCharCode (0x3fff);
-data[504] = String.fromCharCode (0x00ff);
-data[505] = String.fromCharCode (0x00ff);
-data[506] = String.fromCharCode (0x00ff);
-data[507] = String.fromCharCode (0x00df);
-data[508] = String.fromCharCode (0x00dc);
-data[509] = String.fromCharCode (0x00cf);
-data[510] = String.fromCharCode (0x00ff);
-data[511] = String.fromCharCode (0x00dc);
-data[519] = String.fromCharCode (0x8000);
-data[528] = String.fromCharCode (0xc400);
-data[529] = String.fromCharCode (0x0008);
-data[530] = String.fromCharCode (0xc000);
-data[531] = String.fromCharCode (0x0010);
-data[4016] = String.fromCharCode (0x007f);
-data[4017] = String.fromCharCode (0x00f8);
-data[4084] = String.fromCharCode (0xfffe);
-data[4085] = String.fromCharCode (0x07ff);
-data[4102] = String.fromCharCode (0xfffe);
-data[4103] = String.fromCharCode (0x07ff);
-data[4106] = String.fromCharCode (0x0400);
-data[4107] = String.fromCharCode (0x0420);
-data[4109] = String.fromCharCode (0x8000);
-data[4110] = String.fromCharCode (0xffff);
-data[4111] = String.fromCharCode (0xff7f);
-data[4112] = String.fromCharCode (0xaaaa);
-data[4113] = String.fromCharCode (0xaaaa);
-data[4114] = String.fromCharCode (0xaaaa);
-data[4115] = String.fromCharCode (0x55aa);
-data[4116] = String.fromCharCode (0xab55);
-data[4117] = String.fromCharCode (0xaaaa);
-data[4118] = String.fromCharCode (0xaaaa);
-data[4119] = String.fromCharCode (0xd4aa);
-data[4120] = String.fromCharCode (0x3129);
-data[4121] = String.fromCharCode (0x4e24);
-data[4122] = String.fromCharCode (0x292a);
-data[4123] = String.fromCharCode (0x2651);
-data[4124] = String.fromCharCode (0x5240);
-data[4125] = String.fromCharCode (0xb555);
-data[4126] = String.fromCharCode (0xaaaa);
-data[4127] = String.fromCharCode (0xa829);
-data[4128] = String.fromCharCode (0xaaaa);
-data[4129] = String.fromCharCode (0x00aa);
-data[4133] = String.fromCharCode (0xffff);
-data[4134] = String.fromCharCode (0xffff);
-data[4135] = String.fromCharCode (0xffff);
-data[4136] = String.fromCharCode (0xffff);
-data[4137] = String.fromCharCode (0xffff);
-data[4138] = String.fromCharCode (0x01ff);
-data[4153] = String.fromCharCode (0x0001);
-data[4154] = String.fromCharCode (0xf000);
-data[4155] = String.fromCharCode (0xffff);
-data[4156] = String.fromCharCode (0x7fff);
-data[4157] = 'c';
-data[4158] = String.fromCharCode (0x00a8);
-});
-c$.currency_f = Clazz.defineMethod (c$, "currency_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.currency = new com.stevesoft.pat.Bits (data);
-data[2] = String.fromCharCode (0x0010);
-data[10] = String.fromCharCode (0x003c);
-data[159] = String.fromCharCode (0x000c);
-data[227] = String.fromCharCode (0x8000);
-data[522] = String.fromCharCode (0x1fff);
-data[4070] = String.fromCharCode (0x0200);
-data[4080] = String.fromCharCode (0x0010);
-data[4094] = 'c';
-data[4098] = String.fromCharCode (0x0010);
-data[4106] = String.fromCharCode (0x003c);
-});
-c$.decimal_digit_f = Clazz.defineMethod (c$, "decimal_digit_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.decimal_digit = new com.stevesoft.pat.Bits (data);
-data[3] = String.fromCharCode (0x03ff);
-data[102] = String.fromCharCode (0x03ff);
-data[111] = String.fromCharCode (0x03ff);
-data[150] = String.fromCharCode (0xffc0);
-data[158] = String.fromCharCode (0xffc0);
-data[166] = String.fromCharCode (0xffc0);
-data[174] = String.fromCharCode (0xffc0);
-data[182] = String.fromCharCode (0xffc0);
-data[190] = String.fromCharCode (0xff80);
-data[198] = String.fromCharCode (0xffc0);
-data[206] = String.fromCharCode (0xffc0);
-data[214] = String.fromCharCode (0xffc0);
-data[229] = String.fromCharCode (0x03ff);
-data[237] = String.fromCharCode (0x03ff);
-data[242] = String.fromCharCode (0x03ff);
-data[4081] = String.fromCharCode (0x03ff);
-data[4099] = String.fromCharCode (0x03ff);
-});
-c$.math_f = Clazz.defineMethod (c$, "math_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.math = new com.stevesoft.pat.Bits (data);
-data[2] = String.fromCharCode (0x0800);
-data[3] = String.fromCharCode (0x7000);
-data[7] = String.fromCharCode (0x5000);
-data[10] = String.fromCharCode (0x1000);
-data[11] = String.fromCharCode (0x0002);
-data[13] = String.fromCharCode (0x0080);
-data[15] = String.fromCharCode (0x0080);
-data[516] = String.fromCharCode (0x0010);
-data[519] = String.fromCharCode (0x1c00);
-data[520] = String.fromCharCode (0x1c00);
-data[537] = String.fromCharCode (0x001f);
-data[541] = String.fromCharCode (0x0014);
-data[544] = String.fromCharCode (0xffff);
-data[545] = String.fromCharCode (0xffff);
-data[546] = String.fromCharCode (0xffff);
-data[547] = String.fromCharCode (0xffff);
-data[548] = String.fromCharCode (0xffff);
-data[549] = String.fromCharCode (0xffff);
-data[550] = String.fromCharCode (0xffff);
-data[551] = String.fromCharCode (0xffff);
-data[552] = String.fromCharCode (0xffff);
-data[553] = String.fromCharCode (0xffff);
-data[554] = String.fromCharCode (0xffff);
-data[555] = String.fromCharCode (0xffff);
-data[556] = String.fromCharCode (0xffff);
-data[557] = String.fromCharCode (0xffff);
-data[558] = String.fromCharCode (0xffff);
-data[559] = String.fromCharCode (0x0003);
-data[560] = String.fromCharCode (0x0f00);
-data[562] = String.fromCharCode (0x0003);
-data[4018] = String.fromCharCode (0x0200);
-data[4070] = 't';
-data[4080] = String.fromCharCode (0x0800);
-data[4081] = String.fromCharCode (0x7000);
-data[4085] = String.fromCharCode (0x5000);
-data[4094] = String.fromCharCode (0x1f04);
-data[4098] = String.fromCharCode (0x0800);
-data[4099] = String.fromCharCode (0x7000);
-data[4103] = String.fromCharCode (0x5000);
-data[4106] = String.fromCharCode (0x1000);
-data[4107] = String.fromCharCode (0x0002);
-data[4109] = String.fromCharCode (0x0080);
-data[4111] = String.fromCharCode (0x0080);
-});
-c$.letter_f = Clazz.defineMethod (c$, "letter_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.letter = new com.stevesoft.pat.Bits (data);
-data[4] = String.fromCharCode (0xfffe);
-data[5] = String.fromCharCode (0x07ff);
-data[6] = String.fromCharCode (0xfffe);
-data[7] = String.fromCharCode (0x07ff);
-data[10] = String.fromCharCode (0x0400);
-data[11] = String.fromCharCode (0x0420);
-data[12] = String.fromCharCode (0xffff);
-data[13] = String.fromCharCode (0xff7f);
-data[14] = String.fromCharCode (0xffff);
-data[15] = String.fromCharCode (0xff7f);
-data[16] = String.fromCharCode (0xffff);
-data[17] = String.fromCharCode (0xffff);
-data[18] = String.fromCharCode (0xffff);
-data[19] = String.fromCharCode (0xffff);
-data[20] = String.fromCharCode (0xffff);
-data[21] = String.fromCharCode (0xffff);
-data[22] = String.fromCharCode (0xffff);
-data[23] = String.fromCharCode (0xffff);
-data[24] = String.fromCharCode (0xffff);
-data[25] = String.fromCharCode (0xffff);
-data[26] = String.fromCharCode (0xffff);
-data[27] = String.fromCharCode (0xffff);
-data[28] = String.fromCharCode (0xffff);
-data[29] = String.fromCharCode (0xffff);
-data[30] = String.fromCharCode (0xffff);
-data[31] = String.fromCharCode (0xfc3f);
-data[32] = String.fromCharCode (0xffff);
-data[33] = String.fromCharCode (0x00ff);
-data[37] = String.fromCharCode (0xffff);
-data[38] = String.fromCharCode (0xffff);
-data[39] = String.fromCharCode (0xffff);
-data[40] = String.fromCharCode (0xffff);
-data[41] = String.fromCharCode (0xffff);
-data[42] = String.fromCharCode (0x01ff);
-data[43] = String.fromCharCode (0xf9ff);
-data[44] = String.fromCharCode (0x0003);
-data[45] = String.fromCharCode (0x0003);
-data[46] = String.fromCharCode (0x001f);
-data[55] = String.fromCharCode (0x0400);
-data[56] = String.fromCharCode (0xd740);
-data[57] = String.fromCharCode (0xffff);
-data[58] = String.fromCharCode (0xfffb);
-data[59] = String.fromCharCode (0xffff);
-data[60] = String.fromCharCode (0x7fff);
-data[61] = String.fromCharCode (0x547f);
-data[62] = String.fromCharCode (0xfffd);
-data[63] = String.fromCharCode (0x000f);
-data[64] = String.fromCharCode (0xdffe);
-data[65] = String.fromCharCode (0xffff);
-data[66] = String.fromCharCode (0xffff);
-data[67] = String.fromCharCode (0xffff);
-data[68] = String.fromCharCode (0xffff);
-data[69] = String.fromCharCode (0xdffe);
-data[70] = String.fromCharCode (0xffff);
-data[71] = String.fromCharCode (0xffff);
-data[72] = String.fromCharCode (0x0003);
-data[73] = String.fromCharCode (0xffff);
-data[74] = String.fromCharCode (0xffff);
-data[75] = String.fromCharCode (0xffff);
-data[76] = String.fromCharCode (0x199f);
-data[77] = String.fromCharCode (0xffff);
-data[78] = String.fromCharCode (0xcfff);
-data[79] = String.fromCharCode (0x033f);
-data[83] = String.fromCharCode (0xfffe);
-data[84] = String.fromCharCode (0xffff);
-data[85] = String.fromCharCode (0x027f);
-data[86] = String.fromCharCode (0xfffe);
-data[87] = String.fromCharCode (0xffff);
-data[88] = String.fromCharCode (0x00ff);
-data[93] = String.fromCharCode (0xffff);
-data[94] = String.fromCharCode (0x07ff);
-data[95] = String.fromCharCode (0x0007);
-data[98] = String.fromCharCode (0xfffe);
-data[99] = String.fromCharCode (0x07ff);
-data[100] = String.fromCharCode (0x07ff);
-data[103] = String.fromCharCode (0xfffe);
-data[104] = String.fromCharCode (0xffff);
-data[105] = String.fromCharCode (0xffff);
-data[106] = String.fromCharCode (0xffff);
-data[107] = String.fromCharCode (0x7cff);
-data[108] = String.fromCharCode (0x7fff);
-data[109] = String.fromCharCode (0x002f);
-data[110] = String.fromCharCode (0x0060);
-data[144] = String.fromCharCode (0xffe0);
-data[145] = String.fromCharCode (0xffff);
-data[146] = String.fromCharCode (0xffff);
-data[147] = String.fromCharCode (0x23ff);
-data[149] = String.fromCharCode (0xff00);
-data[150] = String.fromCharCode (0x0003);
-data[152] = String.fromCharCode (0x9fe0);
-data[153] = String.fromCharCode (0xfff9);
-data[154] = String.fromCharCode (0xfdff);
-data[155] = String.fromCharCode (0x03c5);
-data[157] = String.fromCharCode (0xb000);
-data[158] = String.fromCharCode (0x0003);
-data[159] = String.fromCharCode (0x0003);
-data[160] = String.fromCharCode (0x87e0);
-data[161] = String.fromCharCode (0xfff9);
-data[162] = String.fromCharCode (0xfdff);
-data[163] = String.fromCharCode (0x036d);
-data[165] = String.fromCharCode (0x5e00);
-data[167] = String.fromCharCode (0x001c);
-data[168] = String.fromCharCode (0xafe0);
-data[169] = String.fromCharCode (0xfffb);
-data[170] = String.fromCharCode (0xfdff);
-data[171] = String.fromCharCode (0x23ed);
-data[174] = String.fromCharCode (0x0001);
-data[176] = String.fromCharCode (0x9fe0);
-data[177] = String.fromCharCode (0xfff9);
-data[178] = String.fromCharCode (0xfdff);
-data[179] = String.fromCharCode (0x23cd);
-data[181] = String.fromCharCode (0xb000);
-data[182] = String.fromCharCode (0x0003);
-data[184] = String.fromCharCode (0xc7e0);
-data[185] = String.fromCharCode (0xd63d);
-data[186] = String.fromCharCode (0xc718);
-data[187] = String.fromCharCode (0x03bf);
-data[192] = String.fromCharCode (0xdfe0);
-data[193] = String.fromCharCode (0xfffd);
-data[194] = String.fromCharCode (0xfdff);
-data[195] = String.fromCharCode (0x03ef);
-data[198] = String.fromCharCode (0x0003);
-data[200] = String.fromCharCode (0xdfe0);
-data[201] = String.fromCharCode (0xfffd);
-data[202] = String.fromCharCode (0xfdff);
-data[203] = String.fromCharCode (0x03ef);
-data[205] = String.fromCharCode (0x4000);
-data[206] = String.fromCharCode (0x0003);
-data[208] = String.fromCharCode (0xdfe0);
-data[209] = String.fromCharCode (0xfffd);
-data[210] = String.fromCharCode (0xfdff);
-data[211] = String.fromCharCode (0x03ff);
-data[214] = String.fromCharCode (0x0003);
-data[224] = String.fromCharCode (0xfffe);
-data[225] = String.fromCharCode (0xffff);
-data[226] = String.fromCharCode (0x7fff);
-data[227] = String.fromCharCode (0x000d);
-data[228] = String.fromCharCode (0x007f);
-data[232] = String.fromCharCode (0x2596);
-data[233] = String.fromCharCode (0xfef0);
-data[234] = String.fromCharCode (0x6cae);
-data[235] = String.fromCharCode (0x200d);
-data[236] = String.fromCharCode (0x005f);
-data[237] = String.fromCharCode (0x3000);
-data[244] = String.fromCharCode (0xfeff);
-data[245] = String.fromCharCode (0xffff);
-data[246] = String.fromCharCode (0x03ff);
-data[266] = String.fromCharCode (0xffff);
-data[267] = String.fromCharCode (0xffff);
-data[268] = String.fromCharCode (0x003f);
-data[269] = String.fromCharCode (0xffff);
-data[270] = String.fromCharCode (0xffff);
-data[271] = String.fromCharCode (0x007f);
-data[272] = String.fromCharCode (0xffff);
-data[273] = String.fromCharCode (0xffff);
-data[274] = String.fromCharCode (0xffff);
-data[275] = String.fromCharCode (0xffff);
-data[276] = String.fromCharCode (0xffff);
-data[277] = String.fromCharCode (0x83ff);
-data[278] = String.fromCharCode (0xffff);
-data[279] = String.fromCharCode (0xffff);
-data[280] = String.fromCharCode (0xffff);
-data[281] = String.fromCharCode (0xffff);
-data[282] = String.fromCharCode (0xff07);
-data[283] = String.fromCharCode (0xffff);
-data[284] = String.fromCharCode (0xffff);
-data[285] = String.fromCharCode (0xffff);
-data[286] = String.fromCharCode (0xffff);
-data[287] = String.fromCharCode (0x03ff);
-data[480] = String.fromCharCode (0xffff);
-data[481] = String.fromCharCode (0xffff);
-data[482] = String.fromCharCode (0xffff);
-data[483] = String.fromCharCode (0xffff);
-data[484] = String.fromCharCode (0xffff);
-data[485] = String.fromCharCode (0xffff);
-data[486] = String.fromCharCode (0xffff);
-data[487] = String.fromCharCode (0xffff);
-data[488] = String.fromCharCode (0xffff);
-data[489] = String.fromCharCode (0x0fff);
-data[490] = String.fromCharCode (0xffff);
-data[491] = String.fromCharCode (0xffff);
-data[492] = String.fromCharCode (0xffff);
-data[493] = String.fromCharCode (0xffff);
-data[494] = String.fromCharCode (0xffff);
-data[495] = String.fromCharCode (0x03ff);
-data[496] = String.fromCharCode (0xffff);
-data[497] = String.fromCharCode (0x3f3f);
-data[498] = String.fromCharCode (0xffff);
-data[499] = String.fromCharCode (0xffff);
-data[500] = String.fromCharCode (0x3f3f);
-data[501] = String.fromCharCode (0xaaff);
-data[502] = String.fromCharCode (0xffff);
-data[503] = String.fromCharCode (0x3fff);
-data[504] = String.fromCharCode (0xffff);
-data[505] = String.fromCharCode (0xffff);
-data[506] = String.fromCharCode (0xffff);
-data[507] = String.fromCharCode (0x5fdf);
-data[508] = String.fromCharCode (0x1fdc);
-data[509] = String.fromCharCode (0x0fcf);
-data[510] = String.fromCharCode (0x1fff);
-data[511] = String.fromCharCode (0x1fdc);
-data[519] = String.fromCharCode (0x8000);
-data[528] = String.fromCharCode (0xfc84);
-data[529] = String.fromCharCode (0x3f2f);
-data[530] = String.fromCharCode (0xfd50);
-data[531] = String.fromCharCode (0x01fb);
-data[768] = String.fromCharCode (0x0020);
-data[771] = String.fromCharCode (0x003e);
-data[772] = String.fromCharCode (0xfffe);
-data[773] = String.fromCharCode (0xffff);
-data[774] = String.fromCharCode (0xffff);
-data[775] = String.fromCharCode (0xffff);
-data[776] = String.fromCharCode (0xffff);
-data[777] = String.fromCharCode (0x781f);
-data[778] = String.fromCharCode (0xfffe);
-data[779] = String.fromCharCode (0xffff);
-data[780] = String.fromCharCode (0xffff);
-data[781] = String.fromCharCode (0xffff);
-data[782] = String.fromCharCode (0xffff);
-data[783] = String.fromCharCode (0x77ff);
-data[784] = String.fromCharCode (0xffe0);
-data[785] = String.fromCharCode (0xffff);
-data[786] = String.fromCharCode (0x1fff);
-data[787] = String.fromCharCode (0xfffe);
-data[788] = String.fromCharCode (0xffff);
-data[789] = String.fromCharCode (0xffff);
-data[790] = String.fromCharCode (0xffff);
-data[791] = String.fromCharCode (0xffff);
-data[792] = String.fromCharCode (0x7fff);
-data[1248] = String.fromCharCode (0xffff);
-data[1249] = String.fromCharCode (0xffff);
-data[1250] = String.fromCharCode (0xffff);
-data[1251] = String.fromCharCode (0xffff);
-data[1252] = String.fromCharCode (0xffff);
-data[1253] = String.fromCharCode (0xffff);
-data[1254] = String.fromCharCode (0xffff);
-data[1255] = String.fromCharCode (0xffff);
-data[1256] = String.fromCharCode (0xffff);
-data[1257] = String.fromCharCode (0xffff);
-data[1258] = String.fromCharCode (0xffff);
-data[1259] = String.fromCharCode (0xffff);
-data[1260] = String.fromCharCode (0xffff);
-data[1261] = String.fromCharCode (0xffff);
-data[1262] = String.fromCharCode (0xffff);
-data[1263] = String.fromCharCode (0xffff);
-data[1264] = String.fromCharCode (0xffff);
-data[1265] = String.fromCharCode (0xffff);
-data[1266] = String.fromCharCode (0xffff);
-data[1267] = String.fromCharCode (0xffff);
-data[1268] = String.fromCharCode (0xffff);
-data[1269] = String.fromCharCode (0xffff);
-data[1270] = String.fromCharCode (0xffff);
-data[1271] = String.fromCharCode (0xffff);
-data[1272] = String.fromCharCode (0xffff);
-data[1273] = String.fromCharCode (0xffff);
-data[1274] = String.fromCharCode (0xffff);
-data[1275] = String.fromCharCode (0xffff);
-data[1276] = String.fromCharCode (0xffff);
-data[1277] = String.fromCharCode (0xffff);
-data[1278] = String.fromCharCode (0xffff);
-data[1279] = String.fromCharCode (0xffff);
-data[1280] = String.fromCharCode (0xffff);
-data[1281] = String.fromCharCode (0xffff);
-data[1282] = String.fromCharCode (0xffff);
-data[1283] = String.fromCharCode (0xffff);
-data[1284] = String.fromCharCode (0xffff);
-data[1285] = String.fromCharCode (0xffff);
-data[1286] = String.fromCharCode (0xffff);
-data[1287] = String.fromCharCode (0xffff);
-data[1288] = String.fromCharCode (0xffff);
-data[1289] = String.fromCharCode (0xffff);
-data[1290] = String.fromCharCode (0xffff);
-data[1291] = String.fromCharCode (0xffff);
-data[1292] = String.fromCharCode (0xffff);
-data[1293] = String.fromCharCode (0xffff);
-data[1294] = String.fromCharCode (0xffff);
-data[1295] = String.fromCharCode (0xffff);
-data[1296] = String.fromCharCode (0xffff);
-data[1297] = String.fromCharCode (0xffff);
-data[1298] = String.fromCharCode (0xffff);
-data[1299] = String.fromCharCode (0xffff);
-data[1300] = String.fromCharCode (0xffff);
-data[1301] = String.fromCharCode (0xffff);
-data[1302] = String.fromCharCode (0xffff);
-data[1303] = String.fromCharCode (0xffff);
-data[1304] = String.fromCharCode (0xffff);
-data[1305] = String.fromCharCode (0xffff);
-data[1306] = String.fromCharCode (0xffff);
-data[1307] = String.fromCharCode (0xffff);
-data[1308] = String.fromCharCode (0xffff);
-data[1309] = String.fromCharCode (0xffff);
-data[1310] = String.fromCharCode (0xffff);
-data[1311] = String.fromCharCode (0xffff);
-data[1312] = String.fromCharCode (0xffff);
-data[1313] = String.fromCharCode (0xffff);
-data[1314] = String.fromCharCode (0xffff);
-data[1315] = String.fromCharCode (0xffff);
-data[1316] = String.fromCharCode (0xffff);
-data[1317] = String.fromCharCode (0xffff);
-data[1318] = String.fromCharCode (0xffff);
-data[1319] = String.fromCharCode (0xffff);
-data[1320] = String.fromCharCode (0xffff);
-data[1321] = String.fromCharCode (0xffff);
-data[1322] = String.fromCharCode (0xffff);
-data[1323] = String.fromCharCode (0xffff);
-data[1324] = String.fromCharCode (0xffff);
-data[1325] = String.fromCharCode (0xffff);
-data[1326] = String.fromCharCode (0xffff);
-data[1327] = String.fromCharCode (0xffff);
-data[1328] = String.fromCharCode (0xffff);
-data[1329] = String.fromCharCode (0xffff);
-data[1330] = String.fromCharCode (0xffff);
-data[1331] = String.fromCharCode (0xffff);
-data[1332] = String.fromCharCode (0xffff);
-data[1333] = String.fromCharCode (0xffff);
-data[1334] = String.fromCharCode (0xffff);
-data[1335] = String.fromCharCode (0xffff);
-data[1336] = String.fromCharCode (0xffff);
-data[1337] = String.fromCharCode (0xffff);
-data[1338] = String.fromCharCode (0xffff);
-data[1339] = String.fromCharCode (0xffff);
-data[1340] = String.fromCharCode (0xffff);
-data[1341] = String.fromCharCode (0xffff);
-data[1342] = String.fromCharCode (0xffff);
-data[1343] = String.fromCharCode (0xffff);
-data[1344] = String.fromCharCode (0xffff);
-data[1345] = String.fromCharCode (0xffff);
-data[1346] = String.fromCharCode (0xffff);
-data[1347] = String.fromCharCode (0xffff);
-data[1348] = String.fromCharCode (0xffff);
-data[1349] = String.fromCharCode (0xffff);
-data[1350] = String.fromCharCode (0xffff);
-data[1351] = String.fromCharCode (0xffff);
-data[1352] = String.fromCharCode (0xffff);
-data[1353] = String.fromCharCode (0xffff);
-data[1354] = String.fromCharCode (0xffff);
-data[1355] = String.fromCharCode (0xffff);
-data[1356] = String.fromCharCode (0xffff);
-data[1357] = String.fromCharCode (0xffff);
-data[1358] = String.fromCharCode (0xffff);
-data[1359] = String.fromCharCode (0xffff);
-data[1360] = String.fromCharCode (0xffff);
-data[1361] = String.fromCharCode (0xffff);
-data[1362] = String.fromCharCode (0xffff);
-data[1363] = String.fromCharCode (0xffff);
-data[1364] = String.fromCharCode (0xffff);
-data[1365] = String.fromCharCode (0xffff);
-data[1366] = String.fromCharCode (0xffff);
-data[1367] = String.fromCharCode (0xffff);
-data[1368] = String.fromCharCode (0xffff);
-data[1369] = String.fromCharCode (0xffff);
-data[1370] = String.fromCharCode (0xffff);
-data[1371] = String.fromCharCode (0xffff);
-data[1372] = String.fromCharCode (0xffff);
-data[1373] = String.fromCharCode (0xffff);
-data[1374] = String.fromCharCode (0xffff);
-data[1375] = String.fromCharCode (0xffff);
-data[1376] = String.fromCharCode (0xffff);
-data[1377] = String.fromCharCode (0xffff);
-data[1378] = String.fromCharCode (0xffff);
-data[1379] = String.fromCharCode (0xffff);
-data[1380] = String.fromCharCode (0xffff);
-data[1381] = String.fromCharCode (0xffff);
-data[1382] = String.fromCharCode (0xffff);
-data[1383] = String.fromCharCode (0xffff);
-data[1384] = String.fromCharCode (0xffff);
-data[1385] = String.fromCharCode (0xffff);
-data[1386] = String.fromCharCode (0xffff);
-data[1387] = String.fromCharCode (0xffff);
-data[1388] = String.fromCharCode (0xffff);
-data[1389] = String.fromCharCode (0xffff);
-data[1390] = String.fromCharCode (0xffff);
-data[1391] = String.fromCharCode (0xffff);
-data[1392] = String.fromCharCode (0xffff);
-data[1393] = String.fromCharCode (0xffff);
-data[1394] = String.fromCharCode (0xffff);
-data[1395] = String.fromCharCode (0xffff);
-data[1396] = String.fromCharCode (0xffff);
-data[1397] = String.fromCharCode (0xffff);
-data[1398] = String.fromCharCode (0xffff);
-data[1399] = String.fromCharCode (0xffff);
-data[1400] = String.fromCharCode (0xffff);
-data[1401] = String.fromCharCode (0xffff);
-data[1402] = String.fromCharCode (0xffff);
-data[1403] = String.fromCharCode (0xffff);
-data[1404] = String.fromCharCode (0xffff);
-data[1405] = String.fromCharCode (0xffff);
-data[1406] = String.fromCharCode (0xffff);
-data[1407] = String.fromCharCode (0xffff);
-data[1408] = String.fromCharCode (0xffff);
-data[1409] = String.fromCharCode (0xffff);
-data[1410] = String.fromCharCode (0xffff);
-data[1411] = String.fromCharCode (0xffff);
-data[1412] = String.fromCharCode (0xffff);
-data[1413] = String.fromCharCode (0xffff);
-data[1414] = String.fromCharCode (0xffff);
-data[1415] = String.fromCharCode (0xffff);
-data[1416] = String.fromCharCode (0xffff);
-data[1417] = String.fromCharCode (0xffff);
-data[1418] = String.fromCharCode (0xffff);
-data[1419] = String.fromCharCode (0xffff);
-data[1420] = String.fromCharCode (0xffff);
-data[1421] = String.fromCharCode (0xffff);
-data[1422] = String.fromCharCode (0xffff);
-data[1423] = String.fromCharCode (0xffff);
-data[1424] = String.fromCharCode (0xffff);
-data[1425] = String.fromCharCode (0xffff);
-data[1426] = String.fromCharCode (0xffff);
-data[1427] = String.fromCharCode (0xffff);
-data[1428] = String.fromCharCode (0xffff);
-data[1429] = String.fromCharCode (0xffff);
-data[1430] = String.fromCharCode (0xffff);
-data[1431] = String.fromCharCode (0xffff);
-data[1432] = String.fromCharCode (0xffff);
-data[1433] = String.fromCharCode (0xffff);
-data[1434] = String.fromCharCode (0xffff);
-data[1435] = String.fromCharCode (0xffff);
-data[1436] = String.fromCharCode (0xffff);
-data[1437] = String.fromCharCode (0xffff);
-data[1438] = String.fromCharCode (0xffff);
-data[1439] = String.fromCharCode (0xffff);
-data[1440] = String.fromCharCode (0xffff);
-data[1441] = String.fromCharCode (0xffff);
-data[1442] = String.fromCharCode (0xffff);
-data[1443] = String.fromCharCode (0xffff);
-data[1444] = String.fromCharCode (0xffff);
-data[1445] = String.fromCharCode (0xffff);
-data[1446] = String.fromCharCode (0xffff);
-data[1447] = String.fromCharCode (0xffff);
-data[1448] = String.fromCharCode (0xffff);
-data[1449] = String.fromCharCode (0xffff);
-data[1450] = String.fromCharCode (0xffff);
-data[1451] = String.fromCharCode (0xffff);
-data[1452] = String.fromCharCode (0xffff);
-data[1453] = String.fromCharCode (0xffff);
-data[1454] = String.fromCharCode (0xffff);
-data[1455] = String.fromCharCode (0xffff);
-data[1456] = String.fromCharCode (0xffff);
-data[1457] = String.fromCharCode (0xffff);
-data[1458] = String.fromCharCode (0xffff);
-data[1459] = String.fromCharCode (0xffff);
-data[1460] = String.fromCharCode (0xffff);
-data[1461] = String.fromCharCode (0xffff);
-data[1462] = String.fromCharCode (0xffff);
-data[1463] = String.fromCharCode (0xffff);
-data[1464] = String.fromCharCode (0xffff);
-data[1465] = String.fromCharCode (0xffff);
-data[1466] = String.fromCharCode (0xffff);
-data[1467] = String.fromCharCode (0xffff);
-data[1468] = String.fromCharCode (0xffff);
-data[1469] = String.fromCharCode (0xffff);
-data[1470] = String.fromCharCode (0xffff);
-data[1471] = String.fromCharCode (0xffff);
-data[1472] = String.fromCharCode (0xffff);
-data[1473] = String.fromCharCode (0xffff);
-data[1474] = String.fromCharCode (0xffff);
-data[1475] = String.fromCharCode (0xffff);
-data[1476] = String.fromCharCode (0xffff);
-data[1477] = String.fromCharCode (0xffff);
-data[1478] = String.fromCharCode (0xffff);
-data[1479] = String.fromCharCode (0xffff);
-data[1480] = String.fromCharCode (0xffff);
-data[1481] = String.fromCharCode (0xffff);
-data[1482] = String.fromCharCode (0xffff);
-data[1483] = String.fromCharCode (0xffff);
-data[1484] = String.fromCharCode (0xffff);
-data[1485] = String.fromCharCode (0xffff);
-data[1486] = String.fromCharCode (0xffff);
-data[1487] = String.fromCharCode (0xffff);
-data[1488] = String.fromCharCode (0xffff);
-data[1489] = String.fromCharCode (0xffff);
-data[1490] = String.fromCharCode (0xffff);
-data[1491] = String.fromCharCode (0xffff);
-data[1492] = String.fromCharCode (0xffff);
-data[1493] = String.fromCharCode (0xffff);
-data[1494] = String.fromCharCode (0xffff);
-data[1495] = String.fromCharCode (0xffff);
-data[1496] = String.fromCharCode (0xffff);
-data[1497] = String.fromCharCode (0xffff);
-data[1498] = String.fromCharCode (0xffff);
-data[1499] = String.fromCharCode (0xffff);
-data[1500] = String.fromCharCode (0xffff);
-data[1501] = String.fromCharCode (0xffff);
-data[1502] = String.fromCharCode (0xffff);
-data[1503] = String.fromCharCode (0xffff);
-data[1504] = String.fromCharCode (0xffff);
-data[1505] = String.fromCharCode (0xffff);
-data[1506] = String.fromCharCode (0xffff);
-data[1507] = String.fromCharCode (0xffff);
-data[1508] = String.fromCharCode (0xffff);
-data[1509] = String.fromCharCode (0xffff);
-data[1510] = String.fromCharCode (0xffff);
-data[1511] = String.fromCharCode (0xffff);
-data[1512] = String.fromCharCode (0xffff);
-data[1513] = String.fromCharCode (0xffff);
-data[1514] = String.fromCharCode (0xffff);
-data[1515] = String.fromCharCode (0xffff);
-data[1516] = String.fromCharCode (0xffff);
-data[1517] = String.fromCharCode (0xffff);
-data[1518] = String.fromCharCode (0xffff);
-data[1519] = String.fromCharCode (0xffff);
-data[1520] = String.fromCharCode (0xffff);
-data[1521] = String.fromCharCode (0xffff);
-data[1522] = String.fromCharCode (0xffff);
-data[1523] = String.fromCharCode (0xffff);
-data[1524] = String.fromCharCode (0xffff);
-data[1525] = String.fromCharCode (0xffff);
-data[1526] = String.fromCharCode (0xffff);
-data[1527] = String.fromCharCode (0xffff);
-data[1528] = String.fromCharCode (0xffff);
-data[1529] = String.fromCharCode (0xffff);
-data[1530] = String.fromCharCode (0xffff);
-data[1531] = String.fromCharCode (0xffff);
-data[1532] = String.fromCharCode (0xffff);
-data[1533] = String.fromCharCode (0xffff);
-data[1534] = String.fromCharCode (0xffff);
-data[1535] = String.fromCharCode (0xffff);
-data[1536] = String.fromCharCode (0xffff);
-data[1537] = String.fromCharCode (0xffff);
-data[1538] = String.fromCharCode (0xffff);
-data[1539] = String.fromCharCode (0xffff);
-data[1540] = String.fromCharCode (0xffff);
-data[1541] = String.fromCharCode (0xffff);
-data[1542] = String.fromCharCode (0xffff);
-data[1543] = String.fromCharCode (0xffff);
-data[1544] = String.fromCharCode (0xffff);
-data[1545] = String.fromCharCode (0xffff);
-data[1546] = String.fromCharCode (0xffff);
-data[1547] = String.fromCharCode (0xffff);
-data[1548] = String.fromCharCode (0xffff);
-data[1549] = String.fromCharCode (0xffff);
-data[1550] = String.fromCharCode (0xffff);
-data[1551] = String.fromCharCode (0xffff);
-data[1552] = String.fromCharCode (0xffff);
-data[1553] = String.fromCharCode (0xffff);
-data[1554] = String.fromCharCode (0xffff);
-data[1555] = String.fromCharCode (0xffff);
-data[1556] = String.fromCharCode (0xffff);
-data[1557] = String.fromCharCode (0xffff);
-data[1558] = String.fromCharCode (0xffff);
-data[1559] = String.fromCharCode (0xffff);
-data[1560] = String.fromCharCode (0xffff);
-data[1561] = String.fromCharCode (0xffff);
-data[1562] = String.fromCharCode (0xffff);
-data[1563] = String.fromCharCode (0xffff);
-data[1564] = String.fromCharCode (0xffff);
-data[1565] = String.fromCharCode (0xffff);
-data[1566] = String.fromCharCode (0xffff);
-data[1567] = String.fromCharCode (0xffff);
-data[1568] = String.fromCharCode (0xffff);
-data[1569] = String.fromCharCode (0xffff);
-data[1570] = String.fromCharCode (0xffff);
-data[1571] = String.fromCharCode (0xffff);
-data[1572] = String.fromCharCode (0xffff);
-data[1573] = String.fromCharCode (0xffff);
-data[1574] = String.fromCharCode (0xffff);
-data[1575] = String.fromCharCode (0xffff);
-data[1576] = String.fromCharCode (0xffff);
-data[1577] = String.fromCharCode (0xffff);
-data[1578] = String.fromCharCode (0xffff);
-data[1579] = String.fromCharCode (0xffff);
-data[1580] = String.fromCharCode (0xffff);
-data[1581] = String.fromCharCode (0xffff);
-data[1582] = String.fromCharCode (0xffff);
-data[1583] = String.fromCharCode (0xffff);
-data[1584] = String.fromCharCode (0xffff);
-data[1585] = String.fromCharCode (0xffff);
-data[1586] = String.fromCharCode (0xffff);
-data[1587] = String.fromCharCode (0xffff);
-data[1588] = String.fromCharCode (0xffff);
-data[1589] = String.fromCharCode (0xffff);
-data[1590] = String.fromCharCode (0xffff);
-data[1591] = String.fromCharCode (0xffff);
-data[1592] = String.fromCharCode (0xffff);
-data[1593] = String.fromCharCode (0xffff);
-data[1594] = String.fromCharCode (0xffff);
-data[1595] = String.fromCharCode (0xffff);
-data[1596] = String.fromCharCode (0xffff);
-data[1597] = String.fromCharCode (0xffff);
-data[1598] = String.fromCharCode (0xffff);
-data[1599] = String.fromCharCode (0xffff);
-data[1600] = String.fromCharCode (0xffff);
-data[1601] = String.fromCharCode (0xffff);
-data[1602] = String.fromCharCode (0xffff);
-data[1603] = String.fromCharCode (0xffff);
-data[1604] = String.fromCharCode (0xffff);
-data[1605] = String.fromCharCode (0xffff);
-data[1606] = String.fromCharCode (0xffff);
-data[1607] = String.fromCharCode (0xffff);
-data[1608] = String.fromCharCode (0xffff);
-data[1609] = String.fromCharCode (0xffff);
-data[1610] = String.fromCharCode (0xffff);
-data[1611] = String.fromCharCode (0xffff);
-data[1612] = String.fromCharCode (0xffff);
-data[1613] = String.fromCharCode (0xffff);
-data[1614] = String.fromCharCode (0xffff);
-data[1615] = String.fromCharCode (0xffff);
-data[1616] = String.fromCharCode (0xffff);
-data[1617] = String.fromCharCode (0xffff);
-data[1618] = String.fromCharCode (0xffff);
-data[1619] = String.fromCharCode (0xffff);
-data[1620] = String.fromCharCode (0xffff);
-data[1621] = String.fromCharCode (0xffff);
-data[1622] = String.fromCharCode (0xffff);
-data[1623] = String.fromCharCode (0xffff);
-data[1624] = String.fromCharCode (0xffff);
-data[1625] = String.fromCharCode (0xffff);
-data[1626] = String.fromCharCode (0xffff);
-data[1627] = String.fromCharCode (0xffff);
-data[1628] = String.fromCharCode (0xffff);
-data[1629] = String.fromCharCode (0xffff);
-data[1630] = String.fromCharCode (0xffff);
-data[1631] = String.fromCharCode (0xffff);
-data[1632] = String.fromCharCode (0xffff);
-data[1633] = String.fromCharCode (0xffff);
-data[1634] = String.fromCharCode (0xffff);
-data[1635] = String.fromCharCode (0xffff);
-data[1636] = String.fromCharCode (0xffff);
-data[1637] = String.fromCharCode (0xffff);
-data[1638] = String.fromCharCode (0xffff);
-data[1639] = String.fromCharCode (0xffff);
-data[1640] = String.fromCharCode (0xffff);
-data[1641] = String.fromCharCode (0xffff);
-data[1642] = String.fromCharCode (0xffff);
-data[1643] = String.fromCharCode (0xffff);
-data[1644] = String.fromCharCode (0xffff);
-data[1645] = String.fromCharCode (0xffff);
-data[1646] = String.fromCharCode (0xffff);
-data[1647] = String.fromCharCode (0xffff);
-data[1648] = String.fromCharCode (0xffff);
-data[1649] = String.fromCharCode (0xffff);
-data[1650] = String.fromCharCode (0xffff);
-data[1651] = String.fromCharCode (0xffff);
-data[1652] = String.fromCharCode (0xffff);
-data[1653] = String.fromCharCode (0xffff);
-data[1654] = String.fromCharCode (0xffff);
-data[1655] = String.fromCharCode (0xffff);
-data[1656] = String.fromCharCode (0xffff);
-data[1657] = String.fromCharCode (0xffff);
-data[1658] = String.fromCharCode (0xffff);
-data[1659] = String.fromCharCode (0xffff);
-data[1660] = String.fromCharCode (0xffff);
-data[1661] = String.fromCharCode (0xffff);
-data[1662] = String.fromCharCode (0xffff);
-data[1663] = String.fromCharCode (0xffff);
-data[1664] = String.fromCharCode (0xffff);
-data[1665] = String.fromCharCode (0xffff);
-data[1666] = String.fromCharCode (0xffff);
-data[1667] = String.fromCharCode (0xffff);
-data[1668] = String.fromCharCode (0xffff);
-data[1669] = String.fromCharCode (0xffff);
-data[1670] = String.fromCharCode (0xffff);
-data[1671] = String.fromCharCode (0xffff);
-data[1672] = String.fromCharCode (0xffff);
-data[1673] = String.fromCharCode (0xffff);
-data[1674] = String.fromCharCode (0xffff);
-data[1675] = String.fromCharCode (0xffff);
-data[1676] = String.fromCharCode (0xffff);
-data[1677] = String.fromCharCode (0xffff);
-data[1678] = String.fromCharCode (0xffff);
-data[1679] = String.fromCharCode (0xffff);
-data[1680] = String.fromCharCode (0xffff);
-data[1681] = String.fromCharCode (0xffff);
-data[1682] = String.fromCharCode (0xffff);
-data[1683] = String.fromCharCode (0xffff);
-data[1684] = String.fromCharCode (0xffff);
-data[1685] = String.fromCharCode (0xffff);
-data[1686] = String.fromCharCode (0xffff);
-data[1687] = String.fromCharCode (0xffff);
-data[1688] = String.fromCharCode (0xffff);
-data[1689] = String.fromCharCode (0xffff);
-data[1690] = String.fromCharCode (0xffff);
-data[1691] = String.fromCharCode (0xffff);
-data[1692] = String.fromCharCode (0xffff);
-data[1693] = String.fromCharCode (0xffff);
-data[1694] = String.fromCharCode (0xffff);
-data[1695] = String.fromCharCode (0xffff);
-data[1696] = String.fromCharCode (0xffff);
-data[1697] = String.fromCharCode (0xffff);
-data[1698] = String.fromCharCode (0xffff);
-data[1699] = String.fromCharCode (0xffff);
-data[1700] = String.fromCharCode (0xffff);
-data[1701] = String.fromCharCode (0xffff);
-data[1702] = String.fromCharCode (0xffff);
-data[1703] = String.fromCharCode (0xffff);
-data[1704] = String.fromCharCode (0xffff);
-data[1705] = String.fromCharCode (0xffff);
-data[1706] = String.fromCharCode (0xffff);
-data[1707] = String.fromCharCode (0xffff);
-data[1708] = String.fromCharCode (0xffff);
-data[1709] = String.fromCharCode (0xffff);
-data[1710] = String.fromCharCode (0xffff);
-data[1711] = String.fromCharCode (0xffff);
-data[1712] = String.fromCharCode (0xffff);
-data[1713] = String.fromCharCode (0xffff);
-data[1714] = String.fromCharCode (0xffff);
-data[1715] = String.fromCharCode (0xffff);
-data[1716] = String.fromCharCode (0xffff);
-data[1717] = String.fromCharCode (0xffff);
-data[1718] = String.fromCharCode (0xffff);
-data[1719] = String.fromCharCode (0xffff);
-data[1720] = String.fromCharCode (0xffff);
-data[1721] = String.fromCharCode (0xffff);
-data[1722] = String.fromCharCode (0xffff);
-data[1723] = String.fromCharCode (0xffff);
-data[1724] = String.fromCharCode (0xffff);
-data[1725] = String.fromCharCode (0xffff);
-data[1726] = String.fromCharCode (0xffff);
-data[1727] = String.fromCharCode (0xffff);
-data[1728] = String.fromCharCode (0xffff);
-data[1729] = String.fromCharCode (0xffff);
-data[1730] = String.fromCharCode (0xffff);
-data[1731] = String.fromCharCode (0xffff);
-data[1732] = String.fromCharCode (0xffff);
-data[1733] = String.fromCharCode (0xffff);
-data[1734] = String.fromCharCode (0xffff);
-data[1735] = String.fromCharCode (0xffff);
-data[1736] = String.fromCharCode (0xffff);
-data[1737] = String.fromCharCode (0xffff);
-data[1738] = String.fromCharCode (0xffff);
-data[1739] = String.fromCharCode (0xffff);
-data[1740] = String.fromCharCode (0xffff);
-data[1741] = String.fromCharCode (0xffff);
-data[1742] = String.fromCharCode (0xffff);
-data[1743] = String.fromCharCode (0xffff);
-data[1744] = String.fromCharCode (0xffff);
-data[1745] = String.fromCharCode (0xffff);
-data[1746] = String.fromCharCode (0xffff);
-data[1747] = String.fromCharCode (0xffff);
-data[1748] = String.fromCharCode (0xffff);
-data[1749] = String.fromCharCode (0xffff);
-data[1750] = String.fromCharCode (0xffff);
-data[1751] = String.fromCharCode (0xffff);
-data[1752] = String.fromCharCode (0xffff);
-data[1753] = String.fromCharCode (0xffff);
-data[1754] = String.fromCharCode (0xffff);
-data[1755] = String.fromCharCode (0xffff);
-data[1756] = String.fromCharCode (0xffff);
-data[1757] = String.fromCharCode (0xffff);
-data[1758] = String.fromCharCode (0xffff);
-data[1759] = String.fromCharCode (0xffff);
-data[1760] = String.fromCharCode (0xffff);
-data[1761] = String.fromCharCode (0xffff);
-data[1762] = String.fromCharCode (0xffff);
-data[1763] = String.fromCharCode (0xffff);
-data[1764] = String.fromCharCode (0xffff);
-data[1765] = String.fromCharCode (0xffff);
-data[1766] = String.fromCharCode (0xffff);
-data[1767] = String.fromCharCode (0xffff);
-data[1768] = String.fromCharCode (0xffff);
-data[1769] = String.fromCharCode (0xffff);
-data[1770] = String.fromCharCode (0xffff);
-data[1771] = String.fromCharCode (0xffff);
-data[1772] = String.fromCharCode (0xffff);
-data[1773] = String.fromCharCode (0xffff);
-data[1774] = String.fromCharCode (0xffff);
-data[1775] = String.fromCharCode (0xffff);
-data[1776] = String.fromCharCode (0xffff);
-data[1777] = String.fromCharCode (0xffff);
-data[1778] = String.fromCharCode (0xffff);
-data[1779] = String.fromCharCode (0xffff);
-data[1780] = String.fromCharCode (0xffff);
-data[1781] = String.fromCharCode (0xffff);
-data[1782] = String.fromCharCode (0xffff);
-data[1783] = String.fromCharCode (0xffff);
-data[1784] = String.fromCharCode (0xffff);
-data[1785] = String.fromCharCode (0xffff);
-data[1786] = String.fromCharCode (0xffff);
-data[1787] = String.fromCharCode (0xffff);
-data[1788] = String.fromCharCode (0xffff);
-data[1789] = String.fromCharCode (0xffff);
-data[1790] = String.fromCharCode (0xffff);
-data[1791] = String.fromCharCode (0xffff);
-data[1792] = String.fromCharCode (0xffff);
-data[1793] = String.fromCharCode (0xffff);
-data[1794] = String.fromCharCode (0xffff);
-data[1795] = String.fromCharCode (0xffff);
-data[1796] = String.fromCharCode (0xffff);
-data[1797] = String.fromCharCode (0xffff);
-data[1798] = String.fromCharCode (0xffff);
-data[1799] = String.fromCharCode (0xffff);
-data[1800] = String.fromCharCode (0xffff);
-data[1801] = String.fromCharCode (0xffff);
-data[1802] = String.fromCharCode (0xffff);
-data[1803] = String.fromCharCode (0xffff);
-data[1804] = String.fromCharCode (0xffff);
-data[1805] = String.fromCharCode (0xffff);
-data[1806] = String.fromCharCode (0xffff);
-data[1807] = String.fromCharCode (0xffff);
-data[1808] = String.fromCharCode (0xffff);
-data[1809] = String.fromCharCode (0xffff);
-data[1810] = String.fromCharCode (0xffff);
-data[1811] = String.fromCharCode (0xffff);
-data[1812] = String.fromCharCode (0xffff);
-data[1813] = String.fromCharCode (0xffff);
-data[1814] = String.fromCharCode (0xffff);
-data[1815] = String.fromCharCode (0xffff);
-data[1816] = String.fromCharCode (0xffff);
-data[1817] = String.fromCharCode (0xffff);
-data[1818] = String.fromCharCode (0xffff);
-data[1819] = String.fromCharCode (0xffff);
-data[1820] = String.fromCharCode (0xffff);
-data[1821] = String.fromCharCode (0xffff);
-data[1822] = String.fromCharCode (0xffff);
-data[1823] = String.fromCharCode (0xffff);
-data[1824] = String.fromCharCode (0xffff);
-data[1825] = String.fromCharCode (0xffff);
-data[1826] = String.fromCharCode (0xffff);
-data[1827] = String.fromCharCode (0xffff);
-data[1828] = String.fromCharCode (0xffff);
-data[1829] = String.fromCharCode (0xffff);
-data[1830] = String.fromCharCode (0xffff);
-data[1831] = String.fromCharCode (0xffff);
-data[1832] = String.fromCharCode (0xffff);
-data[1833] = String.fromCharCode (0xffff);
-data[1834] = String.fromCharCode (0xffff);
-data[1835] = String.fromCharCode (0xffff);
-data[1836] = String.fromCharCode (0xffff);
-data[1837] = String.fromCharCode (0xffff);
-data[1838] = String.fromCharCode (0xffff);
-data[1839] = String.fromCharCode (0xffff);
-data[1840] = String.fromCharCode (0xffff);
-data[1841] = String.fromCharCode (0xffff);
-data[1842] = String.fromCharCode (0xffff);
-data[1843] = String.fromCharCode (0xffff);
-data[1844] = String.fromCharCode (0xffff);
-data[1845] = String.fromCharCode (0xffff);
-data[1846] = String.fromCharCode (0xffff);
-data[1847] = String.fromCharCode (0xffff);
-data[1848] = String.fromCharCode (0xffff);
-data[1849] = String.fromCharCode (0xffff);
-data[1850] = String.fromCharCode (0xffff);
-data[1851] = String.fromCharCode (0xffff);
-data[1852] = String.fromCharCode (0xffff);
-data[1853] = String.fromCharCode (0xffff);
-data[1854] = String.fromCharCode (0xffff);
-data[1855] = String.fromCharCode (0xffff);
-data[1856] = String.fromCharCode (0xffff);
-data[1857] = String.fromCharCode (0xffff);
-data[1858] = String.fromCharCode (0xffff);
-data[1859] = String.fromCharCode (0xffff);
-data[1860] = String.fromCharCode (0xffff);
-data[1861] = String.fromCharCode (0xffff);
-data[1862] = String.fromCharCode (0xffff);
-data[1863] = String.fromCharCode (0xffff);
-data[1864] = String.fromCharCode (0xffff);
-data[1865] = String.fromCharCode (0xffff);
-data[1866] = String.fromCharCode (0xffff);
-data[1867] = String.fromCharCode (0xffff);
-data[1868] = String.fromCharCode (0xffff);
-data[1869] = String.fromCharCode (0xffff);
-data[1870] = String.fromCharCode (0xffff);
-data[1871] = String.fromCharCode (0xffff);
-data[1872] = String.fromCharCode (0xffff);
-data[1873] = String.fromCharCode (0xffff);
-data[1874] = String.fromCharCode (0xffff);
-data[1875] = String.fromCharCode (0xffff);
-data[1876] = String.fromCharCode (0xffff);
-data[1877] = String.fromCharCode (0xffff);
-data[1878] = String.fromCharCode (0xffff);
-data[1879] = String.fromCharCode (0xffff);
-data[1880] = String.fromCharCode (0xffff);
-data[1881] = String.fromCharCode (0xffff);
-data[1882] = String.fromCharCode (0xffff);
-data[1883] = String.fromCharCode (0xffff);
-data[1884] = String.fromCharCode (0xffff);
-data[1885] = String.fromCharCode (0xffff);
-data[1886] = String.fromCharCode (0xffff);
-data[1887] = String.fromCharCode (0xffff);
-data[1888] = String.fromCharCode (0xffff);
-data[1889] = String.fromCharCode (0xffff);
-data[1890] = String.fromCharCode (0xffff);
-data[1891] = String.fromCharCode (0xffff);
-data[1892] = String.fromCharCode (0xffff);
-data[1893] = String.fromCharCode (0xffff);
-data[1894] = String.fromCharCode (0xffff);
-data[1895] = String.fromCharCode (0xffff);
-data[1896] = String.fromCharCode (0xffff);
-data[1897] = String.fromCharCode (0xffff);
-data[1898] = String.fromCharCode (0xffff);
-data[1899] = String.fromCharCode (0xffff);
-data[1900] = String.fromCharCode (0xffff);
-data[1901] = String.fromCharCode (0xffff);
-data[1902] = String.fromCharCode (0xffff);
-data[1903] = String.fromCharCode (0xffff);
-data[1904] = String.fromCharCode (0xffff);
-data[1905] = String.fromCharCode (0xffff);
-data[1906] = String.fromCharCode (0xffff);
-data[1907] = String.fromCharCode (0xffff);
-data[1908] = String.fromCharCode (0xffff);
-data[1909] = String.fromCharCode (0xffff);
-data[1910] = String.fromCharCode (0xffff);
-data[1911] = String.fromCharCode (0xffff);
-data[1912] = String.fromCharCode (0xffff);
-data[1913] = String.fromCharCode (0xffff);
-data[1914] = String.fromCharCode (0xffff);
-data[1915] = String.fromCharCode (0xffff);
-data[1916] = String.fromCharCode (0xffff);
-data[1917] = String.fromCharCode (0xffff);
-data[1918] = String.fromCharCode (0xffff);
-data[1919] = String.fromCharCode (0xffff);
-data[1920] = String.fromCharCode (0xffff);
-data[1921] = String.fromCharCode (0xffff);
-data[1922] = String.fromCharCode (0xffff);
-data[1923] = String.fromCharCode (0xffff);
-data[1924] = String.fromCharCode (0xffff);
-data[1925] = String.fromCharCode (0xffff);
-data[1926] = String.fromCharCode (0xffff);
-data[1927] = String.fromCharCode (0xffff);
-data[1928] = String.fromCharCode (0xffff);
-data[1929] = String.fromCharCode (0xffff);
-data[1930] = String.fromCharCode (0xffff);
-data[1931] = String.fromCharCode (0xffff);
-data[1932] = String.fromCharCode (0xffff);
-data[1933] = String.fromCharCode (0xffff);
-data[1934] = String.fromCharCode (0xffff);
-data[1935] = String.fromCharCode (0xffff);
-data[1936] = String.fromCharCode (0xffff);
-data[1937] = String.fromCharCode (0xffff);
-data[1938] = String.fromCharCode (0xffff);
-data[1939] = String.fromCharCode (0xffff);
-data[1940] = String.fromCharCode (0xffff);
-data[1941] = String.fromCharCode (0xffff);
-data[1942] = String.fromCharCode (0xffff);
-data[1943] = String.fromCharCode (0xffff);
-data[1944] = String.fromCharCode (0xffff);
-data[1945] = String.fromCharCode (0xffff);
-data[1946] = String.fromCharCode (0xffff);
-data[1947] = String.fromCharCode (0xffff);
-data[1948] = String.fromCharCode (0xffff);
-data[1949] = String.fromCharCode (0xffff);
-data[1950] = String.fromCharCode (0xffff);
-data[1951] = String.fromCharCode (0xffff);
-data[1952] = String.fromCharCode (0xffff);
-data[1953] = String.fromCharCode (0xffff);
-data[1954] = String.fromCharCode (0xffff);
-data[1955] = String.fromCharCode (0xffff);
-data[1956] = String.fromCharCode (0xffff);
-data[1957] = String.fromCharCode (0xffff);
-data[1958] = String.fromCharCode (0xffff);
-data[1959] = String.fromCharCode (0xffff);
-data[1960] = String.fromCharCode (0xffff);
-data[1961] = String.fromCharCode (0xffff);
-data[1962] = String.fromCharCode (0xffff);
-data[1963] = String.fromCharCode (0xffff);
-data[1964] = String.fromCharCode (0xffff);
-data[1965] = String.fromCharCode (0xffff);
-data[1966] = String.fromCharCode (0xffff);
-data[1967] = String.fromCharCode (0xffff);
-data[1968] = String.fromCharCode (0xffff);
-data[1969] = String.fromCharCode (0xffff);
-data[1970] = String.fromCharCode (0xffff);
-data[1971] = String.fromCharCode (0xffff);
-data[1972] = String.fromCharCode (0xffff);
-data[1973] = String.fromCharCode (0xffff);
-data[1974] = String.fromCharCode (0xffff);
-data[1975] = String.fromCharCode (0xffff);
-data[1976] = String.fromCharCode (0xffff);
-data[1977] = String.fromCharCode (0xffff);
-data[1978] = String.fromCharCode (0xffff);
-data[1979] = String.fromCharCode (0xffff);
-data[1980] = String.fromCharCode (0xffff);
-data[1981] = String.fromCharCode (0xffff);
-data[1982] = String.fromCharCode (0xffff);
-data[1983] = String.fromCharCode (0xffff);
-data[1984] = String.fromCharCode (0xffff);
-data[1985] = String.fromCharCode (0xffff);
-data[1986] = String.fromCharCode (0xffff);
-data[1987] = String.fromCharCode (0xffff);
-data[1988] = String.fromCharCode (0xffff);
-data[1989] = String.fromCharCode (0xffff);
-data[1990] = String.fromCharCode (0xffff);
-data[1991] = String.fromCharCode (0xffff);
-data[1992] = String.fromCharCode (0xffff);
-data[1993] = String.fromCharCode (0xffff);
-data[1994] = String.fromCharCode (0xffff);
-data[1995] = String.fromCharCode (0xffff);
-data[1996] = String.fromCharCode (0xffff);
-data[1997] = String.fromCharCode (0xffff);
-data[1998] = String.fromCharCode (0xffff);
-data[1999] = String.fromCharCode (0xffff);
-data[2000] = String.fromCharCode (0xffff);
-data[2001] = String.fromCharCode (0xffff);
-data[2002] = String.fromCharCode (0xffff);
-data[2003] = String.fromCharCode (0xffff);
-data[2004] = String.fromCharCode (0xffff);
-data[2005] = String.fromCharCode (0xffff);
-data[2006] = String.fromCharCode (0xffff);
-data[2007] = String.fromCharCode (0xffff);
-data[2008] = String.fromCharCode (0xffff);
-data[2009] = String.fromCharCode (0xffff);
-data[2010] = String.fromCharCode (0xffff);
-data[2011] = String.fromCharCode (0xffff);
-data[2012] = String.fromCharCode (0xffff);
-data[2013] = String.fromCharCode (0xffff);
-data[2014] = String.fromCharCode (0xffff);
-data[2015] = String.fromCharCode (0xffff);
-data[2016] = String.fromCharCode (0xffff);
-data[2017] = String.fromCharCode (0xffff);
-data[2018] = String.fromCharCode (0xffff);
-data[2019] = String.fromCharCode (0xffff);
-data[2020] = String.fromCharCode (0xffff);
-data[2021] = String.fromCharCode (0xffff);
-data[2022] = String.fromCharCode (0xffff);
-data[2023] = String.fromCharCode (0xffff);
-data[2024] = String.fromCharCode (0xffff);
-data[2025] = String.fromCharCode (0xffff);
-data[2026] = String.fromCharCode (0xffff);
-data[2027] = String.fromCharCode (0xffff);
-data[2028] = String.fromCharCode (0xffff);
-data[2029] = String.fromCharCode (0xffff);
-data[2030] = String.fromCharCode (0xffff);
-data[2031] = String.fromCharCode (0xffff);
-data[2032] = String.fromCharCode (0xffff);
-data[2033] = String.fromCharCode (0xffff);
-data[2034] = String.fromCharCode (0xffff);
-data[2035] = String.fromCharCode (0xffff);
-data[2036] = String.fromCharCode (0xffff);
-data[2037] = String.fromCharCode (0xffff);
-data[2038] = String.fromCharCode (0xffff);
-data[2039] = String.fromCharCode (0xffff);
-data[2040] = String.fromCharCode (0xffff);
-data[2041] = String.fromCharCode (0xffff);
-data[2042] = String.fromCharCode (0xffff);
-data[2043] = String.fromCharCode (0xffff);
-data[2044] = String.fromCharCode (0xffff);
-data[2045] = String.fromCharCode (0xffff);
-data[2046] = String.fromCharCode (0xffff);
-data[2047] = String.fromCharCode (0xffff);
-data[2048] = String.fromCharCode (0xffff);
-data[2049] = String.fromCharCode (0xffff);
-data[2050] = String.fromCharCode (0xffff);
-data[2051] = String.fromCharCode (0xffff);
-data[2052] = String.fromCharCode (0xffff);
-data[2053] = String.fromCharCode (0xffff);
-data[2054] = String.fromCharCode (0xffff);
-data[2055] = String.fromCharCode (0xffff);
-data[2056] = String.fromCharCode (0xffff);
-data[2057] = String.fromCharCode (0xffff);
-data[2058] = String.fromCharCode (0xffff);
-data[2059] = String.fromCharCode (0xffff);
-data[2060] = String.fromCharCode (0xffff);
-data[2061] = String.fromCharCode (0xffff);
-data[2062] = String.fromCharCode (0xffff);
-data[2063] = String.fromCharCode (0xffff);
-data[2064] = String.fromCharCode (0xffff);
-data[2065] = String.fromCharCode (0xffff);
-data[2066] = String.fromCharCode (0xffff);
-data[2067] = String.fromCharCode (0xffff);
-data[2068] = String.fromCharCode (0xffff);
-data[2069] = String.fromCharCode (0xffff);
-data[2070] = String.fromCharCode (0xffff);
-data[2071] = String.fromCharCode (0xffff);
-data[2072] = String.fromCharCode (0xffff);
-data[2073] = String.fromCharCode (0xffff);
-data[2074] = String.fromCharCode (0xffff);
-data[2075] = String.fromCharCode (0xffff);
-data[2076] = String.fromCharCode (0xffff);
-data[2077] = String.fromCharCode (0xffff);
-data[2078] = String.fromCharCode (0xffff);
-data[2079] = String.fromCharCode (0xffff);
-data[2080] = String.fromCharCode (0xffff);
-data[2081] = String.fromCharCode (0xffff);
-data[2082] = String.fromCharCode (0xffff);
-data[2083] = String.fromCharCode (0xffff);
-data[2084] = String.fromCharCode (0xffff);
-data[2085] = String.fromCharCode (0xffff);
-data[2086] = String.fromCharCode (0xffff);
-data[2087] = String.fromCharCode (0xffff);
-data[2088] = String.fromCharCode (0xffff);
-data[2089] = String.fromCharCode (0xffff);
-data[2090] = String.fromCharCode (0xffff);
-data[2091] = String.fromCharCode (0xffff);
-data[2092] = String.fromCharCode (0xffff);
-data[2093] = String.fromCharCode (0xffff);
-data[2094] = String.fromCharCode (0xffff);
-data[2095] = String.fromCharCode (0xffff);
-data[2096] = String.fromCharCode (0xffff);
-data[2097] = String.fromCharCode (0xffff);
-data[2098] = String.fromCharCode (0xffff);
-data[2099] = String.fromCharCode (0xffff);
-data[2100] = String.fromCharCode (0xffff);
-data[2101] = String.fromCharCode (0xffff);
-data[2102] = String.fromCharCode (0xffff);
-data[2103] = String.fromCharCode (0xffff);
-data[2104] = String.fromCharCode (0xffff);
-data[2105] = String.fromCharCode (0xffff);
-data[2106] = String.fromCharCode (0xffff);
-data[2107] = String.fromCharCode (0xffff);
-data[2108] = String.fromCharCode (0xffff);
-data[2109] = String.fromCharCode (0xffff);
-data[2110] = String.fromCharCode (0xffff);
-data[2111] = String.fromCharCode (0xffff);
-data[2112] = String.fromCharCode (0xffff);
-data[2113] = String.fromCharCode (0xffff);
-data[2114] = String.fromCharCode (0xffff);
-data[2115] = String.fromCharCode (0xffff);
-data[2116] = String.fromCharCode (0xffff);
-data[2117] = String.fromCharCode (0xffff);
-data[2118] = String.fromCharCode (0xffff);
-data[2119] = String.fromCharCode (0xffff);
-data[2120] = String.fromCharCode (0xffff);
-data[2121] = String.fromCharCode (0xffff);
-data[2122] = String.fromCharCode (0xffff);
-data[2123] = String.fromCharCode (0xffff);
-data[2124] = String.fromCharCode (0xffff);
-data[2125] = String.fromCharCode (0xffff);
-data[2126] = String.fromCharCode (0xffff);
-data[2127] = String.fromCharCode (0xffff);
-data[2128] = String.fromCharCode (0xffff);
-data[2129] = String.fromCharCode (0xffff);
-data[2130] = String.fromCharCode (0xffff);
-data[2131] = String.fromCharCode (0xffff);
-data[2132] = String.fromCharCode (0xffff);
-data[2133] = String.fromCharCode (0xffff);
-data[2134] = String.fromCharCode (0xffff);
-data[2135] = String.fromCharCode (0xffff);
-data[2136] = String.fromCharCode (0xffff);
-data[2137] = String.fromCharCode (0xffff);
-data[2138] = String.fromCharCode (0xffff);
-data[2139] = String.fromCharCode (0xffff);
-data[2140] = String.fromCharCode (0xffff);
-data[2141] = String.fromCharCode (0xffff);
-data[2142] = String.fromCharCode (0xffff);
-data[2143] = String.fromCharCode (0xffff);
-data[2144] = String.fromCharCode (0xffff);
-data[2145] = String.fromCharCode (0xffff);
-data[2146] = String.fromCharCode (0xffff);
-data[2147] = String.fromCharCode (0xffff);
-data[2148] = String.fromCharCode (0xffff);
-data[2149] = String.fromCharCode (0xffff);
-data[2150] = String.fromCharCode (0xffff);
-data[2151] = String.fromCharCode (0xffff);
-data[2152] = String.fromCharCode (0xffff);
-data[2153] = String.fromCharCode (0xffff);
-data[2154] = String.fromCharCode (0xffff);
-data[2155] = String.fromCharCode (0xffff);
-data[2156] = String.fromCharCode (0xffff);
-data[2157] = String.fromCharCode (0xffff);
-data[2158] = String.fromCharCode (0xffff);
-data[2159] = String.fromCharCode (0xffff);
-data[2160] = String.fromCharCode (0xffff);
-data[2161] = String.fromCharCode (0xffff);
-data[2162] = String.fromCharCode (0xffff);
-data[2163] = String.fromCharCode (0xffff);
-data[2164] = String.fromCharCode (0xffff);
-data[2165] = String.fromCharCode (0xffff);
-data[2166] = String.fromCharCode (0xffff);
-data[2167] = String.fromCharCode (0xffff);
-data[2168] = String.fromCharCode (0xffff);
-data[2169] = String.fromCharCode (0xffff);
-data[2170] = String.fromCharCode (0xffff);
-data[2171] = String.fromCharCode (0xffff);
-data[2172] = String.fromCharCode (0xffff);
-data[2173] = String.fromCharCode (0xffff);
-data[2174] = String.fromCharCode (0xffff);
-data[2175] = String.fromCharCode (0xffff);
-data[2176] = String.fromCharCode (0xffff);
-data[2177] = String.fromCharCode (0xffff);
-data[2178] = String.fromCharCode (0xffff);
-data[2179] = String.fromCharCode (0xffff);
-data[2180] = String.fromCharCode (0xffff);
-data[2181] = String.fromCharCode (0xffff);
-data[2182] = String.fromCharCode (0xffff);
-data[2183] = String.fromCharCode (0xffff);
-data[2184] = String.fromCharCode (0xffff);
-data[2185] = String.fromCharCode (0xffff);
-data[2186] = String.fromCharCode (0xffff);
-data[2187] = String.fromCharCode (0xffff);
-data[2188] = String.fromCharCode (0xffff);
-data[2189] = String.fromCharCode (0xffff);
-data[2190] = String.fromCharCode (0xffff);
-data[2191] = String.fromCharCode (0xffff);
-data[2192] = String.fromCharCode (0xffff);
-data[2193] = String.fromCharCode (0xffff);
-data[2194] = String.fromCharCode (0xffff);
-data[2195] = String.fromCharCode (0xffff);
-data[2196] = String.fromCharCode (0xffff);
-data[2197] = String.fromCharCode (0xffff);
-data[2198] = String.fromCharCode (0xffff);
-data[2199] = String.fromCharCode (0xffff);
-data[2200] = String.fromCharCode (0xffff);
-data[2201] = String.fromCharCode (0xffff);
-data[2202] = String.fromCharCode (0xffff);
-data[2203] = String.fromCharCode (0xffff);
-data[2204] = String.fromCharCode (0xffff);
-data[2205] = String.fromCharCode (0xffff);
-data[2206] = String.fromCharCode (0xffff);
-data[2207] = String.fromCharCode (0xffff);
-data[2208] = String.fromCharCode (0xffff);
-data[2209] = String.fromCharCode (0xffff);
-data[2210] = String.fromCharCode (0xffff);
-data[2211] = String.fromCharCode (0xffff);
-data[2212] = String.fromCharCode (0xffff);
-data[2213] = String.fromCharCode (0xffff);
-data[2214] = String.fromCharCode (0xffff);
-data[2215] = String.fromCharCode (0xffff);
-data[2216] = String.fromCharCode (0xffff);
-data[2217] = String.fromCharCode (0xffff);
-data[2218] = String.fromCharCode (0xffff);
-data[2219] = String.fromCharCode (0xffff);
-data[2220] = String.fromCharCode (0xffff);
-data[2221] = String.fromCharCode (0xffff);
-data[2222] = String.fromCharCode (0xffff);
-data[2223] = String.fromCharCode (0xffff);
-data[2224] = String.fromCharCode (0xffff);
-data[2225] = String.fromCharCode (0xffff);
-data[2226] = String.fromCharCode (0xffff);
-data[2227] = String.fromCharCode (0xffff);
-data[2228] = String.fromCharCode (0xffff);
-data[2229] = String.fromCharCode (0xffff);
-data[2230] = String.fromCharCode (0xffff);
-data[2231] = String.fromCharCode (0xffff);
-data[2232] = String.fromCharCode (0xffff);
-data[2233] = String.fromCharCode (0xffff);
-data[2234] = String.fromCharCode (0xffff);
-data[2235] = String.fromCharCode (0xffff);
-data[2236] = String.fromCharCode (0xffff);
-data[2237] = String.fromCharCode (0xffff);
-data[2238] = String.fromCharCode (0xffff);
-data[2239] = String.fromCharCode (0xffff);
-data[2240] = String.fromCharCode (0xffff);
-data[2241] = String.fromCharCode (0xffff);
-data[2242] = String.fromCharCode (0xffff);
-data[2243] = String.fromCharCode (0xffff);
-data[2244] = String.fromCharCode (0xffff);
-data[2245] = String.fromCharCode (0xffff);
-data[2246] = String.fromCharCode (0xffff);
-data[2247] = String.fromCharCode (0xffff);
-data[2248] = String.fromCharCode (0xffff);
-data[2249] = String.fromCharCode (0xffff);
-data[2250] = String.fromCharCode (0xffff);
-data[2251] = String.fromCharCode (0xffff);
-data[2252] = String.fromCharCode (0xffff);
-data[2253] = String.fromCharCode (0xffff);
-data[2254] = String.fromCharCode (0xffff);
-data[2255] = String.fromCharCode (0xffff);
-data[2256] = String.fromCharCode (0xffff);
-data[2257] = String.fromCharCode (0xffff);
-data[2258] = String.fromCharCode (0xffff);
-data[2259] = String.fromCharCode (0xffff);
-data[2260] = String.fromCharCode (0xffff);
-data[2261] = String.fromCharCode (0xffff);
-data[2262] = String.fromCharCode (0xffff);
-data[2263] = String.fromCharCode (0xffff);
-data[2264] = String.fromCharCode (0xffff);
-data[2265] = String.fromCharCode (0xffff);
-data[2266] = String.fromCharCode (0xffff);
-data[2267] = String.fromCharCode (0xffff);
-data[2268] = String.fromCharCode (0xffff);
-data[2269] = String.fromCharCode (0xffff);
-data[2270] = String.fromCharCode (0xffff);
-data[2271] = String.fromCharCode (0xffff);
-data[2272] = String.fromCharCode (0xffff);
-data[2273] = String.fromCharCode (0xffff);
-data[2274] = String.fromCharCode (0xffff);
-data[2275] = String.fromCharCode (0xffff);
-data[2276] = String.fromCharCode (0xffff);
-data[2277] = String.fromCharCode (0xffff);
-data[2278] = String.fromCharCode (0xffff);
-data[2279] = String.fromCharCode (0xffff);
-data[2280] = String.fromCharCode (0xffff);
-data[2281] = String.fromCharCode (0xffff);
-data[2282] = String.fromCharCode (0xffff);
-data[2283] = String.fromCharCode (0xffff);
-data[2284] = String.fromCharCode (0xffff);
-data[2285] = String.fromCharCode (0xffff);
-data[2286] = String.fromCharCode (0xffff);
-data[2287] = String.fromCharCode (0xffff);
-data[2288] = String.fromCharCode (0xffff);
-data[2289] = String.fromCharCode (0xffff);
-data[2290] = String.fromCharCode (0xffff);
-data[2291] = String.fromCharCode (0xffff);
-data[2292] = String.fromCharCode (0xffff);
-data[2293] = String.fromCharCode (0xffff);
-data[2294] = String.fromCharCode (0xffff);
-data[2295] = String.fromCharCode (0xffff);
-data[2296] = String.fromCharCode (0xffff);
-data[2297] = String.fromCharCode (0xffff);
-data[2298] = String.fromCharCode (0xffff);
-data[2299] = String.fromCharCode (0xffff);
-data[2300] = String.fromCharCode (0xffff);
-data[2301] = String.fromCharCode (0xffff);
-data[2302] = String.fromCharCode (0xffff);
-data[2303] = String.fromCharCode (0xffff);
-data[2304] = String.fromCharCode (0xffff);
-data[2305] = String.fromCharCode (0xffff);
-data[2306] = String.fromCharCode (0xffff);
-data[2307] = String.fromCharCode (0xffff);
-data[2308] = String.fromCharCode (0xffff);
-data[2309] = String.fromCharCode (0xffff);
-data[2310] = String.fromCharCode (0xffff);
-data[2311] = String.fromCharCode (0xffff);
-data[2312] = String.fromCharCode (0xffff);
-data[2313] = String.fromCharCode (0xffff);
-data[2314] = String.fromCharCode (0xffff);
-data[2315] = String.fromCharCode (0xffff);
-data[2316] = String.fromCharCode (0xffff);
-data[2317] = String.fromCharCode (0xffff);
-data[2318] = String.fromCharCode (0xffff);
-data[2319] = String.fromCharCode (0xffff);
-data[2320] = String.fromCharCode (0xffff);
-data[2321] = String.fromCharCode (0xffff);
-data[2322] = String.fromCharCode (0xffff);
-data[2323] = String.fromCharCode (0xffff);
-data[2324] = String.fromCharCode (0xffff);
-data[2325] = String.fromCharCode (0xffff);
-data[2326] = String.fromCharCode (0xffff);
-data[2327] = String.fromCharCode (0xffff);
-data[2328] = String.fromCharCode (0xffff);
-data[2329] = String.fromCharCode (0xffff);
-data[2330] = String.fromCharCode (0xffff);
-data[2331] = String.fromCharCode (0xffff);
-data[2332] = String.fromCharCode (0xffff);
-data[2333] = String.fromCharCode (0xffff);
-data[2334] = String.fromCharCode (0xffff);
-data[2335] = String.fromCharCode (0xffff);
-data[2336] = String.fromCharCode (0xffff);
-data[2337] = String.fromCharCode (0xffff);
-data[2338] = String.fromCharCode (0xffff);
-data[2339] = String.fromCharCode (0xffff);
-data[2340] = String.fromCharCode (0xffff);
-data[2341] = String.fromCharCode (0xffff);
-data[2342] = String.fromCharCode (0xffff);
-data[2343] = String.fromCharCode (0xffff);
-data[2344] = String.fromCharCode (0xffff);
-data[2345] = String.fromCharCode (0xffff);
-data[2346] = String.fromCharCode (0xffff);
-data[2347] = String.fromCharCode (0xffff);
-data[2348] = String.fromCharCode (0xffff);
-data[2349] = String.fromCharCode (0xffff);
-data[2350] = String.fromCharCode (0xffff);
-data[2351] = String.fromCharCode (0xffff);
-data[2352] = String.fromCharCode (0xffff);
-data[2353] = String.fromCharCode (0xffff);
-data[2354] = String.fromCharCode (0xffff);
-data[2355] = String.fromCharCode (0xffff);
-data[2356] = String.fromCharCode (0xffff);
-data[2357] = String.fromCharCode (0xffff);
-data[2358] = String.fromCharCode (0xffff);
-data[2359] = String.fromCharCode (0xffff);
-data[2360] = String.fromCharCode (0xffff);
-data[2361] = String.fromCharCode (0xffff);
-data[2362] = String.fromCharCode (0xffff);
-data[2363] = String.fromCharCode (0xffff);
-data[2364] = String.fromCharCode (0xffff);
-data[2365] = String.fromCharCode (0xffff);
-data[2366] = String.fromCharCode (0xffff);
-data[2367] = String.fromCharCode (0xffff);
-data[2368] = String.fromCharCode (0xffff);
-data[2369] = String.fromCharCode (0xffff);
-data[2370] = String.fromCharCode (0xffff);
-data[2371] = String.fromCharCode (0xffff);
-data[2372] = String.fromCharCode (0xffff);
-data[2373] = String.fromCharCode (0xffff);
-data[2374] = String.fromCharCode (0xffff);
-data[2375] = String.fromCharCode (0xffff);
-data[2376] = String.fromCharCode (0xffff);
-data[2377] = String.fromCharCode (0xffff);
-data[2378] = String.fromCharCode (0xffff);
-data[2379] = String.fromCharCode (0xffff);
-data[2380] = String.fromCharCode (0xffff);
-data[2381] = String.fromCharCode (0xffff);
-data[2382] = String.fromCharCode (0xffff);
-data[2383] = String.fromCharCode (0xffff);
-data[2384] = String.fromCharCode (0xffff);
-data[2385] = String.fromCharCode (0xffff);
-data[2386] = String.fromCharCode (0xffff);
-data[2387] = String.fromCharCode (0xffff);
-data[2388] = String.fromCharCode (0xffff);
-data[2389] = String.fromCharCode (0xffff);
-data[2390] = String.fromCharCode (0xffff);
-data[2391] = String.fromCharCode (0xffff);
-data[2392] = String.fromCharCode (0xffff);
-data[2393] = String.fromCharCode (0xffff);
-data[2394] = String.fromCharCode (0xffff);
-data[2395] = String.fromCharCode (0xffff);
-data[2396] = String.fromCharCode (0xffff);
-data[2397] = String.fromCharCode (0xffff);
-data[2398] = String.fromCharCode (0xffff);
-data[2399] = String.fromCharCode (0xffff);
-data[2400] = String.fromCharCode (0xffff);
-data[2401] = String.fromCharCode (0xffff);
-data[2402] = String.fromCharCode (0xffff);
-data[2403] = String.fromCharCode (0xffff);
-data[2404] = String.fromCharCode (0xffff);
-data[2405] = String.fromCharCode (0xffff);
-data[2406] = String.fromCharCode (0xffff);
-data[2407] = String.fromCharCode (0xffff);
-data[2408] = String.fromCharCode (0xffff);
-data[2409] = String.fromCharCode (0xffff);
-data[2410] = String.fromCharCode (0xffff);
-data[2411] = String.fromCharCode (0xffff);
-data[2412] = String.fromCharCode (0xffff);
-data[2413] = String.fromCharCode (0xffff);
-data[2414] = String.fromCharCode (0xffff);
-data[2415] = String.fromCharCode (0xffff);
-data[2416] = String.fromCharCode (0xffff);
-data[2417] = String.fromCharCode (0xffff);
-data[2418] = String.fromCharCode (0xffff);
-data[2419] = String.fromCharCode (0xffff);
-data[2420] = String.fromCharCode (0xffff);
-data[2421] = String.fromCharCode (0xffff);
-data[2422] = String.fromCharCode (0xffff);
-data[2423] = String.fromCharCode (0xffff);
-data[2424] = String.fromCharCode (0xffff);
-data[2425] = String.fromCharCode (0xffff);
-data[2426] = String.fromCharCode (0xffff);
-data[2427] = String.fromCharCode (0xffff);
-data[2428] = String.fromCharCode (0xffff);
-data[2429] = String.fromCharCode (0xffff);
-data[2430] = String.fromCharCode (0xffff);
-data[2431] = String.fromCharCode (0xffff);
-data[2432] = String.fromCharCode (0xffff);
-data[2433] = String.fromCharCode (0xffff);
-data[2434] = String.fromCharCode (0xffff);
-data[2435] = String.fromCharCode (0xffff);
-data[2436] = String.fromCharCode (0xffff);
-data[2437] = String.fromCharCode (0xffff);
-data[2438] = String.fromCharCode (0xffff);
-data[2439] = String.fromCharCode (0xffff);
-data[2440] = String.fromCharCode (0xffff);
-data[2441] = String.fromCharCode (0xffff);
-data[2442] = String.fromCharCode (0xffff);
-data[2443] = String.fromCharCode (0xffff);
-data[2444] = String.fromCharCode (0xffff);
-data[2445] = String.fromCharCode (0xffff);
-data[2446] = String.fromCharCode (0xffff);
-data[2447] = String.fromCharCode (0xffff);
-data[2448] = String.fromCharCode (0xffff);
-data[2449] = String.fromCharCode (0xffff);
-data[2450] = String.fromCharCode (0xffff);
-data[2451] = String.fromCharCode (0xffff);
-data[2452] = String.fromCharCode (0xffff);
-data[2453] = String.fromCharCode (0xffff);
-data[2454] = String.fromCharCode (0xffff);
-data[2455] = String.fromCharCode (0xffff);
-data[2456] = String.fromCharCode (0xffff);
-data[2457] = String.fromCharCode (0xffff);
-data[2458] = String.fromCharCode (0xffff);
-data[2459] = String.fromCharCode (0xffff);
-data[2460] = String.fromCharCode (0xffff);
-data[2461] = String.fromCharCode (0xffff);
-data[2462] = String.fromCharCode (0xffff);
-data[2463] = String.fromCharCode (0xffff);
-data[2464] = String.fromCharCode (0xffff);
-data[2465] = String.fromCharCode (0xffff);
-data[2466] = String.fromCharCode (0xffff);
-data[2467] = String.fromCharCode (0xffff);
-data[2468] = String.fromCharCode (0xffff);
-data[2469] = String.fromCharCode (0xffff);
-data[2470] = String.fromCharCode (0xffff);
-data[2471] = String.fromCharCode (0xffff);
-data[2472] = String.fromCharCode (0xffff);
-data[2473] = String.fromCharCode (0xffff);
-data[2474] = String.fromCharCode (0xffff);
-data[2475] = String.fromCharCode (0xffff);
-data[2476] = String.fromCharCode (0xffff);
-data[2477] = String.fromCharCode (0xffff);
-data[2478] = String.fromCharCode (0xffff);
-data[2479] = String.fromCharCode (0xffff);
-data[2480] = String.fromCharCode (0xffff);
-data[2481] = String.fromCharCode (0xffff);
-data[2482] = String.fromCharCode (0xffff);
-data[2483] = String.fromCharCode (0xffff);
-data[2484] = String.fromCharCode (0xffff);
-data[2485] = String.fromCharCode (0xffff);
-data[2486] = String.fromCharCode (0xffff);
-data[2487] = String.fromCharCode (0xffff);
-data[2488] = String.fromCharCode (0xffff);
-data[2489] = String.fromCharCode (0xffff);
-data[2490] = String.fromCharCode (0xffff);
-data[2491] = String.fromCharCode (0xffff);
-data[2492] = String.fromCharCode (0xffff);
-data[2493] = String.fromCharCode (0xffff);
-data[2494] = String.fromCharCode (0xffff);
-data[2495] = String.fromCharCode (0xffff);
-data[2496] = String.fromCharCode (0xffff);
-data[2497] = String.fromCharCode (0xffff);
-data[2498] = String.fromCharCode (0xffff);
-data[2499] = String.fromCharCode (0xffff);
-data[2500] = String.fromCharCode (0xffff);
-data[2501] = String.fromCharCode (0xffff);
-data[2502] = String.fromCharCode (0xffff);
-data[2503] = String.fromCharCode (0xffff);
-data[2504] = String.fromCharCode (0xffff);
-data[2505] = String.fromCharCode (0xffff);
-data[2506] = String.fromCharCode (0xffff);
-data[2507] = String.fromCharCode (0xffff);
-data[2508] = String.fromCharCode (0xffff);
-data[2509] = String.fromCharCode (0xffff);
-data[2510] = String.fromCharCode (0xffff);
-data[2511] = String.fromCharCode (0xffff);
-data[2512] = String.fromCharCode (0xffff);
-data[2513] = String.fromCharCode (0xffff);
-data[2514] = String.fromCharCode (0xffff);
-data[2515] = String.fromCharCode (0xffff);
-data[2516] = String.fromCharCode (0xffff);
-data[2517] = String.fromCharCode (0xffff);
-data[2518] = String.fromCharCode (0xffff);
-data[2519] = String.fromCharCode (0xffff);
-data[2520] = String.fromCharCode (0xffff);
-data[2521] = String.fromCharCode (0xffff);
-data[2522] = String.fromCharCode (0xffff);
-data[2523] = String.fromCharCode (0xffff);
-data[2524] = String.fromCharCode (0xffff);
-data[2525] = String.fromCharCode (0xffff);
-data[2526] = String.fromCharCode (0xffff);
-data[2527] = String.fromCharCode (0xffff);
-data[2528] = String.fromCharCode (0xffff);
-data[2529] = String.fromCharCode (0xffff);
-data[2530] = String.fromCharCode (0xffff);
-data[2531] = String.fromCharCode (0xffff);
-data[2532] = String.fromCharCode (0xffff);
-data[2533] = String.fromCharCode (0xffff);
-data[2534] = String.fromCharCode (0xffff);
-data[2535] = String.fromCharCode (0xffff);
-data[2536] = String.fromCharCode (0xffff);
-data[2537] = String.fromCharCode (0xffff);
-data[2538] = String.fromCharCode (0xffff);
-data[2539] = String.fromCharCode (0xffff);
-data[2540] = String.fromCharCode (0xffff);
-data[2541] = String.fromCharCode (0xffff);
-data[2542] = String.fromCharCode (0xffff);
-data[2543] = String.fromCharCode (0xffff);
-data[2544] = String.fromCharCode (0xffff);
-data[2545] = String.fromCharCode (0xffff);
-data[2546] = String.fromCharCode (0xffff);
-data[2547] = String.fromCharCode (0xffff);
-data[2548] = String.fromCharCode (0xffff);
-data[2549] = String.fromCharCode (0xffff);
-data[2550] = String.fromCharCode (0xffff);
-data[2551] = String.fromCharCode (0xffff);
-data[2552] = String.fromCharCode (0xffff);
-data[2553] = String.fromCharCode (0xffff);
-data[2554] = String.fromCharCode (0x003f);
-data[2752] = String.fromCharCode (0xffff);
-data[2753] = String.fromCharCode (0xffff);
-data[2754] = String.fromCharCode (0xffff);
-data[2755] = String.fromCharCode (0xffff);
-data[2756] = String.fromCharCode (0xffff);
-data[2757] = String.fromCharCode (0xffff);
-data[2758] = String.fromCharCode (0xffff);
-data[2759] = String.fromCharCode (0xffff);
-data[2760] = String.fromCharCode (0xffff);
-data[2761] = String.fromCharCode (0xffff);
-data[2762] = String.fromCharCode (0xffff);
-data[2763] = String.fromCharCode (0xffff);
-data[2764] = String.fromCharCode (0xffff);
-data[2765] = String.fromCharCode (0xffff);
-data[2766] = String.fromCharCode (0xffff);
-data[2767] = String.fromCharCode (0xffff);
-data[2768] = String.fromCharCode (0xffff);
-data[2769] = String.fromCharCode (0xffff);
-data[2770] = String.fromCharCode (0xffff);
-data[2771] = String.fromCharCode (0xffff);
-data[2772] = String.fromCharCode (0xffff);
-data[2773] = String.fromCharCode (0xffff);
-data[2774] = String.fromCharCode (0xffff);
-data[2775] = String.fromCharCode (0xffff);
-data[2776] = String.fromCharCode (0xffff);
-data[2777] = String.fromCharCode (0xffff);
-data[2778] = String.fromCharCode (0xffff);
-data[2779] = String.fromCharCode (0xffff);
-data[2780] = String.fromCharCode (0xffff);
-data[2781] = String.fromCharCode (0xffff);
-data[2782] = String.fromCharCode (0xffff);
-data[2783] = String.fromCharCode (0xffff);
-data[2784] = String.fromCharCode (0xffff);
-data[2785] = String.fromCharCode (0xffff);
-data[2786] = String.fromCharCode (0xffff);
-data[2787] = String.fromCharCode (0xffff);
-data[2788] = String.fromCharCode (0xffff);
-data[2789] = String.fromCharCode (0xffff);
-data[2790] = String.fromCharCode (0xffff);
-data[2791] = String.fromCharCode (0xffff);
-data[2792] = String.fromCharCode (0xffff);
-data[2793] = String.fromCharCode (0xffff);
-data[2794] = String.fromCharCode (0xffff);
-data[2795] = String.fromCharCode (0xffff);
-data[2796] = String.fromCharCode (0xffff);
-data[2797] = String.fromCharCode (0xffff);
-data[2798] = String.fromCharCode (0xffff);
-data[2799] = String.fromCharCode (0xffff);
-data[2800] = String.fromCharCode (0xffff);
-data[2801] = String.fromCharCode (0xffff);
-data[2802] = String.fromCharCode (0xffff);
-data[2803] = String.fromCharCode (0xffff);
-data[2804] = String.fromCharCode (0xffff);
-data[2805] = String.fromCharCode (0xffff);
-data[2806] = String.fromCharCode (0xffff);
-data[2807] = String.fromCharCode (0xffff);
-data[2808] = String.fromCharCode (0xffff);
-data[2809] = String.fromCharCode (0xffff);
-data[2810] = String.fromCharCode (0xffff);
-data[2811] = String.fromCharCode (0xffff);
-data[2812] = String.fromCharCode (0xffff);
-data[2813] = String.fromCharCode (0xffff);
-data[2814] = String.fromCharCode (0xffff);
-data[2815] = String.fromCharCode (0xffff);
-data[2816] = String.fromCharCode (0xffff);
-data[2817] = String.fromCharCode (0xffff);
-data[2818] = String.fromCharCode (0xffff);
-data[2819] = String.fromCharCode (0xffff);
-data[2820] = String.fromCharCode (0xffff);
-data[2821] = String.fromCharCode (0xffff);
-data[2822] = String.fromCharCode (0xffff);
-data[2823] = String.fromCharCode (0xffff);
-data[2824] = String.fromCharCode (0xffff);
-data[2825] = String.fromCharCode (0xffff);
-data[2826] = String.fromCharCode (0xffff);
-data[2827] = String.fromCharCode (0xffff);
-data[2828] = String.fromCharCode (0xffff);
-data[2829] = String.fromCharCode (0xffff);
-data[2830] = String.fromCharCode (0xffff);
-data[2831] = String.fromCharCode (0xffff);
-data[2832] = String.fromCharCode (0xffff);
-data[2833] = String.fromCharCode (0xffff);
-data[2834] = String.fromCharCode (0xffff);
-data[2835] = String.fromCharCode (0xffff);
-data[2836] = String.fromCharCode (0xffff);
-data[2837] = String.fromCharCode (0xffff);
-data[2838] = String.fromCharCode (0xffff);
-data[2839] = String.fromCharCode (0xffff);
-data[2840] = String.fromCharCode (0xffff);
-data[2841] = String.fromCharCode (0xffff);
-data[2842] = String.fromCharCode (0xffff);
-data[2843] = String.fromCharCode (0xffff);
-data[2844] = String.fromCharCode (0xffff);
-data[2845] = String.fromCharCode (0xffff);
-data[2846] = String.fromCharCode (0xffff);
-data[2847] = String.fromCharCode (0xffff);
-data[2848] = String.fromCharCode (0xffff);
-data[2849] = String.fromCharCode (0xffff);
-data[2850] = String.fromCharCode (0xffff);
-data[2851] = String.fromCharCode (0xffff);
-data[2852] = String.fromCharCode (0xffff);
-data[2853] = String.fromCharCode (0xffff);
-data[2854] = String.fromCharCode (0xffff);
-data[2855] = String.fromCharCode (0xffff);
-data[2856] = String.fromCharCode (0xffff);
-data[2857] = String.fromCharCode (0xffff);
-data[2858] = String.fromCharCode (0xffff);
-data[2859] = String.fromCharCode (0xffff);
-data[2860] = String.fromCharCode (0xffff);
-data[2861] = String.fromCharCode (0xffff);
-data[2862] = String.fromCharCode (0xffff);
-data[2863] = String.fromCharCode (0xffff);
-data[2864] = String.fromCharCode (0xffff);
-data[2865] = String.fromCharCode (0xffff);
-data[2866] = String.fromCharCode (0xffff);
-data[2867] = String.fromCharCode (0xffff);
-data[2868] = String.fromCharCode (0xffff);
-data[2869] = String.fromCharCode (0xffff);
-data[2870] = String.fromCharCode (0xffff);
-data[2871] = String.fromCharCode (0xffff);
-data[2872] = String.fromCharCode (0xffff);
-data[2873] = String.fromCharCode (0xffff);
-data[2874] = String.fromCharCode (0xffff);
-data[2875] = String.fromCharCode (0xffff);
-data[2876] = String.fromCharCode (0xffff);
-data[2877] = String.fromCharCode (0xffff);
-data[2878] = String.fromCharCode (0xffff);
-data[2879] = String.fromCharCode (0xffff);
-data[2880] = String.fromCharCode (0xffff);
-data[2881] = String.fromCharCode (0xffff);
-data[2882] = String.fromCharCode (0xffff);
-data[2883] = String.fromCharCode (0xffff);
-data[2884] = String.fromCharCode (0xffff);
-data[2885] = String.fromCharCode (0xffff);
-data[2886] = String.fromCharCode (0xffff);
-data[2887] = String.fromCharCode (0xffff);
-data[2888] = String.fromCharCode (0xffff);
-data[2889] = String.fromCharCode (0xffff);
-data[2890] = String.fromCharCode (0xffff);
-data[2891] = String.fromCharCode (0xffff);
-data[2892] = String.fromCharCode (0xffff);
-data[2893] = String.fromCharCode (0xffff);
-data[2894] = String.fromCharCode (0xffff);
-data[2895] = String.fromCharCode (0xffff);
-data[2896] = String.fromCharCode (0xffff);
-data[2897] = String.fromCharCode (0xffff);
-data[2898] = String.fromCharCode (0xffff);
-data[2899] = String.fromCharCode (0xffff);
-data[2900] = String.fromCharCode (0xffff);
-data[2901] = String.fromCharCode (0xffff);
-data[2902] = String.fromCharCode (0xffff);
-data[2903] = String.fromCharCode (0xffff);
-data[2904] = String.fromCharCode (0xffff);
-data[2905] = String.fromCharCode (0xffff);
-data[2906] = String.fromCharCode (0xffff);
-data[2907] = String.fromCharCode (0xffff);
-data[2908] = String.fromCharCode (0xffff);
-data[2909] = String.fromCharCode (0xffff);
-data[2910] = String.fromCharCode (0xffff);
-data[2911] = String.fromCharCode (0xffff);
-data[2912] = String.fromCharCode (0xffff);
-data[2913] = String.fromCharCode (0xffff);
-data[2914] = String.fromCharCode (0xffff);
-data[2915] = String.fromCharCode (0xffff);
-data[2916] = String.fromCharCode (0xffff);
-data[2917] = String.fromCharCode (0xffff);
-data[2918] = String.fromCharCode (0xffff);
-data[2919] = String.fromCharCode (0xffff);
-data[2920] = String.fromCharCode (0xffff);
-data[2921] = String.fromCharCode (0xffff);
-data[2922] = String.fromCharCode (0xffff);
-data[2923] = String.fromCharCode (0xffff);
-data[2924] = String.fromCharCode (0xffff);
-data[2925] = String.fromCharCode (0xffff);
-data[2926] = String.fromCharCode (0xffff);
-data[2927] = String.fromCharCode (0xffff);
-data[2928] = String.fromCharCode (0xffff);
-data[2929] = String.fromCharCode (0xffff);
-data[2930] = String.fromCharCode (0xffff);
-data[2931] = String.fromCharCode (0xffff);
-data[2932] = String.fromCharCode (0xffff);
-data[2933] = String.fromCharCode (0xffff);
-data[2934] = String.fromCharCode (0xffff);
-data[2935] = String.fromCharCode (0xffff);
-data[2936] = String.fromCharCode (0xffff);
-data[2937] = String.fromCharCode (0xffff);
-data[2938] = String.fromCharCode (0xffff);
-data[2939] = String.fromCharCode (0xffff);
-data[2940] = String.fromCharCode (0xffff);
-data[2941] = String.fromCharCode (0xffff);
-data[2942] = String.fromCharCode (0xffff);
-data[2943] = String.fromCharCode (0xffff);
-data[2944] = String.fromCharCode (0xffff);
-data[2945] = String.fromCharCode (0xffff);
-data[2946] = String.fromCharCode (0xffff);
-data[2947] = String.fromCharCode (0xffff);
-data[2948] = String.fromCharCode (0xffff);
-data[2949] = String.fromCharCode (0xffff);
-data[2950] = String.fromCharCode (0xffff);
-data[2951] = String.fromCharCode (0xffff);
-data[2952] = String.fromCharCode (0xffff);
-data[2953] = String.fromCharCode (0xffff);
-data[2954] = String.fromCharCode (0xffff);
-data[2955] = String.fromCharCode (0xffff);
-data[2956] = String.fromCharCode (0xffff);
-data[2957] = String.fromCharCode (0xffff);
-data[2958] = String.fromCharCode (0xffff);
-data[2959] = String.fromCharCode (0xffff);
-data[2960] = String.fromCharCode (0xffff);
-data[2961] = String.fromCharCode (0xffff);
-data[2962] = String.fromCharCode (0xffff);
-data[2963] = String.fromCharCode (0xffff);
-data[2964] = String.fromCharCode (0xffff);
-data[2965] = String.fromCharCode (0xffff);
-data[2966] = String.fromCharCode (0xffff);
-data[2967] = String.fromCharCode (0xffff);
-data[2968] = String.fromCharCode (0xffff);
-data[2969] = String.fromCharCode (0xffff);
-data[2970] = String.fromCharCode (0xffff);
-data[2971] = String.fromCharCode (0xffff);
-data[2972] = String.fromCharCode (0xffff);
-data[2973] = String.fromCharCode (0xffff);
-data[2974] = String.fromCharCode (0xffff);
-data[2975] = String.fromCharCode (0xffff);
-data[2976] = String.fromCharCode (0xffff);
-data[2977] = String.fromCharCode (0xffff);
-data[2978] = String.fromCharCode (0xffff);
-data[2979] = String.fromCharCode (0xffff);
-data[2980] = String.fromCharCode (0xffff);
-data[2981] = String.fromCharCode (0xffff);
-data[2982] = String.fromCharCode (0xffff);
-data[2983] = String.fromCharCode (0xffff);
-data[2984] = String.fromCharCode (0xffff);
-data[2985] = String.fromCharCode (0xffff);
-data[2986] = String.fromCharCode (0xffff);
-data[2987] = String.fromCharCode (0xffff);
-data[2988] = String.fromCharCode (0xffff);
-data[2989] = String.fromCharCode (0xffff);
-data[2990] = String.fromCharCode (0xffff);
-data[2991] = String.fromCharCode (0xffff);
-data[2992] = String.fromCharCode (0xffff);
-data[2993] = String.fromCharCode (0xffff);
-data[2994] = String.fromCharCode (0xffff);
-data[2995] = String.fromCharCode (0xffff);
-data[2996] = String.fromCharCode (0xffff);
-data[2997] = String.fromCharCode (0xffff);
-data[2998] = String.fromCharCode (0xffff);
-data[2999] = String.fromCharCode (0xffff);
-data[3000] = String.fromCharCode (0xffff);
-data[3001] = String.fromCharCode (0xffff);
-data[3002] = String.fromCharCode (0xffff);
-data[3003] = String.fromCharCode (0xffff);
-data[3004] = String.fromCharCode (0xffff);
-data[3005] = String.fromCharCode (0xffff);
-data[3006] = String.fromCharCode (0xffff);
-data[3007] = String.fromCharCode (0xffff);
-data[3008] = String.fromCharCode (0xffff);
-data[3009] = String.fromCharCode (0xffff);
-data[3010] = String.fromCharCode (0xffff);
-data[3011] = String.fromCharCode (0xffff);
-data[3012] = String.fromCharCode (0xffff);
-data[3013] = String.fromCharCode (0xffff);
-data[3014] = String.fromCharCode (0xffff);
-data[3015] = String.fromCharCode (0xffff);
-data[3016] = String.fromCharCode (0xffff);
-data[3017] = String.fromCharCode (0xffff);
-data[3018] = String.fromCharCode (0xffff);
-data[3019] = String.fromCharCode (0xffff);
-data[3020] = String.fromCharCode (0xffff);
-data[3021] = String.fromCharCode (0xffff);
-data[3022] = String.fromCharCode (0xffff);
-data[3023] = String.fromCharCode (0xffff);
-data[3024] = String.fromCharCode (0xffff);
-data[3025] = String.fromCharCode (0xffff);
-data[3026] = String.fromCharCode (0xffff);
-data[3027] = String.fromCharCode (0xffff);
-data[3028] = String.fromCharCode (0xffff);
-data[3029] = String.fromCharCode (0xffff);
-data[3030] = String.fromCharCode (0xffff);
-data[3031] = String.fromCharCode (0xffff);
-data[3032] = String.fromCharCode (0xffff);
-data[3033] = String.fromCharCode (0xffff);
-data[3034] = String.fromCharCode (0xffff);
-data[3035] = String.fromCharCode (0xffff);
-data[3036] = String.fromCharCode (0xffff);
-data[3037] = String.fromCharCode (0xffff);
-data[3038] = String.fromCharCode (0xffff);
-data[3039] = String.fromCharCode (0xffff);
-data[3040] = String.fromCharCode (0xffff);
-data[3041] = String.fromCharCode (0xffff);
-data[3042] = String.fromCharCode (0xffff);
-data[3043] = String.fromCharCode (0xffff);
-data[3044] = String.fromCharCode (0xffff);
-data[3045] = String.fromCharCode (0xffff);
-data[3046] = String.fromCharCode (0xffff);
-data[3047] = String.fromCharCode (0xffff);
-data[3048] = String.fromCharCode (0xffff);
-data[3049] = String.fromCharCode (0xffff);
-data[3050] = String.fromCharCode (0xffff);
-data[3051] = String.fromCharCode (0xffff);
-data[3052] = String.fromCharCode (0xffff);
-data[3053] = String.fromCharCode (0xffff);
-data[3054] = String.fromCharCode (0xffff);
-data[3055] = String.fromCharCode (0xffff);
-data[3056] = String.fromCharCode (0xffff);
-data[3057] = String.fromCharCode (0xffff);
-data[3058] = String.fromCharCode (0xffff);
-data[3059] = String.fromCharCode (0xffff);
-data[3060] = String.fromCharCode (0xffff);
-data[3061] = String.fromCharCode (0xffff);
-data[3062] = String.fromCharCode (0xffff);
-data[3063] = String.fromCharCode (0xffff);
-data[3064] = String.fromCharCode (0xffff);
-data[3065] = String.fromCharCode (0xffff);
-data[3066] = String.fromCharCode (0xffff);
-data[3067] = String.fromCharCode (0xffff);
-data[3068] = String.fromCharCode (0xffff);
-data[3069] = String.fromCharCode (0xffff);
-data[3070] = String.fromCharCode (0xffff);
-data[3071] = String.fromCharCode (0xffff);
-data[3072] = String.fromCharCode (0xffff);
-data[3073] = String.fromCharCode (0xffff);
-data[3074] = String.fromCharCode (0xffff);
-data[3075] = String.fromCharCode (0xffff);
-data[3076] = String.fromCharCode (0xffff);
-data[3077] = String.fromCharCode (0xffff);
-data[3078] = String.fromCharCode (0xffff);
-data[3079] = String.fromCharCode (0xffff);
-data[3080] = String.fromCharCode (0xffff);
-data[3081] = String.fromCharCode (0xffff);
-data[3082] = String.fromCharCode (0xffff);
-data[3083] = String.fromCharCode (0xffff);
-data[3084] = String.fromCharCode (0xffff);
-data[3085] = String.fromCharCode (0xffff);
-data[3086] = String.fromCharCode (0xffff);
-data[3087] = String.fromCharCode (0xffff);
-data[3088] = String.fromCharCode (0xffff);
-data[3089] = String.fromCharCode (0xffff);
-data[3090] = String.fromCharCode (0xffff);
-data[3091] = String.fromCharCode (0xffff);
-data[3092] = String.fromCharCode (0xffff);
-data[3093] = String.fromCharCode (0xffff);
-data[3094] = String.fromCharCode (0xffff);
-data[3095] = String.fromCharCode (0xffff);
-data[3096] = String.fromCharCode (0xffff);
-data[3097] = String.fromCharCode (0xffff);
-data[3098] = String.fromCharCode (0xffff);
-data[3099] = String.fromCharCode (0xffff);
-data[3100] = String.fromCharCode (0xffff);
-data[3101] = String.fromCharCode (0xffff);
-data[3102] = String.fromCharCode (0xffff);
-data[3103] = String.fromCharCode (0xffff);
-data[3104] = String.fromCharCode (0xffff);
-data[3105] = String.fromCharCode (0xffff);
-data[3106] = String.fromCharCode (0xffff);
-data[3107] = String.fromCharCode (0xffff);
-data[3108] = String.fromCharCode (0xffff);
-data[3109] = String.fromCharCode (0xffff);
-data[3110] = String.fromCharCode (0xffff);
-data[3111] = String.fromCharCode (0xffff);
-data[3112] = String.fromCharCode (0xffff);
-data[3113] = String.fromCharCode (0xffff);
-data[3114] = String.fromCharCode (0xffff);
-data[3115] = String.fromCharCode (0xffff);
-data[3116] = String.fromCharCode (0xffff);
-data[3117] = String.fromCharCode (0xffff);
-data[3118] = String.fromCharCode (0xffff);
-data[3119] = String.fromCharCode (0xffff);
-data[3120] = String.fromCharCode (0xffff);
-data[3121] = String.fromCharCode (0xffff);
-data[3122] = String.fromCharCode (0xffff);
-data[3123] = String.fromCharCode (0xffff);
-data[3124] = String.fromCharCode (0xffff);
-data[3125] = String.fromCharCode (0xffff);
-data[3126] = String.fromCharCode (0xffff);
-data[3127] = String.fromCharCode (0xffff);
-data[3128] = String.fromCharCode (0xffff);
-data[3129] = String.fromCharCode (0xffff);
-data[3130] = String.fromCharCode (0xffff);
-data[3131] = String.fromCharCode (0xffff);
-data[3132] = String.fromCharCode (0xffff);
-data[3133] = String.fromCharCode (0xffff);
-data[3134] = String.fromCharCode (0xffff);
-data[3135] = String.fromCharCode (0xffff);
-data[3136] = String.fromCharCode (0xffff);
-data[3137] = String.fromCharCode (0xffff);
-data[3138] = String.fromCharCode (0xffff);
-data[3139] = String.fromCharCode (0xffff);
-data[3140] = String.fromCharCode (0xffff);
-data[3141] = String.fromCharCode (0xffff);
-data[3142] = String.fromCharCode (0xffff);
-data[3143] = String.fromCharCode (0xffff);
-data[3144] = String.fromCharCode (0xffff);
-data[3145] = String.fromCharCode (0xffff);
-data[3146] = String.fromCharCode (0xffff);
-data[3147] = String.fromCharCode (0xffff);
-data[3148] = String.fromCharCode (0xffff);
-data[3149] = String.fromCharCode (0xffff);
-data[3150] = String.fromCharCode (0xffff);
-data[3151] = String.fromCharCode (0xffff);
-data[3152] = String.fromCharCode (0xffff);
-data[3153] = String.fromCharCode (0xffff);
-data[3154] = String.fromCharCode (0xffff);
-data[3155] = String.fromCharCode (0xffff);
-data[3156] = String.fromCharCode (0xffff);
-data[3157] = String.fromCharCode (0xffff);
-data[3158] = String.fromCharCode (0xffff);
-data[3159] = String.fromCharCode (0xffff);
-data[3160] = String.fromCharCode (0xffff);
-data[3161] = String.fromCharCode (0xffff);
-data[3162] = String.fromCharCode (0xffff);
-data[3163] = String.fromCharCode (0xffff);
-data[3164] = String.fromCharCode (0xffff);
-data[3165] = String.fromCharCode (0xffff);
-data[3166] = String.fromCharCode (0xffff);
-data[3167] = String.fromCharCode (0xffff);
-data[3168] = String.fromCharCode (0xffff);
-data[3169] = String.fromCharCode (0xffff);
-data[3170] = String.fromCharCode (0xffff);
-data[3171] = String.fromCharCode (0xffff);
-data[3172] = String.fromCharCode (0xffff);
-data[3173] = String.fromCharCode (0xffff);
-data[3174] = String.fromCharCode (0xffff);
-data[3175] = String.fromCharCode (0xffff);
-data[3176] = String.fromCharCode (0xffff);
-data[3177] = String.fromCharCode (0xffff);
-data[3178] = String.fromCharCode (0xffff);
-data[3179] = String.fromCharCode (0xffff);
-data[3180] = String.fromCharCode (0xffff);
-data[3181] = String.fromCharCode (0xffff);
-data[3182] = String.fromCharCode (0xffff);
-data[3183] = String.fromCharCode (0xffff);
-data[3184] = String.fromCharCode (0xffff);
-data[3185] = String.fromCharCode (0xffff);
-data[3186] = String.fromCharCode (0xffff);
-data[3187] = String.fromCharCode (0xffff);
-data[3188] = String.fromCharCode (0xffff);
-data[3189] = String.fromCharCode (0xffff);
-data[3190] = String.fromCharCode (0xffff);
-data[3191] = String.fromCharCode (0xffff);
-data[3192] = String.fromCharCode (0xffff);
-data[3193] = String.fromCharCode (0xffff);
-data[3194] = String.fromCharCode (0xffff);
-data[3195] = String.fromCharCode (0xffff);
-data[3196] = String.fromCharCode (0xffff);
-data[3197] = String.fromCharCode (0xffff);
-data[3198] = String.fromCharCode (0xffff);
-data[3199] = String.fromCharCode (0xffff);
-data[3200] = String.fromCharCode (0xffff);
-data[3201] = String.fromCharCode (0xffff);
-data[3202] = String.fromCharCode (0xffff);
-data[3203] = String.fromCharCode (0xffff);
-data[3204] = String.fromCharCode (0xffff);
-data[3205] = String.fromCharCode (0xffff);
-data[3206] = String.fromCharCode (0xffff);
-data[3207] = String.fromCharCode (0xffff);
-data[3208] = String.fromCharCode (0xffff);
-data[3209] = String.fromCharCode (0xffff);
-data[3210] = String.fromCharCode (0xffff);
-data[3211] = String.fromCharCode (0xffff);
-data[3212] = String.fromCharCode (0xffff);
-data[3213] = String.fromCharCode (0xffff);
-data[3214] = String.fromCharCode (0xffff);
-data[3215] = String.fromCharCode (0xffff);
-data[3216] = String.fromCharCode (0xffff);
-data[3217] = String.fromCharCode (0xffff);
-data[3218] = String.fromCharCode (0xffff);
-data[3219] = String.fromCharCode (0xffff);
-data[3220] = String.fromCharCode (0xffff);
-data[3221] = String.fromCharCode (0xffff);
-data[3222] = String.fromCharCode (0xffff);
-data[3223] = String.fromCharCode (0xffff);
-data[3224] = String.fromCharCode (0xffff);
-data[3225] = String.fromCharCode (0xffff);
-data[3226] = String.fromCharCode (0xffff);
-data[3227] = String.fromCharCode (0xffff);
-data[3228] = String.fromCharCode (0xffff);
-data[3229] = String.fromCharCode (0xffff);
-data[3230] = String.fromCharCode (0xffff);
-data[3231] = String.fromCharCode (0xffff);
-data[3232] = String.fromCharCode (0xffff);
-data[3233] = String.fromCharCode (0xffff);
-data[3234] = String.fromCharCode (0xffff);
-data[3235] = String.fromCharCode (0xffff);
-data[3236] = String.fromCharCode (0xffff);
-data[3237] = String.fromCharCode (0xffff);
-data[3238] = String.fromCharCode (0xffff);
-data[3239] = String.fromCharCode (0xffff);
-data[3240] = String.fromCharCode (0xffff);
-data[3241] = String.fromCharCode (0xffff);
-data[3242] = String.fromCharCode (0xffff);
-data[3243] = String.fromCharCode (0xffff);
-data[3244] = String.fromCharCode (0xffff);
-data[3245] = String.fromCharCode (0xffff);
-data[3246] = String.fromCharCode (0xffff);
-data[3247] = String.fromCharCode (0xffff);
-data[3248] = String.fromCharCode (0xffff);
-data[3249] = String.fromCharCode (0xffff);
-data[3250] = String.fromCharCode (0xffff);
-data[3251] = String.fromCharCode (0xffff);
-data[3252] = String.fromCharCode (0xffff);
-data[3253] = String.fromCharCode (0xffff);
-data[3254] = String.fromCharCode (0xffff);
-data[3255] = String.fromCharCode (0xffff);
-data[3256] = String.fromCharCode (0xffff);
-data[3257] = String.fromCharCode (0xffff);
-data[3258] = String.fromCharCode (0xffff);
-data[3259] = String.fromCharCode (0xffff);
-data[3260] = String.fromCharCode (0xffff);
-data[3261] = String.fromCharCode (0xffff);
-data[3262] = String.fromCharCode (0xffff);
-data[3263] = String.fromCharCode (0xffff);
-data[3264] = String.fromCharCode (0xffff);
-data[3265] = String.fromCharCode (0xffff);
-data[3266] = String.fromCharCode (0xffff);
-data[3267] = String.fromCharCode (0xffff);
-data[3268] = String.fromCharCode (0xffff);
-data[3269] = String.fromCharCode (0xffff);
-data[3270] = String.fromCharCode (0xffff);
-data[3271] = String.fromCharCode (0xffff);
-data[3272] = String.fromCharCode (0xffff);
-data[3273] = String.fromCharCode (0xffff);
-data[3274] = String.fromCharCode (0xffff);
-data[3275] = String.fromCharCode (0xffff);
-data[3276] = String.fromCharCode (0xffff);
-data[3277] = String.fromCharCode (0xffff);
-data[3278] = String.fromCharCode (0xffff);
-data[3279] = String.fromCharCode (0xffff);
-data[3280] = String.fromCharCode (0xffff);
-data[3281] = String.fromCharCode (0xffff);
-data[3282] = String.fromCharCode (0xffff);
-data[3283] = String.fromCharCode (0xffff);
-data[3284] = String.fromCharCode (0xffff);
-data[3285] = String.fromCharCode (0xffff);
-data[3286] = String.fromCharCode (0xffff);
-data[3287] = String.fromCharCode (0xffff);
-data[3288] = String.fromCharCode (0xffff);
-data[3289] = String.fromCharCode (0xffff);
-data[3290] = String.fromCharCode (0xffff);
-data[3291] = String.fromCharCode (0xffff);
-data[3292] = String.fromCharCode (0xffff);
-data[3293] = String.fromCharCode (0xffff);
-data[3294] = String.fromCharCode (0xffff);
-data[3295] = String.fromCharCode (0xffff);
-data[3296] = String.fromCharCode (0xffff);
-data[3297] = String.fromCharCode (0xffff);
-data[3298] = String.fromCharCode (0xffff);
-data[3299] = String.fromCharCode (0xffff);
-data[3300] = String.fromCharCode (0xffff);
-data[3301] = String.fromCharCode (0xffff);
-data[3302] = String.fromCharCode (0xffff);
-data[3303] = String.fromCharCode (0xffff);
-data[3304] = String.fromCharCode (0xffff);
-data[3305] = String.fromCharCode (0xffff);
-data[3306] = String.fromCharCode (0xffff);
-data[3307] = String.fromCharCode (0xffff);
-data[3308] = String.fromCharCode (0xffff);
-data[3309] = String.fromCharCode (0xffff);
-data[3310] = String.fromCharCode (0xffff);
-data[3311] = String.fromCharCode (0xffff);
-data[3312] = String.fromCharCode (0xffff);
-data[3313] = String.fromCharCode (0xffff);
-data[3314] = String.fromCharCode (0xffff);
-data[3315] = String.fromCharCode (0xffff);
-data[3316] = String.fromCharCode (0xffff);
-data[3317] = String.fromCharCode (0xffff);
-data[3318] = String.fromCharCode (0xffff);
-data[3319] = String.fromCharCode (0xffff);
-data[3320] = String.fromCharCode (0xffff);
-data[3321] = String.fromCharCode (0xffff);
-data[3322] = String.fromCharCode (0xffff);
-data[3323] = String.fromCharCode (0xffff);
-data[3324] = String.fromCharCode (0xffff);
-data[3325] = String.fromCharCode (0xffff);
-data[3326] = String.fromCharCode (0xffff);
-data[3327] = String.fromCharCode (0xffff);
-data[3328] = String.fromCharCode (0xffff);
-data[3329] = String.fromCharCode (0xffff);
-data[3330] = String.fromCharCode (0xffff);
-data[3331] = String.fromCharCode (0xffff);
-data[3332] = String.fromCharCode (0xffff);
-data[3333] = String.fromCharCode (0xffff);
-data[3334] = String.fromCharCode (0xffff);
-data[3335] = String.fromCharCode (0xffff);
-data[3336] = String.fromCharCode (0xffff);
-data[3337] = String.fromCharCode (0xffff);
-data[3338] = String.fromCharCode (0xffff);
-data[3339] = String.fromCharCode (0xffff);
-data[3340] = String.fromCharCode (0xffff);
-data[3341] = String.fromCharCode (0xffff);
-data[3342] = String.fromCharCode (0xffff);
-data[3343] = String.fromCharCode (0xffff);
-data[3344] = String.fromCharCode (0xffff);
-data[3345] = String.fromCharCode (0xffff);
-data[3346] = String.fromCharCode (0xffff);
-data[3347] = String.fromCharCode (0xffff);
-data[3348] = String.fromCharCode (0xffff);
-data[3349] = String.fromCharCode (0xffff);
-data[3350] = String.fromCharCode (0xffff);
-data[3351] = String.fromCharCode (0xffff);
-data[3352] = String.fromCharCode (0xffff);
-data[3353] = String.fromCharCode (0xffff);
-data[3354] = String.fromCharCode (0xffff);
-data[3355] = String.fromCharCode (0xffff);
-data[3356] = String.fromCharCode (0xffff);
-data[3357] = String.fromCharCode (0xffff);
-data[3358] = String.fromCharCode (0xffff);
-data[3359] = String.fromCharCode (0xffff);
-data[3360] = String.fromCharCode (0xffff);
-data[3361] = String.fromCharCode (0xffff);
-data[3362] = String.fromCharCode (0xffff);
-data[3363] = String.fromCharCode (0xffff);
-data[3364] = String.fromCharCode (0xffff);
-data[3365] = String.fromCharCode (0xffff);
-data[3366] = String.fromCharCode (0xffff);
-data[3367] = String.fromCharCode (0xffff);
-data[3368] = String.fromCharCode (0xffff);
-data[3369] = String.fromCharCode (0xffff);
-data[3370] = String.fromCharCode (0xffff);
-data[3371] = String.fromCharCode (0xffff);
-data[3372] = String.fromCharCode (0xffff);
-data[3373] = String.fromCharCode (0xffff);
-data[3374] = String.fromCharCode (0xffff);
-data[3375] = String.fromCharCode (0xffff);
-data[3376] = String.fromCharCode (0xffff);
-data[3377] = String.fromCharCode (0xffff);
-data[3378] = String.fromCharCode (0xffff);
-data[3379] = String.fromCharCode (0xffff);
-data[3380] = String.fromCharCode (0xffff);
-data[3381] = String.fromCharCode (0xffff);
-data[3382] = String.fromCharCode (0xffff);
-data[3383] = String.fromCharCode (0xffff);
-data[3384] = String.fromCharCode (0xffff);
-data[3385] = String.fromCharCode (0xffff);
-data[3386] = String.fromCharCode (0xffff);
-data[3387] = String.fromCharCode (0xffff);
-data[3388] = String.fromCharCode (0xffff);
-data[3389] = String.fromCharCode (0xffff);
-data[3390] = String.fromCharCode (0xffff);
-data[3391] = String.fromCharCode (0xffff);
-data[3392] = String.fromCharCode (0xffff);
-data[3393] = String.fromCharCode (0xffff);
-data[3394] = String.fromCharCode (0xffff);
-data[3395] = String.fromCharCode (0xffff);
-data[3396] = String.fromCharCode (0xffff);
-data[3397] = String.fromCharCode (0xffff);
-data[3398] = String.fromCharCode (0xffff);
-data[3399] = String.fromCharCode (0xffff);
-data[3400] = String.fromCharCode (0xffff);
-data[3401] = String.fromCharCode (0xffff);
-data[3402] = String.fromCharCode (0xffff);
-data[3403] = String.fromCharCode (0xffff);
-data[3404] = String.fromCharCode (0xffff);
-data[3405] = String.fromCharCode (0xffff);
-data[3406] = String.fromCharCode (0xffff);
-data[3407] = String.fromCharCode (0xffff);
-data[3408] = String.fromCharCode (0xffff);
-data[3409] = String.fromCharCode (0xffff);
-data[3410] = String.fromCharCode (0xffff);
-data[3411] = String.fromCharCode (0xffff);
-data[3412] = String.fromCharCode (0xffff);
-data[3413] = String.fromCharCode (0xffff);
-data[3414] = String.fromCharCode (0xffff);
-data[3415] = String.fromCharCode (0xffff);
-data[3416] = String.fromCharCode (0xffff);
-data[3417] = String.fromCharCode (0xffff);
-data[3418] = String.fromCharCode (0xffff);
-data[3419] = String.fromCharCode (0xffff);
-data[3420] = String.fromCharCode (0xffff);
-data[3421] = String.fromCharCode (0xffff);
-data[3422] = String.fromCharCode (0xffff);
-data[3423] = String.fromCharCode (0xffff);
-data[3424] = String.fromCharCode (0xffff);
-data[3425] = String.fromCharCode (0xffff);
-data[3426] = String.fromCharCode (0xffff);
-data[3427] = String.fromCharCode (0xffff);
-data[3428] = String.fromCharCode (0xffff);
-data[3429] = String.fromCharCode (0xffff);
-data[3430] = String.fromCharCode (0xffff);
-data[3431] = String.fromCharCode (0xffff);
-data[3432] = String.fromCharCode (0xffff);
-data[3433] = String.fromCharCode (0xffff);
-data[3434] = String.fromCharCode (0xffff);
-data[3435] = String.fromCharCode (0xffff);
-data[3436] = String.fromCharCode (0xffff);
-data[3437] = String.fromCharCode (0xffff);
-data[3438] = String.fromCharCode (0xffff);
-data[3439] = String.fromCharCode (0xffff);
-data[3440] = String.fromCharCode (0xffff);
-data[3441] = String.fromCharCode (0xffff);
-data[3442] = String.fromCharCode (0xffff);
-data[3443] = String.fromCharCode (0xffff);
-data[3444] = String.fromCharCode (0xffff);
-data[3445] = String.fromCharCode (0xffff);
-data[3446] = String.fromCharCode (0xffff);
-data[3447] = String.fromCharCode (0xffff);
-data[3448] = String.fromCharCode (0xffff);
-data[3449] = String.fromCharCode (0xffff);
-data[3450] = String.fromCharCode (0x000f);
-data[3984] = String.fromCharCode (0xffff);
-data[3985] = String.fromCharCode (0xffff);
-data[3986] = String.fromCharCode (0xffff);
-data[3987] = String.fromCharCode (0xffff);
-data[3988] = String.fromCharCode (0xffff);
-data[3989] = String.fromCharCode (0xffff);
-data[3990] = String.fromCharCode (0xffff);
-data[3991] = String.fromCharCode (0xffff);
-data[3992] = String.fromCharCode (0xffff);
-data[3993] = String.fromCharCode (0xffff);
-data[3994] = String.fromCharCode (0xffff);
-data[3995] = String.fromCharCode (0xffff);
-data[3996] = String.fromCharCode (0xffff);
-data[3997] = String.fromCharCode (0xffff);
-data[3998] = String.fromCharCode (0xffff);
-data[3999] = String.fromCharCode (0xffff);
-data[4000] = String.fromCharCode (0xffff);
-data[4001] = String.fromCharCode (0xffff);
-data[4002] = String.fromCharCode (0x3fff);
-data[4016] = String.fromCharCode (0x007f);
-data[4017] = String.fromCharCode (0x80f8);
-data[4018] = String.fromCharCode (0xfdff);
-data[4019] = String.fromCharCode (0x5f7f);
-data[4020] = String.fromCharCode (0xffdb);
-data[4021] = String.fromCharCode (0xffff);
-data[4022] = String.fromCharCode (0xffff);
-data[4023] = String.fromCharCode (0xffff);
-data[4024] = String.fromCharCode (0xffff);
-data[4025] = String.fromCharCode (0xffff);
-data[4026] = String.fromCharCode (0xffff);
-data[4027] = String.fromCharCode (0x0003);
-data[4029] = String.fromCharCode (0xfff8);
-data[4030] = String.fromCharCode (0xffff);
-data[4031] = String.fromCharCode (0xffff);
-data[4032] = String.fromCharCode (0xffff);
-data[4033] = String.fromCharCode (0xffff);
-data[4034] = String.fromCharCode (0xffff);
-data[4035] = String.fromCharCode (0xffff);
-data[4036] = String.fromCharCode (0xffff);
-data[4037] = String.fromCharCode (0xffff);
-data[4038] = String.fromCharCode (0xffff);
-data[4039] = String.fromCharCode (0xffff);
-data[4040] = String.fromCharCode (0xffff);
-data[4041] = String.fromCharCode (0xffff);
-data[4042] = String.fromCharCode (0xffff);
-data[4043] = String.fromCharCode (0xffff);
-data[4044] = String.fromCharCode (0xffff);
-data[4045] = String.fromCharCode (0xffff);
-data[4046] = String.fromCharCode (0xffff);
-data[4047] = String.fromCharCode (0xffff);
-data[4048] = String.fromCharCode (0xffff);
-data[4049] = String.fromCharCode (0xffff);
-data[4050] = String.fromCharCode (0xffff);
-data[4051] = String.fromCharCode (0x3fff);
-data[4053] = String.fromCharCode (0xffff);
-data[4054] = String.fromCharCode (0xffff);
-data[4055] = String.fromCharCode (0xffff);
-data[4056] = String.fromCharCode (0xffff);
-data[4057] = String.fromCharCode (0xfffc);
-data[4058] = String.fromCharCode (0xffff);
-data[4059] = String.fromCharCode (0xffff);
-data[4060] = String.fromCharCode (0x00ff);
-data[4063] = String.fromCharCode (0x0fff);
-data[4071] = String.fromCharCode (0xffd7);
-data[4072] = String.fromCharCode (0xffff);
-data[4073] = String.fromCharCode (0xffff);
-data[4074] = String.fromCharCode (0xffff);
-data[4075] = String.fromCharCode (0xffff);
-data[4076] = String.fromCharCode (0xffff);
-data[4077] = String.fromCharCode (0xffff);
-data[4078] = String.fromCharCode (0xffff);
-data[4079] = String.fromCharCode (0x1fff);
-data[4082] = String.fromCharCode (0xfffe);
-data[4083] = String.fromCharCode (0x07ff);
-data[4084] = String.fromCharCode (0xfffe);
-data[4085] = String.fromCharCode (0x07ff);
-data[4086] = String.fromCharCode (0xffc0);
-data[4087] = String.fromCharCode (0xffff);
-data[4088] = String.fromCharCode (0xffff);
-data[4089] = String.fromCharCode (0xffff);
-data[4090] = String.fromCharCode (0xffff);
-data[4091] = String.fromCharCode (0x7fff);
-data[4092] = String.fromCharCode (0xfcfc);
-data[4093] = String.fromCharCode (0x1cfc);
-data[4100] = String.fromCharCode (0xfffe);
-data[4101] = String.fromCharCode (0x07ff);
-data[4102] = String.fromCharCode (0xfffe);
-data[4103] = String.fromCharCode (0x07ff);
-data[4106] = String.fromCharCode (0x0400);
-data[4107] = String.fromCharCode (0x0420);
-data[4108] = String.fromCharCode (0xffff);
-data[4109] = String.fromCharCode (0xff7f);
-data[4110] = String.fromCharCode (0xffff);
-data[4111] = String.fromCharCode (0xff7f);
-data[4112] = String.fromCharCode (0xffff);
-data[4113] = String.fromCharCode (0xffff);
-data[4114] = String.fromCharCode (0xffff);
-data[4115] = String.fromCharCode (0xffff);
-data[4116] = String.fromCharCode (0xffff);
-data[4117] = String.fromCharCode (0xffff);
-data[4118] = String.fromCharCode (0xffff);
-data[4119] = String.fromCharCode (0xffff);
-data[4120] = String.fromCharCode (0xffff);
-data[4121] = String.fromCharCode (0xffff);
-data[4122] = String.fromCharCode (0xffff);
-data[4123] = String.fromCharCode (0xffff);
-data[4124] = String.fromCharCode (0xffff);
-data[4125] = String.fromCharCode (0xffff);
-data[4126] = String.fromCharCode (0xffff);
-data[4127] = String.fromCharCode (0xfc3f);
-data[4128] = String.fromCharCode (0xffff);
-data[4129] = String.fromCharCode (0x00ff);
-data[4133] = String.fromCharCode (0xffff);
-data[4134] = String.fromCharCode (0xffff);
-data[4135] = String.fromCharCode (0xffff);
-data[4136] = String.fromCharCode (0xffff);
-data[4137] = String.fromCharCode (0xffff);
-data[4138] = String.fromCharCode (0x01ff);
-data[4139] = String.fromCharCode (0xf9ff);
-data[4140] = String.fromCharCode (0x0003);
-data[4141] = String.fromCharCode (0x0003);
-data[4142] = String.fromCharCode (0x001f);
-data[4151] = String.fromCharCode (0x0400);
-data[4152] = String.fromCharCode (0xd740);
-data[4153] = String.fromCharCode (0xffff);
-data[4154] = String.fromCharCode (0xfffb);
-data[4155] = String.fromCharCode (0xffff);
-data[4156] = String.fromCharCode (0x7fff);
-data[4157] = String.fromCharCode (0x547f);
-data[4158] = String.fromCharCode (0x00fd);
-});
-c$.white_f = Clazz.defineMethod (c$, "white_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.white = new com.stevesoft.pat.Bits (data);
-data[0] = String.fromCharCode (0x3e00);
-data[1] = String.fromCharCode (0xf000);
-data[2] = String.fromCharCode (0x0001);
-data[512] = String.fromCharCode (0x0fff);
-data[514] = String.fromCharCode (0x0300);
-data[768] = String.fromCharCode (0x0001);
-data[4096] = String.fromCharCode (0x3e00);
-data[4097] = String.fromCharCode (0xf000);
-data[4098] = String.fromCharCode (0x0001);
-});
-c$.punct_f = Clazz.defineMethod (c$, "punct_f",
-function () {
-var data = Clazz.newCharArray (4159, '\0');
-com.stevesoft.pat.Bits.punct = new com.stevesoft.pat.Bits (data);
-data[2] = String.fromCharCode (0xf7ee);
-data[3] = String.fromCharCode (0x8c00);
-data[4] = String.fromCharCode (0x0001);
-data[5] = String.fromCharCode (0xb800);
-data[7] = String.fromCharCode (0x2800);
-data[10] = String.fromCharCode (0x2802);
-data[11] = String.fromCharCode (0x8880);
-data[55] = String.fromCharCode (0x4030);
-data[56] = String.fromCharCode (0x0080);
-data[85] = String.fromCharCode (0xfc00);
-data[88] = String.fromCharCode (0x0200);
-data[91] = String.fromCharCode (0x4000);
-data[92] = String.fromCharCode (0x0009);
-data[95] = String.fromCharCode (0x0018);
-data[96] = String.fromCharCode (0x1000);
-data[97] = String.fromCharCode (0x8800);
-data[102] = String.fromCharCode (0x3c00);
-data[109] = String.fromCharCode (0x0010);
-data[150] = '0';
-data[151] = String.fromCharCode (0x0001);
-data[226] = String.fromCharCode (0x8000);
-data[229] = String.fromCharCode (0x0c00);
-data[234] = String.fromCharCode (0x8000);
-data[240] = String.fromCharCode (0xfff0);
-data[241] = String.fromCharCode (0x0007);
-data[243] = String.fromCharCode (0x3c00);
-data[248] = String.fromCharCode (0x0020);
-data[271] = String.fromCharCode (0x0800);
-data[513] = String.fromCharCode (0xffff);
-data[514] = String.fromCharCode (0x00ff);
-data[515] = String.fromCharCode (0xffff);
-data[516] = 'o';
-data[519] = String.fromCharCode (0x6000);
-data[520] = String.fromCharCode (0x6000);
-data[562] = String.fromCharCode (0x0600);
-data[768] = String.fromCharCode (0xff4e);
-data[769] = String.fromCharCode (0xfff3);
-data[771] = String.fromCharCode (0x0001);
-data[783] = String.fromCharCode (0x0800);
-data[4051] = String.fromCharCode (0xc000);
-data[4067] = String.fromCharCode (0xffff);
-data[4068] = String.fromCharCode (0xfe1f);
-data[4069] = String.fromCharCode (0xfff7);
-data[4070] = String.fromCharCode (0x0d0b);
-data[4080] = String.fromCharCode (0xf7ee);
-data[4081] = String.fromCharCode (0x8c00);
-data[4082] = String.fromCharCode (0x0001);
-data[4083] = String.fromCharCode (0xb800);
-data[4085] = String.fromCharCode (0x2800);
-data[4086] = String.fromCharCode (0x003e);
-data[4098] = String.fromCharCode (0xf7ee);
-data[4099] = String.fromCharCode (0x8c00);
-data[4100] = String.fromCharCode (0x0001);
-data[4101] = String.fromCharCode (0xb800);
-data[4103] = String.fromCharCode (0x2800);
-data[4106] = String.fromCharCode (0x2802);
-data[4107] = String.fromCharCode (0x8880);
-data[4151] = String.fromCharCode (0x4030);
-data[4152] = String.fromCharCode (0x0080);
-});
-Clazz.defineStatics (c$,
-"upper", null,
-"lower", null,
-"title", null,
-"currency", null,
-"decimal_digit", null,
-"math", null,
-"letter", null,
-"white", null,
-"punct", null);
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.decorateAsClass (function () {
+this.carray = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Bits");
+Clazz.makeConstructor (c$,
+function (carray) {
+this.carray = carray;
+}, "~A");
+Clazz.defineMethod (c$, "get",
+function (i) {
+return ((this.carray[i >> 4]).charCodeAt (0) & (1 << (i & 15))) != 0;
+}, "~N");
+Clazz.defineMethod (c$, "set",
+function (i, b) {
+if (b) {
+this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) | ((String.fromCharCode (1)).charCodeAt (0) << (i & 15)));
+} else {
+this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) & (String.fromCharCode (~(1 << (i & 15)))).charCodeAt (0));
+}}, "~N,~B");
+c$.upper_f = Clazz.defineMethod (c$, "upper_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.upper = new com.stevesoft.pat.Bits (data);
+data[4] = String.fromCharCode (0xfffe);
+data[5] = String.fromCharCode (0x07ff);
+data[12] = String.fromCharCode (0xffff);
+data[13] = String.fromCharCode (0x7f7f);
+data[16] = String.fromCharCode (0x5555);
+data[17] = String.fromCharCode (0x5555);
+data[18] = String.fromCharCode (0x5555);
+data[19] = String.fromCharCode (0xaa55);
+data[20] = String.fromCharCode (0x54aa);
+data[21] = String.fromCharCode (0x5555);
+data[22] = String.fromCharCode (0x5555);
+data[23] = String.fromCharCode (0x2b55);
+data[24] = String.fromCharCode (0xced6);
+data[25] = String.fromCharCode (0xb1db);
+data[26] = String.fromCharCode (0xd2d5);
+data[27] = String.fromCharCode (0x11ae);
+data[28] = String.fromCharCode (0xa490);
+data[29] = String.fromCharCode (0x4aaa);
+data[30] = String.fromCharCode (0x5555);
+data[31] = String.fromCharCode (0x5412);
+data[32] = String.fromCharCode (0x5555);
+data[33] = 'U';
+data[56] = String.fromCharCode (0xd740);
+data[57] = String.fromCharCode (0xfffe);
+data[58] = String.fromCharCode (0x0ffb);
+data[61] = String.fromCharCode (0x541c);
+data[62] = String.fromCharCode (0x5555);
+data[64] = String.fromCharCode (0xdffe);
+data[65] = String.fromCharCode (0xffff);
+data[66] = String.fromCharCode (0xffff);
+data[70] = String.fromCharCode (0x5555);
+data[71] = String.fromCharCode (0x5555);
+data[72] = String.fromCharCode (0x0001);
+data[73] = String.fromCharCode (0x5555);
+data[74] = String.fromCharCode (0x5555);
+data[75] = String.fromCharCode (0x5555);
+data[76] = String.fromCharCode (0x088a);
+data[77] = String.fromCharCode (0x5555);
+data[78] = String.fromCharCode (0x4555);
+data[79] = String.fromCharCode (0x0115);
+data[83] = String.fromCharCode (0xfffe);
+data[84] = String.fromCharCode (0xffff);
+data[85] = String.fromCharCode (0x007f);
+data[266] = String.fromCharCode (0xffff);
+data[267] = String.fromCharCode (0xffff);
+data[268] = String.fromCharCode (0x003f);
+data[480] = String.fromCharCode (0x5555);
+data[481] = String.fromCharCode (0x5555);
+data[482] = String.fromCharCode (0x5555);
+data[483] = String.fromCharCode (0x5555);
+data[484] = String.fromCharCode (0x5555);
+data[485] = String.fromCharCode (0x5555);
+data[486] = String.fromCharCode (0x5555);
+data[487] = String.fromCharCode (0x5555);
+data[488] = String.fromCharCode (0x5555);
+data[489] = String.fromCharCode (0x0015);
+data[490] = String.fromCharCode (0x5555);
+data[491] = String.fromCharCode (0x5555);
+data[492] = String.fromCharCode (0x5555);
+data[493] = String.fromCharCode (0x5555);
+data[494] = String.fromCharCode (0x5555);
+data[495] = String.fromCharCode (0x0155);
+data[496] = String.fromCharCode (0xff00);
+data[497] = String.fromCharCode (0x3f00);
+data[498] = String.fromCharCode (0xff00);
+data[499] = String.fromCharCode (0xff00);
+data[500] = String.fromCharCode (0x3f00);
+data[501] = String.fromCharCode (0xaa00);
+data[502] = String.fromCharCode (0xff00);
+data[504] = String.fromCharCode (0xff00);
+data[505] = String.fromCharCode (0xff00);
+data[506] = String.fromCharCode (0xff00);
+data[507] = String.fromCharCode (0x5f00);
+data[508] = String.fromCharCode (0x1f00);
+data[509] = String.fromCharCode (0x0f00);
+data[510] = String.fromCharCode (0x1f00);
+data[511] = String.fromCharCode (0x1f00);
+data[528] = String.fromCharCode (0x3884);
+data[529] = String.fromCharCode (0x3f27);
+data[530] = String.fromCharCode (0x3d50);
+data[531] = String.fromCharCode (0x000b);
+data[4082] = String.fromCharCode (0xfffe);
+data[4083] = String.fromCharCode (0x07ff);
+data[4100] = String.fromCharCode (0xfffe);
+data[4101] = String.fromCharCode (0x07ff);
+data[4108] = String.fromCharCode (0xffff);
+data[4109] = String.fromCharCode (0x7f7f);
+data[4112] = String.fromCharCode (0x5555);
+data[4113] = String.fromCharCode (0x5555);
+data[4114] = String.fromCharCode (0x5555);
+data[4115] = String.fromCharCode (0xaa55);
+data[4116] = String.fromCharCode (0x54aa);
+data[4117] = String.fromCharCode (0x5555);
+data[4118] = String.fromCharCode (0x5555);
+data[4119] = String.fromCharCode (0x2b55);
+data[4120] = String.fromCharCode (0xced6);
+data[4121] = String.fromCharCode (0xb1db);
+data[4122] = String.fromCharCode (0xd2d5);
+data[4123] = String.fromCharCode (0x11ae);
+data[4124] = String.fromCharCode (0xa490);
+data[4125] = String.fromCharCode (0x4aaa);
+data[4126] = String.fromCharCode (0x5555);
+data[4127] = String.fromCharCode (0x5412);
+data[4128] = String.fromCharCode (0x5555);
+data[4129] = 'U';
+data[4152] = String.fromCharCode (0xd740);
+data[4153] = String.fromCharCode (0xfffe);
+data[4154] = String.fromCharCode (0x0ffb);
+data[4157] = String.fromCharCode (0x541c);
+data[4158] = 'U';
+});
+c$.lower_f = Clazz.defineMethod (c$, "lower_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.lower = new com.stevesoft.pat.Bits (data);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[13] = String.fromCharCode (0x8000);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xaaaa);
+data[17] = String.fromCharCode (0xaaaa);
+data[18] = String.fromCharCode (0xaaaa);
+data[19] = String.fromCharCode (0x55aa);
+data[20] = String.fromCharCode (0xab55);
+data[21] = String.fromCharCode (0xaaaa);
+data[22] = String.fromCharCode (0xaaaa);
+data[23] = String.fromCharCode (0xd4aa);
+data[24] = String.fromCharCode (0x3129);
+data[25] = String.fromCharCode (0x4e24);
+data[26] = String.fromCharCode (0x292a);
+data[27] = String.fromCharCode (0x2651);
+data[28] = String.fromCharCode (0x5240);
+data[29] = String.fromCharCode (0xb555);
+data[30] = String.fromCharCode (0xaaaa);
+data[31] = String.fromCharCode (0xa829);
+data[32] = String.fromCharCode (0xaaaa);
+data[33] = String.fromCharCode (0x00aa);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[57] = String.fromCharCode (0x0001);
+data[58] = String.fromCharCode (0xf000);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = 'c';
+data[62] = String.fromCharCode (0xaaa8);
+data[63] = String.fromCharCode (0x0007);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xaaaa);
+data[71] = String.fromCharCode (0xaaaa);
+data[72] = String.fromCharCode (0x0002);
+data[73] = String.fromCharCode (0xaaaa);
+data[74] = String.fromCharCode (0xaaaa);
+data[75] = String.fromCharCode (0xaaaa);
+data[76] = String.fromCharCode (0x1114);
+data[77] = String.fromCharCode (0xaaaa);
+data[78] = String.fromCharCode (0x8aaa);
+data[79] = String.fromCharCode (0x022a);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[480] = String.fromCharCode (0xaaaa);
+data[481] = String.fromCharCode (0xaaaa);
+data[482] = String.fromCharCode (0xaaaa);
+data[483] = String.fromCharCode (0xaaaa);
+data[484] = String.fromCharCode (0xaaaa);
+data[485] = String.fromCharCode (0xaaaa);
+data[486] = String.fromCharCode (0xaaaa);
+data[487] = String.fromCharCode (0xaaaa);
+data[488] = String.fromCharCode (0xaaaa);
+data[489] = String.fromCharCode (0x0fea);
+data[490] = String.fromCharCode (0xaaaa);
+data[491] = String.fromCharCode (0xaaaa);
+data[492] = String.fromCharCode (0xaaaa);
+data[493] = String.fromCharCode (0xaaaa);
+data[494] = String.fromCharCode (0xaaaa);
+data[495] = String.fromCharCode (0x02aa);
+data[496] = String.fromCharCode (0x00ff);
+data[497] = String.fromCharCode (0x003f);
+data[498] = String.fromCharCode (0x00ff);
+data[499] = String.fromCharCode (0x00ff);
+data[500] = String.fromCharCode (0x003f);
+data[501] = String.fromCharCode (0x00ff);
+data[502] = String.fromCharCode (0x00ff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0x00ff);
+data[505] = String.fromCharCode (0x00ff);
+data[506] = String.fromCharCode (0x00ff);
+data[507] = String.fromCharCode (0x00df);
+data[508] = String.fromCharCode (0x00dc);
+data[509] = String.fromCharCode (0x00cf);
+data[510] = String.fromCharCode (0x00ff);
+data[511] = String.fromCharCode (0x00dc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xc400);
+data[529] = String.fromCharCode (0x0008);
+data[530] = String.fromCharCode (0xc000);
+data[531] = String.fromCharCode (0x0010);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x00f8);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4109] = String.fromCharCode (0x8000);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xaaaa);
+data[4113] = String.fromCharCode (0xaaaa);
+data[4114] = String.fromCharCode (0xaaaa);
+data[4115] = String.fromCharCode (0x55aa);
+data[4116] = String.fromCharCode (0xab55);
+data[4117] = String.fromCharCode (0xaaaa);
+data[4118] = String.fromCharCode (0xaaaa);
+data[4119] = String.fromCharCode (0xd4aa);
+data[4120] = String.fromCharCode (0x3129);
+data[4121] = String.fromCharCode (0x4e24);
+data[4122] = String.fromCharCode (0x292a);
+data[4123] = String.fromCharCode (0x2651);
+data[4124] = String.fromCharCode (0x5240);
+data[4125] = String.fromCharCode (0xb555);
+data[4126] = String.fromCharCode (0xaaaa);
+data[4127] = String.fromCharCode (0xa829);
+data[4128] = String.fromCharCode (0xaaaa);
+data[4129] = String.fromCharCode (0x00aa);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4153] = String.fromCharCode (0x0001);
+data[4154] = String.fromCharCode (0xf000);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = 'c';
+data[4158] = String.fromCharCode (0x00a8);
+});
+c$.title_f = Clazz.defineMethod (c$, "title_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.title = new com.stevesoft.pat.Bits (data);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[13] = String.fromCharCode (0x8000);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xaaaa);
+data[17] = String.fromCharCode (0xaaaa);
+data[18] = String.fromCharCode (0xaaaa);
+data[19] = String.fromCharCode (0x55aa);
+data[20] = String.fromCharCode (0xab55);
+data[21] = String.fromCharCode (0xaaaa);
+data[22] = String.fromCharCode (0xaaaa);
+data[23] = String.fromCharCode (0xd4aa);
+data[24] = String.fromCharCode (0x3129);
+data[25] = String.fromCharCode (0x4e24);
+data[26] = String.fromCharCode (0x292a);
+data[27] = String.fromCharCode (0x2651);
+data[28] = String.fromCharCode (0x5240);
+data[29] = String.fromCharCode (0xb555);
+data[30] = String.fromCharCode (0xaaaa);
+data[31] = String.fromCharCode (0xa829);
+data[32] = String.fromCharCode (0xaaaa);
+data[33] = String.fromCharCode (0x00aa);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[57] = String.fromCharCode (0x0001);
+data[58] = String.fromCharCode (0xf000);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = 'c';
+data[62] = String.fromCharCode (0xaaa8);
+data[63] = String.fromCharCode (0x0007);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xaaaa);
+data[71] = String.fromCharCode (0xaaaa);
+data[72] = String.fromCharCode (0x0002);
+data[73] = String.fromCharCode (0xaaaa);
+data[74] = String.fromCharCode (0xaaaa);
+data[75] = String.fromCharCode (0xaaaa);
+data[76] = String.fromCharCode (0x1114);
+data[77] = String.fromCharCode (0xaaaa);
+data[78] = String.fromCharCode (0x8aaa);
+data[79] = String.fromCharCode (0x022a);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[480] = String.fromCharCode (0xaaaa);
+data[481] = String.fromCharCode (0xaaaa);
+data[482] = String.fromCharCode (0xaaaa);
+data[483] = String.fromCharCode (0xaaaa);
+data[484] = String.fromCharCode (0xaaaa);
+data[485] = String.fromCharCode (0xaaaa);
+data[486] = String.fromCharCode (0xaaaa);
+data[487] = String.fromCharCode (0xaaaa);
+data[488] = String.fromCharCode (0xaaaa);
+data[489] = String.fromCharCode (0x0fea);
+data[490] = String.fromCharCode (0xaaaa);
+data[491] = String.fromCharCode (0xaaaa);
+data[492] = String.fromCharCode (0xaaaa);
+data[493] = String.fromCharCode (0xaaaa);
+data[494] = String.fromCharCode (0xaaaa);
+data[495] = String.fromCharCode (0x02aa);
+data[496] = String.fromCharCode (0x00ff);
+data[497] = String.fromCharCode (0x003f);
+data[498] = String.fromCharCode (0x00ff);
+data[499] = String.fromCharCode (0x00ff);
+data[500] = String.fromCharCode (0x003f);
+data[501] = String.fromCharCode (0x00ff);
+data[502] = String.fromCharCode (0x00ff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0x00ff);
+data[505] = String.fromCharCode (0x00ff);
+data[506] = String.fromCharCode (0x00ff);
+data[507] = String.fromCharCode (0x00df);
+data[508] = String.fromCharCode (0x00dc);
+data[509] = String.fromCharCode (0x00cf);
+data[510] = String.fromCharCode (0x00ff);
+data[511] = String.fromCharCode (0x00dc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xc400);
+data[529] = String.fromCharCode (0x0008);
+data[530] = String.fromCharCode (0xc000);
+data[531] = String.fromCharCode (0x0010);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x00f8);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4109] = String.fromCharCode (0x8000);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xaaaa);
+data[4113] = String.fromCharCode (0xaaaa);
+data[4114] = String.fromCharCode (0xaaaa);
+data[4115] = String.fromCharCode (0x55aa);
+data[4116] = String.fromCharCode (0xab55);
+data[4117] = String.fromCharCode (0xaaaa);
+data[4118] = String.fromCharCode (0xaaaa);
+data[4119] = String.fromCharCode (0xd4aa);
+data[4120] = String.fromCharCode (0x3129);
+data[4121] = String.fromCharCode (0x4e24);
+data[4122] = String.fromCharCode (0x292a);
+data[4123] = String.fromCharCode (0x2651);
+data[4124] = String.fromCharCode (0x5240);
+data[4125] = String.fromCharCode (0xb555);
+data[4126] = String.fromCharCode (0xaaaa);
+data[4127] = String.fromCharCode (0xa829);
+data[4128] = String.fromCharCode (0xaaaa);
+data[4129] = String.fromCharCode (0x00aa);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4153] = String.fromCharCode (0x0001);
+data[4154] = String.fromCharCode (0xf000);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = 'c';
+data[4158] = String.fromCharCode (0x00a8);
+});
+c$.currency_f = Clazz.defineMethod (c$, "currency_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.currency = new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0x0010);
+data[10] = String.fromCharCode (0x003c);
+data[159] = String.fromCharCode (0x000c);
+data[227] = String.fromCharCode (0x8000);
+data[522] = String.fromCharCode (0x1fff);
+data[4070] = String.fromCharCode (0x0200);
+data[4080] = String.fromCharCode (0x0010);
+data[4094] = 'c';
+data[4098] = String.fromCharCode (0x0010);
+data[4106] = String.fromCharCode (0x003c);
+});
+c$.decimal_digit_f = Clazz.defineMethod (c$, "decimal_digit_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.decimal_digit = new com.stevesoft.pat.Bits (data);
+data[3] = String.fromCharCode (0x03ff);
+data[102] = String.fromCharCode (0x03ff);
+data[111] = String.fromCharCode (0x03ff);
+data[150] = String.fromCharCode (0xffc0);
+data[158] = String.fromCharCode (0xffc0);
+data[166] = String.fromCharCode (0xffc0);
+data[174] = String.fromCharCode (0xffc0);
+data[182] = String.fromCharCode (0xffc0);
+data[190] = String.fromCharCode (0xff80);
+data[198] = String.fromCharCode (0xffc0);
+data[206] = String.fromCharCode (0xffc0);
+data[214] = String.fromCharCode (0xffc0);
+data[229] = String.fromCharCode (0x03ff);
+data[237] = String.fromCharCode (0x03ff);
+data[242] = String.fromCharCode (0x03ff);
+data[4081] = String.fromCharCode (0x03ff);
+data[4099] = String.fromCharCode (0x03ff);
+});
+c$.math_f = Clazz.defineMethod (c$, "math_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.math = new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0x0800);
+data[3] = String.fromCharCode (0x7000);
+data[7] = String.fromCharCode (0x5000);
+data[10] = String.fromCharCode (0x1000);
+data[11] = String.fromCharCode (0x0002);
+data[13] = String.fromCharCode (0x0080);
+data[15] = String.fromCharCode (0x0080);
+data[516] = String.fromCharCode (0x0010);
+data[519] = String.fromCharCode (0x1c00);
+data[520] = String.fromCharCode (0x1c00);
+data[537] = String.fromCharCode (0x001f);
+data[541] = String.fromCharCode (0x0014);
+data[544] = String.fromCharCode (0xffff);
+data[545] = String.fromCharCode (0xffff);
+data[546] = String.fromCharCode (0xffff);
+data[547] = String.fromCharCode (0xffff);
+data[548] = String.fromCharCode (0xffff);
+data[549] = String.fromCharCode (0xffff);
+data[550] = String.fromCharCode (0xffff);
+data[551] = String.fromCharCode (0xffff);
+data[552] = String.fromCharCode (0xffff);
+data[553] = String.fromCharCode (0xffff);
+data[554] = String.fromCharCode (0xffff);
+data[555] = String.fromCharCode (0xffff);
+data[556] = String.fromCharCode (0xffff);
+data[557] = String.fromCharCode (0xffff);
+data[558] = String.fromCharCode (0xffff);
+data[559] = String.fromCharCode (0x0003);
+data[560] = String.fromCharCode (0x0f00);
+data[562] = String.fromCharCode (0x0003);
+data[4018] = String.fromCharCode (0x0200);
+data[4070] = 't';
+data[4080] = String.fromCharCode (0x0800);
+data[4081] = String.fromCharCode (0x7000);
+data[4085] = String.fromCharCode (0x5000);
+data[4094] = String.fromCharCode (0x1f04);
+data[4098] = String.fromCharCode (0x0800);
+data[4099] = String.fromCharCode (0x7000);
+data[4103] = String.fromCharCode (0x5000);
+data[4106] = String.fromCharCode (0x1000);
+data[4107] = String.fromCharCode (0x0002);
+data[4109] = String.fromCharCode (0x0080);
+data[4111] = String.fromCharCode (0x0080);
+});
+c$.letter_f = Clazz.defineMethod (c$, "letter_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.letter = new com.stevesoft.pat.Bits (data);
+data[4] = String.fromCharCode (0xfffe);
+data[5] = String.fromCharCode (0x07ff);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[12] = String.fromCharCode (0xffff);
+data[13] = String.fromCharCode (0xff7f);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xffff);
+data[17] = String.fromCharCode (0xffff);
+data[18] = String.fromCharCode (0xffff);
+data[19] = String.fromCharCode (0xffff);
+data[20] = String.fromCharCode (0xffff);
+data[21] = String.fromCharCode (0xffff);
+data[22] = String.fromCharCode (0xffff);
+data[23] = String.fromCharCode (0xffff);
+data[24] = String.fromCharCode (0xffff);
+data[25] = String.fromCharCode (0xffff);
+data[26] = String.fromCharCode (0xffff);
+data[27] = String.fromCharCode (0xffff);
+data[28] = String.fromCharCode (0xffff);
+data[29] = String.fromCharCode (0xffff);
+data[30] = String.fromCharCode (0xffff);
+data[31] = String.fromCharCode (0xfc3f);
+data[32] = String.fromCharCode (0xffff);
+data[33] = String.fromCharCode (0x00ff);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[43] = String.fromCharCode (0xf9ff);
+data[44] = String.fromCharCode (0x0003);
+data[45] = String.fromCharCode (0x0003);
+data[46] = String.fromCharCode (0x001f);
+data[55] = String.fromCharCode (0x0400);
+data[56] = String.fromCharCode (0xd740);
+data[57] = String.fromCharCode (0xffff);
+data[58] = String.fromCharCode (0xfffb);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = String.fromCharCode (0x547f);
+data[62] = String.fromCharCode (0xfffd);
+data[63] = String.fromCharCode (0x000f);
+data[64] = String.fromCharCode (0xdffe);
+data[65] = String.fromCharCode (0xffff);
+data[66] = String.fromCharCode (0xffff);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xffff);
+data[71] = String.fromCharCode (0xffff);
+data[72] = String.fromCharCode (0x0003);
+data[73] = String.fromCharCode (0xffff);
+data[74] = String.fromCharCode (0xffff);
+data[75] = String.fromCharCode (0xffff);
+data[76] = String.fromCharCode (0x199f);
+data[77] = String.fromCharCode (0xffff);
+data[78] = String.fromCharCode (0xcfff);
+data[79] = String.fromCharCode (0x033f);
+data[83] = String.fromCharCode (0xfffe);
+data[84] = String.fromCharCode (0xffff);
+data[85] = String.fromCharCode (0x027f);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[93] = String.fromCharCode (0xffff);
+data[94] = String.fromCharCode (0x07ff);
+data[95] = String.fromCharCode (0x0007);
+data[98] = String.fromCharCode (0xfffe);
+data[99] = String.fromCharCode (0x07ff);
+data[100] = String.fromCharCode (0x07ff);
+data[103] = String.fromCharCode (0xfffe);
+data[104] = String.fromCharCode (0xffff);
+data[105] = String.fromCharCode (0xffff);
+data[106] = String.fromCharCode (0xffff);
+data[107] = String.fromCharCode (0x7cff);
+data[108] = String.fromCharCode (0x7fff);
+data[109] = String.fromCharCode (0x002f);
+data[110] = String.fromCharCode (0x0060);
+data[144] = String.fromCharCode (0xffe0);
+data[145] = String.fromCharCode (0xffff);
+data[146] = String.fromCharCode (0xffff);
+data[147] = String.fromCharCode (0x23ff);
+data[149] = String.fromCharCode (0xff00);
+data[150] = String.fromCharCode (0x0003);
+data[152] = String.fromCharCode (0x9fe0);
+data[153] = String.fromCharCode (0xfff9);
+data[154] = String.fromCharCode (0xfdff);
+data[155] = String.fromCharCode (0x03c5);
+data[157] = String.fromCharCode (0xb000);
+data[158] = String.fromCharCode (0x0003);
+data[159] = String.fromCharCode (0x0003);
+data[160] = String.fromCharCode (0x87e0);
+data[161] = String.fromCharCode (0xfff9);
+data[162] = String.fromCharCode (0xfdff);
+data[163] = String.fromCharCode (0x036d);
+data[165] = String.fromCharCode (0x5e00);
+data[167] = String.fromCharCode (0x001c);
+data[168] = String.fromCharCode (0xafe0);
+data[169] = String.fromCharCode (0xfffb);
+data[170] = String.fromCharCode (0xfdff);
+data[171] = String.fromCharCode (0x23ed);
+data[174] = String.fromCharCode (0x0001);
+data[176] = String.fromCharCode (0x9fe0);
+data[177] = String.fromCharCode (0xfff9);
+data[178] = String.fromCharCode (0xfdff);
+data[179] = String.fromCharCode (0x23cd);
+data[181] = String.fromCharCode (0xb000);
+data[182] = String.fromCharCode (0x0003);
+data[184] = String.fromCharCode (0xc7e0);
+data[185] = String.fromCharCode (0xd63d);
+data[186] = String.fromCharCode (0xc718);
+data[187] = String.fromCharCode (0x03bf);
+data[192] = String.fromCharCode (0xdfe0);
+data[193] = String.fromCharCode (0xfffd);
+data[194] = String.fromCharCode (0xfdff);
+data[195] = String.fromCharCode (0x03ef);
+data[198] = String.fromCharCode (0x0003);
+data[200] = String.fromCharCode (0xdfe0);
+data[201] = String.fromCharCode (0xfffd);
+data[202] = String.fromCharCode (0xfdff);
+data[203] = String.fromCharCode (0x03ef);
+data[205] = String.fromCharCode (0x4000);
+data[206] = String.fromCharCode (0x0003);
+data[208] = String.fromCharCode (0xdfe0);
+data[209] = String.fromCharCode (0xfffd);
+data[210] = String.fromCharCode (0xfdff);
+data[211] = String.fromCharCode (0x03ff);
+data[214] = String.fromCharCode (0x0003);
+data[224] = String.fromCharCode (0xfffe);
+data[225] = String.fromCharCode (0xffff);
+data[226] = String.fromCharCode (0x7fff);
+data[227] = String.fromCharCode (0x000d);
+data[228] = String.fromCharCode (0x007f);
+data[232] = String.fromCharCode (0x2596);
+data[233] = String.fromCharCode (0xfef0);
+data[234] = String.fromCharCode (0x6cae);
+data[235] = String.fromCharCode (0x200d);
+data[236] = String.fromCharCode (0x005f);
+data[237] = String.fromCharCode (0x3000);
+data[244] = String.fromCharCode (0xfeff);
+data[245] = String.fromCharCode (0xffff);
+data[246] = String.fromCharCode (0x03ff);
+data[266] = String.fromCharCode (0xffff);
+data[267] = String.fromCharCode (0xffff);
+data[268] = String.fromCharCode (0x003f);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[272] = String.fromCharCode (0xffff);
+data[273] = String.fromCharCode (0xffff);
+data[274] = String.fromCharCode (0xffff);
+data[275] = String.fromCharCode (0xffff);
+data[276] = String.fromCharCode (0xffff);
+data[277] = String.fromCharCode (0x83ff);
+data[278] = String.fromCharCode (0xffff);
+data[279] = String.fromCharCode (0xffff);
+data[280] = String.fromCharCode (0xffff);
+data[281] = String.fromCharCode (0xffff);
+data[282] = String.fromCharCode (0xff07);
+data[283] = String.fromCharCode (0xffff);
+data[284] = String.fromCharCode (0xffff);
+data[285] = String.fromCharCode (0xffff);
+data[286] = String.fromCharCode (0xffff);
+data[287] = String.fromCharCode (0x03ff);
+data[480] = String.fromCharCode (0xffff);
+data[481] = String.fromCharCode (0xffff);
+data[482] = String.fromCharCode (0xffff);
+data[483] = String.fromCharCode (0xffff);
+data[484] = String.fromCharCode (0xffff);
+data[485] = String.fromCharCode (0xffff);
+data[486] = String.fromCharCode (0xffff);
+data[487] = String.fromCharCode (0xffff);
+data[488] = String.fromCharCode (0xffff);
+data[489] = String.fromCharCode (0x0fff);
+data[490] = String.fromCharCode (0xffff);
+data[491] = String.fromCharCode (0xffff);
+data[492] = String.fromCharCode (0xffff);
+data[493] = String.fromCharCode (0xffff);
+data[494] = String.fromCharCode (0xffff);
+data[495] = String.fromCharCode (0x03ff);
+data[496] = String.fromCharCode (0xffff);
+data[497] = String.fromCharCode (0x3f3f);
+data[498] = String.fromCharCode (0xffff);
+data[499] = String.fromCharCode (0xffff);
+data[500] = String.fromCharCode (0x3f3f);
+data[501] = String.fromCharCode (0xaaff);
+data[502] = String.fromCharCode (0xffff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0xffff);
+data[505] = String.fromCharCode (0xffff);
+data[506] = String.fromCharCode (0xffff);
+data[507] = String.fromCharCode (0x5fdf);
+data[508] = String.fromCharCode (0x1fdc);
+data[509] = String.fromCharCode (0x0fcf);
+data[510] = String.fromCharCode (0x1fff);
+data[511] = String.fromCharCode (0x1fdc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xfc84);
+data[529] = String.fromCharCode (0x3f2f);
+data[530] = String.fromCharCode (0xfd50);
+data[531] = String.fromCharCode (0x01fb);
+data[768] = String.fromCharCode (0x0020);
+data[771] = String.fromCharCode (0x003e);
+data[772] = String.fromCharCode (0xfffe);
+data[773] = String.fromCharCode (0xffff);
+data[774] = String.fromCharCode (0xffff);
+data[775] = String.fromCharCode (0xffff);
+data[776] = String.fromCharCode (0xffff);
+data[777] = String.fromCharCode (0x781f);
+data[778] = String.fromCharCode (0xfffe);
+data[779] = String.fromCharCode (0xffff);
+data[780] = String.fromCharCode (0xffff);
+data[781] = String.fromCharCode (0xffff);
+data[782] = String.fromCharCode (0xffff);
+data[783] = String.fromCharCode (0x77ff);
+data[784] = String.fromCharCode (0xffe0);
+data[785] = String.fromCharCode (0xffff);
+data[786] = String.fromCharCode (0x1fff);
+data[787] = String.fromCharCode (0xfffe);
+data[788] = String.fromCharCode (0xffff);
+data[789] = String.fromCharCode (0xffff);
+data[790] = String.fromCharCode (0xffff);
+data[791] = String.fromCharCode (0xffff);
+data[792] = String.fromCharCode (0x7fff);
+data[1248] = String.fromCharCode (0xffff);
+data[1249] = String.fromCharCode (0xffff);
+data[1250] = String.fromCharCode (0xffff);
+data[1251] = String.fromCharCode (0xffff);
+data[1252] = String.fromCharCode (0xffff);
+data[1253] = String.fromCharCode (0xffff);
+data[1254] = String.fromCharCode (0xffff);
+data[1255] = String.fromCharCode (0xffff);
+data[1256] = String.fromCharCode (0xffff);
+data[1257] = String.fromCharCode (0xffff);
+data[1258] = String.fromCharCode (0xffff);
+data[1259] = String.fromCharCode (0xffff);
+data[1260] = String.fromCharCode (0xffff);
+data[1261] = String.fromCharCode (0xffff);
+data[1262] = String.fromCharCode (0xffff);
+data[1263] = String.fromCharCode (0xffff);
+data[1264] = String.fromCharCode (0xffff);
+data[1265] = String.fromCharCode (0xffff);
+data[1266] = String.fromCharCode (0xffff);
+data[1267] = String.fromCharCode (0xffff);
+data[1268] = String.fromCharCode (0xffff);
+data[1269] = String.fromCharCode (0xffff);
+data[1270] = String.fromCharCode (0xffff);
+data[1271] = String.fromCharCode (0xffff);
+data[1272] = String.fromCharCode (0xffff);
+data[1273] = String.fromCharCode (0xffff);
+data[1274] = String.fromCharCode (0xffff);
+data[1275] = String.fromCharCode (0xffff);
+data[1276] = String.fromCharCode (0xffff);
+data[1277] = String.fromCharCode (0xffff);
+data[1278] = String.fromCharCode (0xffff);
+data[1279] = String.fromCharCode (0xffff);
+data[1280] = String.fromCharCode (0xffff);
+data[1281] = String.fromCharCode (0xffff);
+data[1282] = String.fromCharCode (0xffff);
+data[1283] = String.fromCharCode (0xffff);
+data[1284] = String.fromCharCode (0xffff);
+data[1285] = String.fromCharCode (0xffff);
+data[1286] = String.fromCharCode (0xffff);
+data[1287] = String.fromCharCode (0xffff);
+data[1288] = String.fromCharCode (0xffff);
+data[1289] = String.fromCharCode (0xffff);
+data[1290] = String.fromCharCode (0xffff);
+data[1291] = String.fromCharCode (0xffff);
+data[1292] = String.fromCharCode (0xffff);
+data[1293] = String.fromCharCode (0xffff);
+data[1294] = String.fromCharCode (0xffff);
+data[1295] = String.fromCharCode (0xffff);
+data[1296] = String.fromCharCode (0xffff);
+data[1297] = String.fromCharCode (0xffff);
+data[1298] = String.fromCharCode (0xffff);
+data[1299] = String.fromCharCode (0xffff);
+data[1300] = String.fromCharCode (0xffff);
+data[1301] = String.fromCharCode (0xffff);
+data[1302] = String.fromCharCode (0xffff);
+data[1303] = String.fromCharCode (0xffff);
+data[1304] = String.fromCharCode (0xffff);
+data[1305] = String.fromCharCode (0xffff);
+data[1306] = String.fromCharCode (0xffff);
+data[1307] = String.fromCharCode (0xffff);
+data[1308] = String.fromCharCode (0xffff);
+data[1309] = String.fromCharCode (0xffff);
+data[1310] = String.fromCharCode (0xffff);
+data[1311] = String.fromCharCode (0xffff);
+data[1312] = String.fromCharCode (0xffff);
+data[1313] = String.fromCharCode (0xffff);
+data[1314] = String.fromCharCode (0xffff);
+data[1315] = String.fromCharCode (0xffff);
+data[1316] = String.fromCharCode (0xffff);
+data[1317] = String.fromCharCode (0xffff);
+data[1318] = String.fromCharCode (0xffff);
+data[1319] = String.fromCharCode (0xffff);
+data[1320] = String.fromCharCode (0xffff);
+data[1321] = String.fromCharCode (0xffff);
+data[1322] = String.fromCharCode (0xffff);
+data[1323] = String.fromCharCode (0xffff);
+data[1324] = String.fromCharCode (0xffff);
+data[1325] = String.fromCharCode (0xffff);
+data[1326] = String.fromCharCode (0xffff);
+data[1327] = String.fromCharCode (0xffff);
+data[1328] = String.fromCharCode (0xffff);
+data[1329] = String.fromCharCode (0xffff);
+data[1330] = String.fromCharCode (0xffff);
+data[1331] = String.fromCharCode (0xffff);
+data[1332] = String.fromCharCode (0xffff);
+data[1333] = String.fromCharCode (0xffff);
+data[1334] = String.fromCharCode (0xffff);
+data[1335] = String.fromCharCode (0xffff);
+data[1336] = String.fromCharCode (0xffff);
+data[1337] = String.fromCharCode (0xffff);
+data[1338] = String.fromCharCode (0xffff);
+data[1339] = String.fromCharCode (0xffff);
+data[1340] = String.fromCharCode (0xffff);
+data[1341] = String.fromCharCode (0xffff);
+data[1342] = String.fromCharCode (0xffff);
+data[1343] = String.fromCharCode (0xffff);
+data[1344] = String.fromCharCode (0xffff);
+data[1345] = String.fromCharCode (0xffff);
+data[1346] = String.fromCharCode (0xffff);
+data[1347] = String.fromCharCode (0xffff);
+data[1348] = String.fromCharCode (0xffff);
+data[1349] = String.fromCharCode (0xffff);
+data[1350] = String.fromCharCode (0xffff);
+data[1351] = String.fromCharCode (0xffff);
+data[1352] = String.fromCharCode (0xffff);
+data[1353] = String.fromCharCode (0xffff);
+data[1354] = String.fromCharCode (0xffff);
+data[1355] = String.fromCharCode (0xffff);
+data[1356] = String.fromCharCode (0xffff);
+data[1357] = String.fromCharCode (0xffff);
+data[1358] = String.fromCharCode (0xffff);
+data[1359] = String.fromCharCode (0xffff);
+data[1360] = String.fromCharCode (0xffff);
+data[1361] = String.fromCharCode (0xffff);
+data[1362] = String.fromCharCode (0xffff);
+data[1363] = String.fromCharCode (0xffff);
+data[1364] = String.fromCharCode (0xffff);
+data[1365] = String.fromCharCode (0xffff);
+data[1366] = String.fromCharCode (0xffff);
+data[1367] = String.fromCharCode (0xffff);
+data[1368] = String.fromCharCode (0xffff);
+data[1369] = String.fromCharCode (0xffff);
+data[1370] = String.fromCharCode (0xffff);
+data[1371] = String.fromCharCode (0xffff);
+data[1372] = String.fromCharCode (0xffff);
+data[1373] = String.fromCharCode (0xffff);
+data[1374] = String.fromCharCode (0xffff);
+data[1375] = String.fromCharCode (0xffff);
+data[1376] = String.fromCharCode (0xffff);
+data[1377] = String.fromCharCode (0xffff);
+data[1378] = String.fromCharCode (0xffff);
+data[1379] = String.fromCharCode (0xffff);
+data[1380] = String.fromCharCode (0xffff);
+data[1381] = String.fromCharCode (0xffff);
+data[1382] = String.fromCharCode (0xffff);
+data[1383] = String.fromCharCode (0xffff);
+data[1384] = String.fromCharCode (0xffff);
+data[1385] = String.fromCharCode (0xffff);
+data[1386] = String.fromCharCode (0xffff);
+data[1387] = String.fromCharCode (0xffff);
+data[1388] = String.fromCharCode (0xffff);
+data[1389] = String.fromCharCode (0xffff);
+data[1390] = String.fromCharCode (0xffff);
+data[1391] = String.fromCharCode (0xffff);
+data[1392] = String.fromCharCode (0xffff);
+data[1393] = String.fromCharCode (0xffff);
+data[1394] = String.fromCharCode (0xffff);
+data[1395] = String.fromCharCode (0xffff);
+data[1396] = String.fromCharCode (0xffff);
+data[1397] = String.fromCharCode (0xffff);
+data[1398] = String.fromCharCode (0xffff);
+data[1399] = String.fromCharCode (0xffff);
+data[1400] = String.fromCharCode (0xffff);
+data[1401] = String.fromCharCode (0xffff);
+data[1402] = String.fromCharCode (0xffff);
+data[1403] = String.fromCharCode (0xffff);
+data[1404] = String.fromCharCode (0xffff);
+data[1405] = String.fromCharCode (0xffff);
+data[1406] = String.fromCharCode (0xffff);
+data[1407] = String.fromCharCode (0xffff);
+data[1408] = String.fromCharCode (0xffff);
+data[1409] = String.fromCharCode (0xffff);
+data[1410] = String.fromCharCode (0xffff);
+data[1411] = String.fromCharCode (0xffff);
+data[1412] = String.fromCharCode (0xffff);
+data[1413] = String.fromCharCode (0xffff);
+data[1414] = String.fromCharCode (0xffff);
+data[1415] = String.fromCharCode (0xffff);
+data[1416] = String.fromCharCode (0xffff);
+data[1417] = String.fromCharCode (0xffff);
+data[1418] = String.fromCharCode (0xffff);
+data[1419] = String.fromCharCode (0xffff);
+data[1420] = String.fromCharCode (0xffff);
+data[1421] = String.fromCharCode (0xffff);
+data[1422] = String.fromCharCode (0xffff);
+data[1423] = String.fromCharCode (0xffff);
+data[1424] = String.fromCharCode (0xffff);
+data[1425] = String.fromCharCode (0xffff);
+data[1426] = String.fromCharCode (0xffff);
+data[1427] = String.fromCharCode (0xffff);
+data[1428] = String.fromCharCode (0xffff);
+data[1429] = String.fromCharCode (0xffff);
+data[1430] = String.fromCharCode (0xffff);
+data[1431] = String.fromCharCode (0xffff);
+data[1432] = String.fromCharCode (0xffff);
+data[1433] = String.fromCharCode (0xffff);
+data[1434] = String.fromCharCode (0xffff);
+data[1435] = String.fromCharCode (0xffff);
+data[1436] = String.fromCharCode (0xffff);
+data[1437] = String.fromCharCode (0xffff);
+data[1438] = String.fromCharCode (0xffff);
+data[1439] = String.fromCharCode (0xffff);
+data[1440] = String.fromCharCode (0xffff);
+data[1441] = String.fromCharCode (0xffff);
+data[1442] = String.fromCharCode (0xffff);
+data[1443] = String.fromCharCode (0xffff);
+data[1444] = String.fromCharCode (0xffff);
+data[1445] = String.fromCharCode (0xffff);
+data[1446] = String.fromCharCode (0xffff);
+data[1447] = String.fromCharCode (0xffff);
+data[1448] = String.fromCharCode (0xffff);
+data[1449] = String.fromCharCode (0xffff);
+data[1450] = String.fromCharCode (0xffff);
+data[1451] = String.fromCharCode (0xffff);
+data[1452] = String.fromCharCode (0xffff);
+data[1453] = String.fromCharCode (0xffff);
+data[1454] = String.fromCharCode (0xffff);
+data[1455] = String.fromCharCode (0xffff);
+data[1456] = String.fromCharCode (0xffff);
+data[1457] = String.fromCharCode (0xffff);
+data[1458] = String.fromCharCode (0xffff);
+data[1459] = String.fromCharCode (0xffff);
+data[1460] = String.fromCharCode (0xffff);
+data[1461] = String.fromCharCode (0xffff);
+data[1462] = String.fromCharCode (0xffff);
+data[1463] = String.fromCharCode (0xffff);
+data[1464] = String.fromCharCode (0xffff);
+data[1465] = String.fromCharCode (0xffff);
+data[1466] = String.fromCharCode (0xffff);
+data[1467] = String.fromCharCode (0xffff);
+data[1468] = String.fromCharCode (0xffff);
+data[1469] = String.fromCharCode (0xffff);
+data[1470] = String.fromCharCode (0xffff);
+data[1471] = String.fromCharCode (0xffff);
+data[1472] = String.fromCharCode (0xffff);
+data[1473] = String.fromCharCode (0xffff);
+data[1474] = String.fromCharCode (0xffff);
+data[1475] = String.fromCharCode (0xffff);
+data[1476] = String.fromCharCode (0xffff);
+data[1477] = String.fromCharCode (0xffff);
+data[1478] = String.fromCharCode (0xffff);
+data[1479] = String.fromCharCode (0xffff);
+data[1480] = String.fromCharCode (0xffff);
+data[1481] = String.fromCharCode (0xffff);
+data[1482] = String.fromCharCode (0xffff);
+data[1483] = String.fromCharCode (0xffff);
+data[1484] = String.fromCharCode (0xffff);
+data[1485] = String.fromCharCode (0xffff);
+data[1486] = String.fromCharCode (0xffff);
+data[1487] = String.fromCharCode (0xffff);
+data[1488] = String.fromCharCode (0xffff);
+data[1489] = String.fromCharCode (0xffff);
+data[1490] = String.fromCharCode (0xffff);
+data[1491] = String.fromCharCode (0xffff);
+data[1492] = String.fromCharCode (0xffff);
+data[1493] = String.fromCharCode (0xffff);
+data[1494] = String.fromCharCode (0xffff);
+data[1495] = String.fromCharCode (0xffff);
+data[1496] = String.fromCharCode (0xffff);
+data[1497] = String.fromCharCode (0xffff);
+data[1498] = String.fromCharCode (0xffff);
+data[1499] = String.fromCharCode (0xffff);
+data[1500] = String.fromCharCode (0xffff);
+data[1501] = String.fromCharCode (0xffff);
+data[1502] = String.fromCharCode (0xffff);
+data[1503] = String.fromCharCode (0xffff);
+data[1504] = String.fromCharCode (0xffff);
+data[1505] = String.fromCharCode (0xffff);
+data[1506] = String.fromCharCode (0xffff);
+data[1507] = String.fromCharCode (0xffff);
+data[1508] = String.fromCharCode (0xffff);
+data[1509] = String.fromCharCode (0xffff);
+data[1510] = String.fromCharCode (0xffff);
+data[1511] = String.fromCharCode (0xffff);
+data[1512] = String.fromCharCode (0xffff);
+data[1513] = String.fromCharCode (0xffff);
+data[1514] = String.fromCharCode (0xffff);
+data[1515] = String.fromCharCode (0xffff);
+data[1516] = String.fromCharCode (0xffff);
+data[1517] = String.fromCharCode (0xffff);
+data[1518] = String.fromCharCode (0xffff);
+data[1519] = String.fromCharCode (0xffff);
+data[1520] = String.fromCharCode (0xffff);
+data[1521] = String.fromCharCode (0xffff);
+data[1522] = String.fromCharCode (0xffff);
+data[1523] = String.fromCharCode (0xffff);
+data[1524] = String.fromCharCode (0xffff);
+data[1525] = String.fromCharCode (0xffff);
+data[1526] = String.fromCharCode (0xffff);
+data[1527] = String.fromCharCode (0xffff);
+data[1528] = String.fromCharCode (0xffff);
+data[1529] = String.fromCharCode (0xffff);
+data[1530] = String.fromCharCode (0xffff);
+data[1531] = String.fromCharCode (0xffff);
+data[1532] = String.fromCharCode (0xffff);
+data[1533] = String.fromCharCode (0xffff);
+data[1534] = String.fromCharCode (0xffff);
+data[1535] = String.fromCharCode (0xffff);
+data[1536] = String.fromCharCode (0xffff);
+data[1537] = String.fromCharCode (0xffff);
+data[1538] = String.fromCharCode (0xffff);
+data[1539] = String.fromCharCode (0xffff);
+data[1540] = String.fromCharCode (0xffff);
+data[1541] = String.fromCharCode (0xffff);
+data[1542] = String.fromCharCode (0xffff);
+data[1543] = String.fromCharCode (0xffff);
+data[1544] = String.fromCharCode (0xffff);
+data[1545] = String.fromCharCode (0xffff);
+data[1546] = String.fromCharCode (0xffff);
+data[1547] = String.fromCharCode (0xffff);
+data[1548] = String.fromCharCode (0xffff);
+data[1549] = String.fromCharCode (0xffff);
+data[1550] = String.fromCharCode (0xffff);
+data[1551] = String.fromCharCode (0xffff);
+data[1552] = String.fromCharCode (0xffff);
+data[1553] = String.fromCharCode (0xffff);
+data[1554] = String.fromCharCode (0xffff);
+data[1555] = String.fromCharCode (0xffff);
+data[1556] = String.fromCharCode (0xffff);
+data[1557] = String.fromCharCode (0xffff);
+data[1558] = String.fromCharCode (0xffff);
+data[1559] = String.fromCharCode (0xffff);
+data[1560] = String.fromCharCode (0xffff);
+data[1561] = String.fromCharCode (0xffff);
+data[1562] = String.fromCharCode (0xffff);
+data[1563] = String.fromCharCode (0xffff);
+data[1564] = String.fromCharCode (0xffff);
+data[1565] = String.fromCharCode (0xffff);
+data[1566] = String.fromCharCode (0xffff);
+data[1567] = String.fromCharCode (0xffff);
+data[1568] = String.fromCharCode (0xffff);
+data[1569] = String.fromCharCode (0xffff);
+data[1570] = String.fromCharCode (0xffff);
+data[1571] = String.fromCharCode (0xffff);
+data[1572] = String.fromCharCode (0xffff);
+data[1573] = String.fromCharCode (0xffff);
+data[1574] = String.fromCharCode (0xffff);
+data[1575] = String.fromCharCode (0xffff);
+data[1576] = String.fromCharCode (0xffff);
+data[1577] = String.fromCharCode (0xffff);
+data[1578] = String.fromCharCode (0xffff);
+data[1579] = String.fromCharCode (0xffff);
+data[1580] = String.fromCharCode (0xffff);
+data[1581] = String.fromCharCode (0xffff);
+data[1582] = String.fromCharCode (0xffff);
+data[1583] = String.fromCharCode (0xffff);
+data[1584] = String.fromCharCode (0xffff);
+data[1585] = String.fromCharCode (0xffff);
+data[1586] = String.fromCharCode (0xffff);
+data[1587] = String.fromCharCode (0xffff);
+data[1588] = String.fromCharCode (0xffff);
+data[1589] = String.fromCharCode (0xffff);
+data[1590] = String.fromCharCode (0xffff);
+data[1591] = String.fromCharCode (0xffff);
+data[1592] = String.fromCharCode (0xffff);
+data[1593] = String.fromCharCode (0xffff);
+data[1594] = String.fromCharCode (0xffff);
+data[1595] = String.fromCharCode (0xffff);
+data[1596] = String.fromCharCode (0xffff);
+data[1597] = String.fromCharCode (0xffff);
+data[1598] = String.fromCharCode (0xffff);
+data[1599] = String.fromCharCode (0xffff);
+data[1600] = String.fromCharCode (0xffff);
+data[1601] = String.fromCharCode (0xffff);
+data[1602] = String.fromCharCode (0xffff);
+data[1603] = String.fromCharCode (0xffff);
+data[1604] = String.fromCharCode (0xffff);
+data[1605] = String.fromCharCode (0xffff);
+data[1606] = String.fromCharCode (0xffff);
+data[1607] = String.fromCharCode (0xffff);
+data[1608] = String.fromCharCode (0xffff);
+data[1609] = String.fromCharCode (0xffff);
+data[1610] = String.fromCharCode (0xffff);
+data[1611] = String.fromCharCode (0xffff);
+data[1612] = String.fromCharCode (0xffff);
+data[1613] = String.fromCharCode (0xffff);
+data[1614] = String.fromCharCode (0xffff);
+data[1615] = String.fromCharCode (0xffff);
+data[1616] = String.fromCharCode (0xffff);
+data[1617] = String.fromCharCode (0xffff);
+data[1618] = String.fromCharCode (0xffff);
+data[1619] = String.fromCharCode (0xffff);
+data[1620] = String.fromCharCode (0xffff);
+data[1621] = String.fromCharCode (0xffff);
+data[1622] = String.fromCharCode (0xffff);
+data[1623] = String.fromCharCode (0xffff);
+data[1624] = String.fromCharCode (0xffff);
+data[1625] = String.fromCharCode (0xffff);
+data[1626] = String.fromCharCode (0xffff);
+data[1627] = String.fromCharCode (0xffff);
+data[1628] = String.fromCharCode (0xffff);
+data[1629] = String.fromCharCode (0xffff);
+data[1630] = String.fromCharCode (0xffff);
+data[1631] = String.fromCharCode (0xffff);
+data[1632] = String.fromCharCode (0xffff);
+data[1633] = String.fromCharCode (0xffff);
+data[1634] = String.fromCharCode (0xffff);
+data[1635] = String.fromCharCode (0xffff);
+data[1636] = String.fromCharCode (0xffff);
+data[1637] = String.fromCharCode (0xffff);
+data[1638] = String.fromCharCode (0xffff);
+data[1639] = String.fromCharCode (0xffff);
+data[1640] = String.fromCharCode (0xffff);
+data[1641] = String.fromCharCode (0xffff);
+data[1642] = String.fromCharCode (0xffff);
+data[1643] = String.fromCharCode (0xffff);
+data[1644] = String.fromCharCode (0xffff);
+data[1645] = String.fromCharCode (0xffff);
+data[1646] = String.fromCharCode (0xffff);
+data[1647] = String.fromCharCode (0xffff);
+data[1648] = String.fromCharCode (0xffff);
+data[1649] = String.fromCharCode (0xffff);
+data[1650] = String.fromCharCode (0xffff);
+data[1651] = String.fromCharCode (0xffff);
+data[1652] = String.fromCharCode (0xffff);
+data[1653] = String.fromCharCode (0xffff);
+data[1654] = String.fromCharCode (0xffff);
+data[1655] = String.fromCharCode (0xffff);
+data[1656] = String.fromCharCode (0xffff);
+data[1657] = String.fromCharCode (0xffff);
+data[1658] = String.fromCharCode (0xffff);
+data[1659] = String.fromCharCode (0xffff);
+data[1660] = String.fromCharCode (0xffff);
+data[1661] = String.fromCharCode (0xffff);
+data[1662] = String.fromCharCode (0xffff);
+data[1663] = String.fromCharCode (0xffff);
+data[1664] = String.fromCharCode (0xffff);
+data[1665] = String.fromCharCode (0xffff);
+data[1666] = String.fromCharCode (0xffff);
+data[1667] = String.fromCharCode (0xffff);
+data[1668] = String.fromCharCode (0xffff);
+data[1669] = String.fromCharCode (0xffff);
+data[1670] = String.fromCharCode (0xffff);
+data[1671] = String.fromCharCode (0xffff);
+data[1672] = String.fromCharCode (0xffff);
+data[1673] = String.fromCharCode (0xffff);
+data[1674] = String.fromCharCode (0xffff);
+data[1675] = String.fromCharCode (0xffff);
+data[1676] = String.fromCharCode (0xffff);
+data[1677] = String.fromCharCode (0xffff);
+data[1678] = String.fromCharCode (0xffff);
+data[1679] = String.fromCharCode (0xffff);
+data[1680] = String.fromCharCode (0xffff);
+data[1681] = String.fromCharCode (0xffff);
+data[1682] = String.fromCharCode (0xffff);
+data[1683] = String.fromCharCode (0xffff);
+data[1684] = String.fromCharCode (0xffff);
+data[1685] = String.fromCharCode (0xffff);
+data[1686] = String.fromCharCode (0xffff);
+data[1687] = String.fromCharCode (0xffff);
+data[1688] = String.fromCharCode (0xffff);
+data[1689] = String.fromCharCode (0xffff);
+data[1690] = String.fromCharCode (0xffff);
+data[1691] = String.fromCharCode (0xffff);
+data[1692] = String.fromCharCode (0xffff);
+data[1693] = String.fromCharCode (0xffff);
+data[1694] = String.fromCharCode (0xffff);
+data[1695] = String.fromCharCode (0xffff);
+data[1696] = String.fromCharCode (0xffff);
+data[1697] = String.fromCharCode (0xffff);
+data[1698] = String.fromCharCode (0xffff);
+data[1699] = String.fromCharCode (0xffff);
+data[1700] = String.fromCharCode (0xffff);
+data[1701] = String.fromCharCode (0xffff);
+data[1702] = String.fromCharCode (0xffff);
+data[1703] = String.fromCharCode (0xffff);
+data[1704] = String.fromCharCode (0xffff);
+data[1705] = String.fromCharCode (0xffff);
+data[1706] = String.fromCharCode (0xffff);
+data[1707] = String.fromCharCode (0xffff);
+data[1708] = String.fromCharCode (0xffff);
+data[1709] = String.fromCharCode (0xffff);
+data[1710] = String.fromCharCode (0xffff);
+data[1711] = String.fromCharCode (0xffff);
+data[1712] = String.fromCharCode (0xffff);
+data[1713] = String.fromCharCode (0xffff);
+data[1714] = String.fromCharCode (0xffff);
+data[1715] = String.fromCharCode (0xffff);
+data[1716] = String.fromCharCode (0xffff);
+data[1717] = String.fromCharCode (0xffff);
+data[1718] = String.fromCharCode (0xffff);
+data[1719] = String.fromCharCode (0xffff);
+data[1720] = String.fromCharCode (0xffff);
+data[1721] = String.fromCharCode (0xffff);
+data[1722] = String.fromCharCode (0xffff);
+data[1723] = String.fromCharCode (0xffff);
+data[1724] = String.fromCharCode (0xffff);
+data[1725] = String.fromCharCode (0xffff);
+data[1726] = String.fromCharCode (0xffff);
+data[1727] = String.fromCharCode (0xffff);
+data[1728] = String.fromCharCode (0xffff);
+data[1729] = String.fromCharCode (0xffff);
+data[1730] = String.fromCharCode (0xffff);
+data[1731] = String.fromCharCode (0xffff);
+data[1732] = String.fromCharCode (0xffff);
+data[1733] = String.fromCharCode (0xffff);
+data[1734] = String.fromCharCode (0xffff);
+data[1735] = String.fromCharCode (0xffff);
+data[1736] = String.fromCharCode (0xffff);
+data[1737] = String.fromCharCode (0xffff);
+data[1738] = String.fromCharCode (0xffff);
+data[1739] = String.fromCharCode (0xffff);
+data[1740] = String.fromCharCode (0xffff);
+data[1741] = String.fromCharCode (0xffff);
+data[1742] = String.fromCharCode (0xffff);
+data[1743] = String.fromCharCode (0xffff);
+data[1744] = String.fromCharCode (0xffff);
+data[1745] = String.fromCharCode (0xffff);
+data[1746] = String.fromCharCode (0xffff);
+data[1747] = String.fromCharCode (0xffff);
+data[1748] = String.fromCharCode (0xffff);
+data[1749] = String.fromCharCode (0xffff);
+data[1750] = String.fromCharCode (0xffff);
+data[1751] = String.fromCharCode (0xffff);
+data[1752] = String.fromCharCode (0xffff);
+data[1753] = String.fromCharCode (0xffff);
+data[1754] = String.fromCharCode (0xffff);
+data[1755] = String.fromCharCode (0xffff);
+data[1756] = String.fromCharCode (0xffff);
+data[1757] = String.fromCharCode (0xffff);
+data[1758] = String.fromCharCode (0xffff);
+data[1759] = String.fromCharCode (0xffff);
+data[1760] = String.fromCharCode (0xffff);
+data[1761] = String.fromCharCode (0xffff);
+data[1762] = String.fromCharCode (0xffff);
+data[1763] = String.fromCharCode (0xffff);
+data[1764] = String.fromCharCode (0xffff);
+data[1765] = String.fromCharCode (0xffff);
+data[1766] = String.fromCharCode (0xffff);
+data[1767] = String.fromCharCode (0xffff);
+data[1768] = String.fromCharCode (0xffff);
+data[1769] = String.fromCharCode (0xffff);
+data[1770] = String.fromCharCode (0xffff);
+data[1771] = String.fromCharCode (0xffff);
+data[1772] = String.fromCharCode (0xffff);
+data[1773] = String.fromCharCode (0xffff);
+data[1774] = String.fromCharCode (0xffff);
+data[1775] = String.fromCharCode (0xffff);
+data[1776] = String.fromCharCode (0xffff);
+data[1777] = String.fromCharCode (0xffff);
+data[1778] = String.fromCharCode (0xffff);
+data[1779] = String.fromCharCode (0xffff);
+data[1780] = String.fromCharCode (0xffff);
+data[1781] = String.fromCharCode (0xffff);
+data[1782] = String.fromCharCode (0xffff);
+data[1783] = String.fromCharCode (0xffff);
+data[1784] = String.fromCharCode (0xffff);
+data[1785] = String.fromCharCode (0xffff);
+data[1786] = String.fromCharCode (0xffff);
+data[1787] = String.fromCharCode (0xffff);
+data[1788] = String.fromCharCode (0xffff);
+data[1789] = String.fromCharCode (0xffff);
+data[1790] = String.fromCharCode (0xffff);
+data[1791] = String.fromCharCode (0xffff);
+data[1792] = String.fromCharCode (0xffff);
+data[1793] = String.fromCharCode (0xffff);
+data[1794] = String.fromCharCode (0xffff);
+data[1795] = String.fromCharCode (0xffff);
+data[1796] = String.fromCharCode (0xffff);
+data[1797] = String.fromCharCode (0xffff);
+data[1798] = String.fromCharCode (0xffff);
+data[1799] = String.fromCharCode (0xffff);
+data[1800] = String.fromCharCode (0xffff);
+data[1801] = String.fromCharCode (0xffff);
+data[1802] = String.fromCharCode (0xffff);
+data[1803] = String.fromCharCode (0xffff);
+data[1804] = String.fromCharCode (0xffff);
+data[1805] = String.fromCharCode (0xffff);
+data[1806] = String.fromCharCode (0xffff);
+data[1807] = String.fromCharCode (0xffff);
+data[1808] = String.fromCharCode (0xffff);
+data[1809] = String.fromCharCode (0xffff);
+data[1810] = String.fromCharCode (0xffff);
+data[1811] = String.fromCharCode (0xffff);
+data[1812] = String.fromCharCode (0xffff);
+data[1813] = String.fromCharCode (0xffff);
+data[1814] = String.fromCharCode (0xffff);
+data[1815] = String.fromCharCode (0xffff);
+data[1816] = String.fromCharCode (0xffff);
+data[1817] = String.fromCharCode (0xffff);
+data[1818] = String.fromCharCode (0xffff);
+data[1819] = String.fromCharCode (0xffff);
+data[1820] = String.fromCharCode (0xffff);
+data[1821] = String.fromCharCode (0xffff);
+data[1822] = String.fromCharCode (0xffff);
+data[1823] = String.fromCharCode (0xffff);
+data[1824] = String.fromCharCode (0xffff);
+data[1825] = String.fromCharCode (0xffff);
+data[1826] = String.fromCharCode (0xffff);
+data[1827] = String.fromCharCode (0xffff);
+data[1828] = String.fromCharCode (0xffff);
+data[1829] = String.fromCharCode (0xffff);
+data[1830] = String.fromCharCode (0xffff);
+data[1831] = String.fromCharCode (0xffff);
+data[1832] = String.fromCharCode (0xffff);
+data[1833] = String.fromCharCode (0xffff);
+data[1834] = String.fromCharCode (0xffff);
+data[1835] = String.fromCharCode (0xffff);
+data[1836] = String.fromCharCode (0xffff);
+data[1837] = String.fromCharCode (0xffff);
+data[1838] = String.fromCharCode (0xffff);
+data[1839] = String.fromCharCode (0xffff);
+data[1840] = String.fromCharCode (0xffff);
+data[1841] = String.fromCharCode (0xffff);
+data[1842] = String.fromCharCode (0xffff);
+data[1843] = String.fromCharCode (0xffff);
+data[1844] = String.fromCharCode (0xffff);
+data[1845] = String.fromCharCode (0xffff);
+data[1846] = String.fromCharCode (0xffff);
+data[1847] = String.fromCharCode (0xffff);
+data[1848] = String.fromCharCode (0xffff);
+data[1849] = String.fromCharCode (0xffff);
+data[1850] = String.fromCharCode (0xffff);
+data[1851] = String.fromCharCode (0xffff);
+data[1852] = String.fromCharCode (0xffff);
+data[1853] = String.fromCharCode (0xffff);
+data[1854] = String.fromCharCode (0xffff);
+data[1855] = String.fromCharCode (0xffff);
+data[1856] = String.fromCharCode (0xffff);
+data[1857] = String.fromCharCode (0xffff);
+data[1858] = String.fromCharCode (0xffff);
+data[1859] = String.fromCharCode (0xffff);
+data[1860] = String.fromCharCode (0xffff);
+data[1861] = String.fromCharCode (0xffff);
+data[1862] = String.fromCharCode (0xffff);
+data[1863] = String.fromCharCode (0xffff);
+data[1864] = String.fromCharCode (0xffff);
+data[1865] = String.fromCharCode (0xffff);
+data[1866] = String.fromCharCode (0xffff);
+data[1867] = String.fromCharCode (0xffff);
+data[1868] = String.fromCharCode (0xffff);
+data[1869] = String.fromCharCode (0xffff);
+data[1870] = String.fromCharCode (0xffff);
+data[1871] = String.fromCharCode (0xffff);
+data[1872] = String.fromCharCode (0xffff);
+data[1873] = String.fromCharCode (0xffff);
+data[1874] = String.fromCharCode (0xffff);
+data[1875] = String.fromCharCode (0xffff);
+data[1876] = String.fromCharCode (0xffff);
+data[1877] = String.fromCharCode (0xffff);
+data[1878] = String.fromCharCode (0xffff);
+data[1879] = String.fromCharCode (0xffff);
+data[1880] = String.fromCharCode (0xffff);
+data[1881] = String.fromCharCode (0xffff);
+data[1882] = String.fromCharCode (0xffff);
+data[1883] = String.fromCharCode (0xffff);
+data[1884] = String.fromCharCode (0xffff);
+data[1885] = String.fromCharCode (0xffff);
+data[1886] = String.fromCharCode (0xffff);
+data[1887] = String.fromCharCode (0xffff);
+data[1888] = String.fromCharCode (0xffff);
+data[1889] = String.fromCharCode (0xffff);
+data[1890] = String.fromCharCode (0xffff);
+data[1891] = String.fromCharCode (0xffff);
+data[1892] = String.fromCharCode (0xffff);
+data[1893] = String.fromCharCode (0xffff);
+data[1894] = String.fromCharCode (0xffff);
+data[1895] = String.fromCharCode (0xffff);
+data[1896] = String.fromCharCode (0xffff);
+data[1897] = String.fromCharCode (0xffff);
+data[1898] = String.fromCharCode (0xffff);
+data[1899] = String.fromCharCode (0xffff);
+data[1900] = String.fromCharCode (0xffff);
+data[1901] = String.fromCharCode (0xffff);
+data[1902] = String.fromCharCode (0xffff);
+data[1903] = String.fromCharCode (0xffff);
+data[1904] = String.fromCharCode (0xffff);
+data[1905] = String.fromCharCode (0xffff);
+data[1906] = String.fromCharCode (0xffff);
+data[1907] = String.fromCharCode (0xffff);
+data[1908] = String.fromCharCode (0xffff);
+data[1909] = String.fromCharCode (0xffff);
+data[1910] = String.fromCharCode (0xffff);
+data[1911] = String.fromCharCode (0xffff);
+data[1912] = String.fromCharCode (0xffff);
+data[1913] = String.fromCharCode (0xffff);
+data[1914] = String.fromCharCode (0xffff);
+data[1915] = String.fromCharCode (0xffff);
+data[1916] = String.fromCharCode (0xffff);
+data[1917] = String.fromCharCode (0xffff);
+data[1918] = String.fromCharCode (0xffff);
+data[1919] = String.fromCharCode (0xffff);
+data[1920] = String.fromCharCode (0xffff);
+data[1921] = String.fromCharCode (0xffff);
+data[1922] = String.fromCharCode (0xffff);
+data[1923] = String.fromCharCode (0xffff);
+data[1924] = String.fromCharCode (0xffff);
+data[1925] = String.fromCharCode (0xffff);
+data[1926] = String.fromCharCode (0xffff);
+data[1927] = String.fromCharCode (0xffff);
+data[1928] = String.fromCharCode (0xffff);
+data[1929] = String.fromCharCode (0xffff);
+data[1930] = String.fromCharCode (0xffff);
+data[1931] = String.fromCharCode (0xffff);
+data[1932] = String.fromCharCode (0xffff);
+data[1933] = String.fromCharCode (0xffff);
+data[1934] = String.fromCharCode (0xffff);
+data[1935] = String.fromCharCode (0xffff);
+data[1936] = String.fromCharCode (0xffff);
+data[1937] = String.fromCharCode (0xffff);
+data[1938] = String.fromCharCode (0xffff);
+data[1939] = String.fromCharCode (0xffff);
+data[1940] = String.fromCharCode (0xffff);
+data[1941] = String.fromCharCode (0xffff);
+data[1942] = String.fromCharCode (0xffff);
+data[1943] = String.fromCharCode (0xffff);
+data[1944] = String.fromCharCode (0xffff);
+data[1945] = String.fromCharCode (0xffff);
+data[1946] = String.fromCharCode (0xffff);
+data[1947] = String.fromCharCode (0xffff);
+data[1948] = String.fromCharCode (0xffff);
+data[1949] = String.fromCharCode (0xffff);
+data[1950] = String.fromCharCode (0xffff);
+data[1951] = String.fromCharCode (0xffff);
+data[1952] = String.fromCharCode (0xffff);
+data[1953] = String.fromCharCode (0xffff);
+data[1954] = String.fromCharCode (0xffff);
+data[1955] = String.fromCharCode (0xffff);
+data[1956] = String.fromCharCode (0xffff);
+data[1957] = String.fromCharCode (0xffff);
+data[1958] = String.fromCharCode (0xffff);
+data[1959] = String.fromCharCode (0xffff);
+data[1960] = String.fromCharCode (0xffff);
+data[1961] = String.fromCharCode (0xffff);
+data[1962] = String.fromCharCode (0xffff);
+data[1963] = String.fromCharCode (0xffff);
+data[1964] = String.fromCharCode (0xffff);
+data[1965] = String.fromCharCode (0xffff);
+data[1966] = String.fromCharCode (0xffff);
+data[1967] = String.fromCharCode (0xffff);
+data[1968] = String.fromCharCode (0xffff);
+data[1969] = String.fromCharCode (0xffff);
+data[1970] = String.fromCharCode (0xffff);
+data[1971] = String.fromCharCode (0xffff);
+data[1972] = String.fromCharCode (0xffff);
+data[1973] = String.fromCharCode (0xffff);
+data[1974] = String.fromCharCode (0xffff);
+data[1975] = String.fromCharCode (0xffff);
+data[1976] = String.fromCharCode (0xffff);
+data[1977] = String.fromCharCode (0xffff);
+data[1978] = String.fromCharCode (0xffff);
+data[1979] = String.fromCharCode (0xffff);
+data[1980] = String.fromCharCode (0xffff);
+data[1981] = String.fromCharCode (0xffff);
+data[1982] = String.fromCharCode (0xffff);
+data[1983] = String.fromCharCode (0xffff);
+data[1984] = String.fromCharCode (0xffff);
+data[1985] = String.fromCharCode (0xffff);
+data[1986] = String.fromCharCode (0xffff);
+data[1987] = String.fromCharCode (0xffff);
+data[1988] = String.fromCharCode (0xffff);
+data[1989] = String.fromCharCode (0xffff);
+data[1990] = String.fromCharCode (0xffff);
+data[1991] = String.fromCharCode (0xffff);
+data[1992] = String.fromCharCode (0xffff);
+data[1993] = String.fromCharCode (0xffff);
+data[1994] = String.fromCharCode (0xffff);
+data[1995] = String.fromCharCode (0xffff);
+data[1996] = String.fromCharCode (0xffff);
+data[1997] = String.fromCharCode (0xffff);
+data[1998] = String.fromCharCode (0xffff);
+data[1999] = String.fromCharCode (0xffff);
+data[2000] = String.fromCharCode (0xffff);
+data[2001] = String.fromCharCode (0xffff);
+data[2002] = String.fromCharCode (0xffff);
+data[2003] = String.fromCharCode (0xffff);
+data[2004] = String.fromCharCode (0xffff);
+data[2005] = String.fromCharCode (0xffff);
+data[2006] = String.fromCharCode (0xffff);
+data[2007] = String.fromCharCode (0xffff);
+data[2008] = String.fromCharCode (0xffff);
+data[2009] = String.fromCharCode (0xffff);
+data[2010] = String.fromCharCode (0xffff);
+data[2011] = String.fromCharCode (0xffff);
+data[2012] = String.fromCharCode (0xffff);
+data[2013] = String.fromCharCode (0xffff);
+data[2014] = String.fromCharCode (0xffff);
+data[2015] = String.fromCharCode (0xffff);
+data[2016] = String.fromCharCode (0xffff);
+data[2017] = String.fromCharCode (0xffff);
+data[2018] = String.fromCharCode (0xffff);
+data[2019] = String.fromCharCode (0xffff);
+data[2020] = String.fromCharCode (0xffff);
+data[2021] = String.fromCharCode (0xffff);
+data[2022] = String.fromCharCode (0xffff);
+data[2023] = String.fromCharCode (0xffff);
+data[2024] = String.fromCharCode (0xffff);
+data[2025] = String.fromCharCode (0xffff);
+data[2026] = String.fromCharCode (0xffff);
+data[2027] = String.fromCharCode (0xffff);
+data[2028] = String.fromCharCode (0xffff);
+data[2029] = String.fromCharCode (0xffff);
+data[2030] = String.fromCharCode (0xffff);
+data[2031] = String.fromCharCode (0xffff);
+data[2032] = String.fromCharCode (0xffff);
+data[2033] = String.fromCharCode (0xffff);
+data[2034] = String.fromCharCode (0xffff);
+data[2035] = String.fromCharCode (0xffff);
+data[2036] = String.fromCharCode (0xffff);
+data[2037] = String.fromCharCode (0xffff);
+data[2038] = String.fromCharCode (0xffff);
+data[2039] = String.fromCharCode (0xffff);
+data[2040] = String.fromCharCode (0xffff);
+data[2041] = String.fromCharCode (0xffff);
+data[2042] = String.fromCharCode (0xffff);
+data[2043] = String.fromCharCode (0xffff);
+data[2044] = String.fromCharCode (0xffff);
+data[2045] = String.fromCharCode (0xffff);
+data[2046] = String.fromCharCode (0xffff);
+data[2047] = String.fromCharCode (0xffff);
+data[2048] = String.fromCharCode (0xffff);
+data[2049] = String.fromCharCode (0xffff);
+data[2050] = String.fromCharCode (0xffff);
+data[2051] = String.fromCharCode (0xffff);
+data[2052] = String.fromCharCode (0xffff);
+data[2053] = String.fromCharCode (0xffff);
+data[2054] = String.fromCharCode (0xffff);
+data[2055] = String.fromCharCode (0xffff);
+data[2056] = String.fromCharCode (0xffff);
+data[2057] = String.fromCharCode (0xffff);
+data[2058] = String.fromCharCode (0xffff);
+data[2059] = String.fromCharCode (0xffff);
+data[2060] = String.fromCharCode (0xffff);
+data[2061] = String.fromCharCode (0xffff);
+data[2062] = String.fromCharCode (0xffff);
+data[2063] = String.fromCharCode (0xffff);
+data[2064] = String.fromCharCode (0xffff);
+data[2065] = String.fromCharCode (0xffff);
+data[2066] = String.fromCharCode (0xffff);
+data[2067] = String.fromCharCode (0xffff);
+data[2068] = String.fromCharCode (0xffff);
+data[2069] = String.fromCharCode (0xffff);
+data[2070] = String.fromCharCode (0xffff);
+data[2071] = String.fromCharCode (0xffff);
+data[2072] = String.fromCharCode (0xffff);
+data[2073] = String.fromCharCode (0xffff);
+data[2074] = String.fromCharCode (0xffff);
+data[2075] = String.fromCharCode (0xffff);
+data[2076] = String.fromCharCode (0xffff);
+data[2077] = String.fromCharCode (0xffff);
+data[2078] = String.fromCharCode (0xffff);
+data[2079] = String.fromCharCode (0xffff);
+data[2080] = String.fromCharCode (0xffff);
+data[2081] = String.fromCharCode (0xffff);
+data[2082] = String.fromCharCode (0xffff);
+data[2083] = String.fromCharCode (0xffff);
+data[2084] = String.fromCharCode (0xffff);
+data[2085] = String.fromCharCode (0xffff);
+data[2086] = String.fromCharCode (0xffff);
+data[2087] = String.fromCharCode (0xffff);
+data[2088] = String.fromCharCode (0xffff);
+data[2089] = String.fromCharCode (0xffff);
+data[2090] = String.fromCharCode (0xffff);
+data[2091] = String.fromCharCode (0xffff);
+data[2092] = String.fromCharCode (0xffff);
+data[2093] = String.fromCharCode (0xffff);
+data[2094] = String.fromCharCode (0xffff);
+data[2095] = String.fromCharCode (0xffff);
+data[2096] = String.fromCharCode (0xffff);
+data[2097] = String.fromCharCode (0xffff);
+data[2098] = String.fromCharCode (0xffff);
+data[2099] = String.fromCharCode (0xffff);
+data[2100] = String.fromCharCode (0xffff);
+data[2101] = String.fromCharCode (0xffff);
+data[2102] = String.fromCharCode (0xffff);
+data[2103] = String.fromCharCode (0xffff);
+data[2104] = String.fromCharCode (0xffff);
+data[2105] = String.fromCharCode (0xffff);
+data[2106] = String.fromCharCode (0xffff);
+data[2107] = String.fromCharCode (0xffff);
+data[2108] = String.fromCharCode (0xffff);
+data[2109] = String.fromCharCode (0xffff);
+data[2110] = String.fromCharCode (0xffff);
+data[2111] = String.fromCharCode (0xffff);
+data[2112] = String.fromCharCode (0xffff);
+data[2113] = String.fromCharCode (0xffff);
+data[2114] = String.fromCharCode (0xffff);
+data[2115] = String.fromCharCode (0xffff);
+data[2116] = String.fromCharCode (0xffff);
+data[2117] = String.fromCharCode (0xffff);
+data[2118] = String.fromCharCode (0xffff);
+data[2119] = String.fromCharCode (0xffff);
+data[2120] = String.fromCharCode (0xffff);
+data[2121] = String.fromCharCode (0xffff);
+data[2122] = String.fromCharCode (0xffff);
+data[2123] = String.fromCharCode (0xffff);
+data[2124] = String.fromCharCode (0xffff);
+data[2125] = String.fromCharCode (0xffff);
+data[2126] = String.fromCharCode (0xffff);
+data[2127] = String.fromCharCode (0xffff);
+data[2128] = String.fromCharCode (0xffff);
+data[2129] = String.fromCharCode (0xffff);
+data[2130] = String.fromCharCode (0xffff);
+data[2131] = String.fromCharCode (0xffff);
+data[2132] = String.fromCharCode (0xffff);
+data[2133] = String.fromCharCode (0xffff);
+data[2134] = String.fromCharCode (0xffff);
+data[2135] = String.fromCharCode (0xffff);
+data[2136] = String.fromCharCode (0xffff);
+data[2137] = String.fromCharCode (0xffff);
+data[2138] = String.fromCharCode (0xffff);
+data[2139] = String.fromCharCode (0xffff);
+data[2140] = String.fromCharCode (0xffff);
+data[2141] = String.fromCharCode (0xffff);
+data[2142] = String.fromCharCode (0xffff);
+data[2143] = String.fromCharCode (0xffff);
+data[2144] = String.fromCharCode (0xffff);
+data[2145] = String.fromCharCode (0xffff);
+data[2146] = String.fromCharCode (0xffff);
+data[2147] = String.fromCharCode (0xffff);
+data[2148] = String.fromCharCode (0xffff);
+data[2149] = String.fromCharCode (0xffff);
+data[2150] = String.fromCharCode (0xffff);
+data[2151] = String.fromCharCode (0xffff);
+data[2152] = String.fromCharCode (0xffff);
+data[2153] = String.fromCharCode (0xffff);
+data[2154] = String.fromCharCode (0xffff);
+data[2155] = String.fromCharCode (0xffff);
+data[2156] = String.fromCharCode (0xffff);
+data[2157] = String.fromCharCode (0xffff);
+data[2158] = String.fromCharCode (0xffff);
+data[2159] = String.fromCharCode (0xffff);
+data[2160] = String.fromCharCode (0xffff);
+data[2161] = String.fromCharCode (0xffff);
+data[2162] = String.fromCharCode (0xffff);
+data[2163] = String.fromCharCode (0xffff);
+data[2164] = String.fromCharCode (0xffff);
+data[2165] = String.fromCharCode (0xffff);
+data[2166] = String.fromCharCode (0xffff);
+data[2167] = String.fromCharCode (0xffff);
+data[2168] = String.fromCharCode (0xffff);
+data[2169] = String.fromCharCode (0xffff);
+data[2170] = String.fromCharCode (0xffff);
+data[2171] = String.fromCharCode (0xffff);
+data[2172] = String.fromCharCode (0xffff);
+data[2173] = String.fromCharCode (0xffff);
+data[2174] = String.fromCharCode (0xffff);
+data[2175] = String.fromCharCode (0xffff);
+data[2176] = String.fromCharCode (0xffff);
+data[2177] = String.fromCharCode (0xffff);
+data[2178] = String.fromCharCode (0xffff);
+data[2179] = String.fromCharCode (0xffff);
+data[2180] = String.fromCharCode (0xffff);
+data[2181] = String.fromCharCode (0xffff);
+data[2182] = String.fromCharCode (0xffff);
+data[2183] = String.fromCharCode (0xffff);
+data[2184] = String.fromCharCode (0xffff);
+data[2185] = String.fromCharCode (0xffff);
+data[2186] = String.fromCharCode (0xffff);
+data[2187] = String.fromCharCode (0xffff);
+data[2188] = String.fromCharCode (0xffff);
+data[2189] = String.fromCharCode (0xffff);
+data[2190] = String.fromCharCode (0xffff);
+data[2191] = String.fromCharCode (0xffff);
+data[2192] = String.fromCharCode (0xffff);
+data[2193] = String.fromCharCode (0xffff);
+data[2194] = String.fromCharCode (0xffff);
+data[2195] = String.fromCharCode (0xffff);
+data[2196] = String.fromCharCode (0xffff);
+data[2197] = String.fromCharCode (0xffff);
+data[2198] = String.fromCharCode (0xffff);
+data[2199] = String.fromCharCode (0xffff);
+data[2200] = String.fromCharCode (0xffff);
+data[2201] = String.fromCharCode (0xffff);
+data[2202] = String.fromCharCode (0xffff);
+data[2203] = String.fromCharCode (0xffff);
+data[2204] = String.fromCharCode (0xffff);
+data[2205] = String.fromCharCode (0xffff);
+data[2206] = String.fromCharCode (0xffff);
+data[2207] = String.fromCharCode (0xffff);
+data[2208] = String.fromCharCode (0xffff);
+data[2209] = String.fromCharCode (0xffff);
+data[2210] = String.fromCharCode (0xffff);
+data[2211] = String.fromCharCode (0xffff);
+data[2212] = String.fromCharCode (0xffff);
+data[2213] = String.fromCharCode (0xffff);
+data[2214] = String.fromCharCode (0xffff);
+data[2215] = String.fromCharCode (0xffff);
+data[2216] = String.fromCharCode (0xffff);
+data[2217] = String.fromCharCode (0xffff);
+data[2218] = String.fromCharCode (0xffff);
+data[2219] = String.fromCharCode (0xffff);
+data[2220] = String.fromCharCode (0xffff);
+data[2221] = String.fromCharCode (0xffff);
+data[2222] = String.fromCharCode (0xffff);
+data[2223] = String.fromCharCode (0xffff);
+data[2224] = String.fromCharCode (0xffff);
+data[2225] = String.fromCharCode (0xffff);
+data[2226] = String.fromCharCode (0xffff);
+data[2227] = String.fromCharCode (0xffff);
+data[2228] = String.fromCharCode (0xffff);
+data[2229] = String.fromCharCode (0xffff);
+data[2230] = String.fromCharCode (0xffff);
+data[2231] = String.fromCharCode (0xffff);
+data[2232] = String.fromCharCode (0xffff);
+data[2233] = String.fromCharCode (0xffff);
+data[2234] = String.fromCharCode (0xffff);
+data[2235] = String.fromCharCode (0xffff);
+data[2236] = String.fromCharCode (0xffff);
+data[2237] = String.fromCharCode (0xffff);
+data[2238] = String.fromCharCode (0xffff);
+data[2239] = String.fromCharCode (0xffff);
+data[2240] = String.fromCharCode (0xffff);
+data[2241] = String.fromCharCode (0xffff);
+data[2242] = String.fromCharCode (0xffff);
+data[2243] = String.fromCharCode (0xffff);
+data[2244] = String.fromCharCode (0xffff);
+data[2245] = String.fromCharCode (0xffff);
+data[2246] = String.fromCharCode (0xffff);
+data[2247] = String.fromCharCode (0xffff);
+data[2248] = String.fromCharCode (0xffff);
+data[2249] = String.fromCharCode (0xffff);
+data[2250] = String.fromCharCode (0xffff);
+data[2251] = String.fromCharCode (0xffff);
+data[2252] = String.fromCharCode (0xffff);
+data[2253] = String.fromCharCode (0xffff);
+data[2254] = String.fromCharCode (0xffff);
+data[2255] = String.fromCharCode (0xffff);
+data[2256] = String.fromCharCode (0xffff);
+data[2257] = String.fromCharCode (0xffff);
+data[2258] = String.fromCharCode (0xffff);
+data[2259] = String.fromCharCode (0xffff);
+data[2260] = String.fromCharCode (0xffff);
+data[2261] = String.fromCharCode (0xffff);
+data[2262] = String.fromCharCode (0xffff);
+data[2263] = String.fromCharCode (0xffff);
+data[2264] = String.fromCharCode (0xffff);
+data[2265] = String.fromCharCode (0xffff);
+data[2266] = String.fromCharCode (0xffff);
+data[2267] = String.fromCharCode (0xffff);
+data[2268] = String.fromCharCode (0xffff);
+data[2269] = String.fromCharCode (0xffff);
+data[2270] = String.fromCharCode (0xffff);
+data[2271] = String.fromCharCode (0xffff);
+data[2272] = String.fromCharCode (0xffff);
+data[2273] = String.fromCharCode (0xffff);
+data[2274] = String.fromCharCode (0xffff);
+data[2275] = String.fromCharCode (0xffff);
+data[2276] = String.fromCharCode (0xffff);
+data[2277] = String.fromCharCode (0xffff);
+data[2278] = String.fromCharCode (0xffff);
+data[2279] = String.fromCharCode (0xffff);
+data[2280] = String.fromCharCode (0xffff);
+data[2281] = String.fromCharCode (0xffff);
+data[2282] = String.fromCharCode (0xffff);
+data[2283] = String.fromCharCode (0xffff);
+data[2284] = String.fromCharCode (0xffff);
+data[2285] = String.fromCharCode (0xffff);
+data[2286] = String.fromCharCode (0xffff);
+data[2287] = String.fromCharCode (0xffff);
+data[2288] = String.fromCharCode (0xffff);
+data[2289] = String.fromCharCode (0xffff);
+data[2290] = String.fromCharCode (0xffff);
+data[2291] = String.fromCharCode (0xffff);
+data[2292] = String.fromCharCode (0xffff);
+data[2293] = String.fromCharCode (0xffff);
+data[2294] = String.fromCharCode (0xffff);
+data[2295] = String.fromCharCode (0xffff);
+data[2296] = String.fromCharCode (0xffff);
+data[2297] = String.fromCharCode (0xffff);
+data[2298] = String.fromCharCode (0xffff);
+data[2299] = String.fromCharCode (0xffff);
+data[2300] = String.fromCharCode (0xffff);
+data[2301] = String.fromCharCode (0xffff);
+data[2302] = String.fromCharCode (0xffff);
+data[2303] = String.fromCharCode (0xffff);
+data[2304] = String.fromCharCode (0xffff);
+data[2305] = String.fromCharCode (0xffff);
+data[2306] = String.fromCharCode (0xffff);
+data[2307] = String.fromCharCode (0xffff);
+data[2308] = String.fromCharCode (0xffff);
+data[2309] = String.fromCharCode (0xffff);
+data[2310] = String.fromCharCode (0xffff);
+data[2311] = String.fromCharCode (0xffff);
+data[2312] = String.fromCharCode (0xffff);
+data[2313] = String.fromCharCode (0xffff);
+data[2314] = String.fromCharCode (0xffff);
+data[2315] = String.fromCharCode (0xffff);
+data[2316] = String.fromCharCode (0xffff);
+data[2317] = String.fromCharCode (0xffff);
+data[2318] = String.fromCharCode (0xffff);
+data[2319] = String.fromCharCode (0xffff);
+data[2320] = String.fromCharCode (0xffff);
+data[2321] = String.fromCharCode (0xffff);
+data[2322] = String.fromCharCode (0xffff);
+data[2323] = String.fromCharCode (0xffff);
+data[2324] = String.fromCharCode (0xffff);
+data[2325] = String.fromCharCode (0xffff);
+data[2326] = String.fromCharCode (0xffff);
+data[2327] = String.fromCharCode (0xffff);
+data[2328] = String.fromCharCode (0xffff);
+data[2329] = String.fromCharCode (0xffff);
+data[2330] = String.fromCharCode (0xffff);
+data[2331] = String.fromCharCode (0xffff);
+data[2332] = String.fromCharCode (0xffff);
+data[2333] = String.fromCharCode (0xffff);
+data[2334] = String.fromCharCode (0xffff);
+data[2335] = String.fromCharCode (0xffff);
+data[2336] = String.fromCharCode (0xffff);
+data[2337] = String.fromCharCode (0xffff);
+data[2338] = String.fromCharCode (0xffff);
+data[2339] = String.fromCharCode (0xffff);
+data[2340] = String.fromCharCode (0xffff);
+data[2341] = String.fromCharCode (0xffff);
+data[2342] = String.fromCharCode (0xffff);
+data[2343] = String.fromCharCode (0xffff);
+data[2344] = String.fromCharCode (0xffff);
+data[2345] = String.fromCharCode (0xffff);
+data[2346] = String.fromCharCode (0xffff);
+data[2347] = String.fromCharCode (0xffff);
+data[2348] = String.fromCharCode (0xffff);
+data[2349] = String.fromCharCode (0xffff);
+data[2350] = String.fromCharCode (0xffff);
+data[2351] = String.fromCharCode (0xffff);
+data[2352] = String.fromCharCode (0xffff);
+data[2353] = String.fromCharCode (0xffff);
+data[2354] = String.fromCharCode (0xffff);
+data[2355] = String.fromCharCode (0xffff);
+data[2356] = String.fromCharCode (0xffff);
+data[2357] = String.fromCharCode (0xffff);
+data[2358] = String.fromCharCode (0xffff);
+data[2359] = String.fromCharCode (0xffff);
+data[2360] = String.fromCharCode (0xffff);
+data[2361] = String.fromCharCode (0xffff);
+data[2362] = String.fromCharCode (0xffff);
+data[2363] = String.fromCharCode (0xffff);
+data[2364] = String.fromCharCode (0xffff);
+data[2365] = String.fromCharCode (0xffff);
+data[2366] = String.fromCharCode (0xffff);
+data[2367] = String.fromCharCode (0xffff);
+data[2368] = String.fromCharCode (0xffff);
+data[2369] = String.fromCharCode (0xffff);
+data[2370] = String.fromCharCode (0xffff);
+data[2371] = String.fromCharCode (0xffff);
+data[2372] = String.fromCharCode (0xffff);
+data[2373] = String.fromCharCode (0xffff);
+data[2374] = String.fromCharCode (0xffff);
+data[2375] = String.fromCharCode (0xffff);
+data[2376] = String.fromCharCode (0xffff);
+data[2377] = String.fromCharCode (0xffff);
+data[2378] = String.fromCharCode (0xffff);
+data[2379] = String.fromCharCode (0xffff);
+data[2380] = String.fromCharCode (0xffff);
+data[2381] = String.fromCharCode (0xffff);
+data[2382] = String.fromCharCode (0xffff);
+data[2383] = String.fromCharCode (0xffff);
+data[2384] = String.fromCharCode (0xffff);
+data[2385] = String.fromCharCode (0xffff);
+data[2386] = String.fromCharCode (0xffff);
+data[2387] = String.fromCharCode (0xffff);
+data[2388] = String.fromCharCode (0xffff);
+data[2389] = String.fromCharCode (0xffff);
+data[2390] = String.fromCharCode (0xffff);
+data[2391] = String.fromCharCode (0xffff);
+data[2392] = String.fromCharCode (0xffff);
+data[2393] = String.fromCharCode (0xffff);
+data[2394] = String.fromCharCode (0xffff);
+data[2395] = String.fromCharCode (0xffff);
+data[2396] = String.fromCharCode (0xffff);
+data[2397] = String.fromCharCode (0xffff);
+data[2398] = String.fromCharCode (0xffff);
+data[2399] = String.fromCharCode (0xffff);
+data[2400] = String.fromCharCode (0xffff);
+data[2401] = String.fromCharCode (0xffff);
+data[2402] = String.fromCharCode (0xffff);
+data[2403] = String.fromCharCode (0xffff);
+data[2404] = String.fromCharCode (0xffff);
+data[2405] = String.fromCharCode (0xffff);
+data[2406] = String.fromCharCode (0xffff);
+data[2407] = String.fromCharCode (0xffff);
+data[2408] = String.fromCharCode (0xffff);
+data[2409] = String.fromCharCode (0xffff);
+data[2410] = String.fromCharCode (0xffff);
+data[2411] = String.fromCharCode (0xffff);
+data[2412] = String.fromCharCode (0xffff);
+data[2413] = String.fromCharCode (0xffff);
+data[2414] = String.fromCharCode (0xffff);
+data[2415] = String.fromCharCode (0xffff);
+data[2416] = String.fromCharCode (0xffff);
+data[2417] = String.fromCharCode (0xffff);
+data[2418] = String.fromCharCode (0xffff);
+data[2419] = String.fromCharCode (0xffff);
+data[2420] = String.fromCharCode (0xffff);
+data[2421] = String.fromCharCode (0xffff);
+data[2422] = String.fromCharCode (0xffff);
+data[2423] = String.fromCharCode (0xffff);
+data[2424] = String.fromCharCode (0xffff);
+data[2425] = String.fromCharCode (0xffff);
+data[2426] = String.fromCharCode (0xffff);
+data[2427] = String.fromCharCode (0xffff);
+data[2428] = String.fromCharCode (0xffff);
+data[2429] = String.fromCharCode (0xffff);
+data[2430] = String.fromCharCode (0xffff);
+data[2431] = String.fromCharCode (0xffff);
+data[2432] = String.fromCharCode (0xffff);
+data[2433] = String.fromCharCode (0xffff);
+data[2434] = String.fromCharCode (0xffff);
+data[2435] = String.fromCharCode (0xffff);
+data[2436] = String.fromCharCode (0xffff);
+data[2437] = String.fromCharCode (0xffff);
+data[2438] = String.fromCharCode (0xffff);
+data[2439] = String.fromCharCode (0xffff);
+data[2440] = String.fromCharCode (0xffff);
+data[2441] = String.fromCharCode (0xffff);
+data[2442] = String.fromCharCode (0xffff);
+data[2443] = String.fromCharCode (0xffff);
+data[2444] = String.fromCharCode (0xffff);
+data[2445] = String.fromCharCode (0xffff);
+data[2446] = String.fromCharCode (0xffff);
+data[2447] = String.fromCharCode (0xffff);
+data[2448] = String.fromCharCode (0xffff);
+data[2449] = String.fromCharCode (0xffff);
+data[2450] = String.fromCharCode (0xffff);
+data[2451] = String.fromCharCode (0xffff);
+data[2452] = String.fromCharCode (0xffff);
+data[2453] = String.fromCharCode (0xffff);
+data[2454] = String.fromCharCode (0xffff);
+data[2455] = String.fromCharCode (0xffff);
+data[2456] = String.fromCharCode (0xffff);
+data[2457] = String.fromCharCode (0xffff);
+data[2458] = String.fromCharCode (0xffff);
+data[2459] = String.fromCharCode (0xffff);
+data[2460] = String.fromCharCode (0xffff);
+data[2461] = String.fromCharCode (0xffff);
+data[2462] = String.fromCharCode (0xffff);
+data[2463] = String.fromCharCode (0xffff);
+data[2464] = String.fromCharCode (0xffff);
+data[2465] = String.fromCharCode (0xffff);
+data[2466] = String.fromCharCode (0xffff);
+data[2467] = String.fromCharCode (0xffff);
+data[2468] = String.fromCharCode (0xffff);
+data[2469] = String.fromCharCode (0xffff);
+data[2470] = String.fromCharCode (0xffff);
+data[2471] = String.fromCharCode (0xffff);
+data[2472] = String.fromCharCode (0xffff);
+data[2473] = String.fromCharCode (0xffff);
+data[2474] = String.fromCharCode (0xffff);
+data[2475] = String.fromCharCode (0xffff);
+data[2476] = String.fromCharCode (0xffff);
+data[2477] = String.fromCharCode (0xffff);
+data[2478] = String.fromCharCode (0xffff);
+data[2479] = String.fromCharCode (0xffff);
+data[2480] = String.fromCharCode (0xffff);
+data[2481] = String.fromCharCode (0xffff);
+data[2482] = String.fromCharCode (0xffff);
+data[2483] = String.fromCharCode (0xffff);
+data[2484] = String.fromCharCode (0xffff);
+data[2485] = String.fromCharCode (0xffff);
+data[2486] = String.fromCharCode (0xffff);
+data[2487] = String.fromCharCode (0xffff);
+data[2488] = String.fromCharCode (0xffff);
+data[2489] = String.fromCharCode (0xffff);
+data[2490] = String.fromCharCode (0xffff);
+data[2491] = String.fromCharCode (0xffff);
+data[2492] = String.fromCharCode (0xffff);
+data[2493] = String.fromCharCode (0xffff);
+data[2494] = String.fromCharCode (0xffff);
+data[2495] = String.fromCharCode (0xffff);
+data[2496] = String.fromCharCode (0xffff);
+data[2497] = String.fromCharCode (0xffff);
+data[2498] = String.fromCharCode (0xffff);
+data[2499] = String.fromCharCode (0xffff);
+data[2500] = String.fromCharCode (0xffff);
+data[2501] = String.fromCharCode (0xffff);
+data[2502] = String.fromCharCode (0xffff);
+data[2503] = String.fromCharCode (0xffff);
+data[2504] = String.fromCharCode (0xffff);
+data[2505] = String.fromCharCode (0xffff);
+data[2506] = String.fromCharCode (0xffff);
+data[2507] = String.fromCharCode (0xffff);
+data[2508] = String.fromCharCode (0xffff);
+data[2509] = String.fromCharCode (0xffff);
+data[2510] = String.fromCharCode (0xffff);
+data[2511] = String.fromCharCode (0xffff);
+data[2512] = String.fromCharCode (0xffff);
+data[2513] = String.fromCharCode (0xffff);
+data[2514] = String.fromCharCode (0xffff);
+data[2515] = String.fromCharCode (0xffff);
+data[2516] = String.fromCharCode (0xffff);
+data[2517] = String.fromCharCode (0xffff);
+data[2518] = String.fromCharCode (0xffff);
+data[2519] = String.fromCharCode (0xffff);
+data[2520] = String.fromCharCode (0xffff);
+data[2521] = String.fromCharCode (0xffff);
+data[2522] = String.fromCharCode (0xffff);
+data[2523] = String.fromCharCode (0xffff);
+data[2524] = String.fromCharCode (0xffff);
+data[2525] = String.fromCharCode (0xffff);
+data[2526] = String.fromCharCode (0xffff);
+data[2527] = String.fromCharCode (0xffff);
+data[2528] = String.fromCharCode (0xffff);
+data[2529] = String.fromCharCode (0xffff);
+data[2530] = String.fromCharCode (0xffff);
+data[2531] = String.fromCharCode (0xffff);
+data[2532] = String.fromCharCode (0xffff);
+data[2533] = String.fromCharCode (0xffff);
+data[2534] = String.fromCharCode (0xffff);
+data[2535] = String.fromCharCode (0xffff);
+data[2536] = String.fromCharCode (0xffff);
+data[2537] = String.fromCharCode (0xffff);
+data[2538] = String.fromCharCode (0xffff);
+data[2539] = String.fromCharCode (0xffff);
+data[2540] = String.fromCharCode (0xffff);
+data[2541] = String.fromCharCode (0xffff);
+data[2542] = String.fromCharCode (0xffff);
+data[2543] = String.fromCharCode (0xffff);
+data[2544] = String.fromCharCode (0xffff);
+data[2545] = String.fromCharCode (0xffff);
+data[2546] = String.fromCharCode (0xffff);
+data[2547] = String.fromCharCode (0xffff);
+data[2548] = String.fromCharCode (0xffff);
+data[2549] = String.fromCharCode (0xffff);
+data[2550] = String.fromCharCode (0xffff);
+data[2551] = String.fromCharCode (0xffff);
+data[2552] = String.fromCharCode (0xffff);
+data[2553] = String.fromCharCode (0xffff);
+data[2554] = String.fromCharCode (0x003f);
+data[2752] = String.fromCharCode (0xffff);
+data[2753] = String.fromCharCode (0xffff);
+data[2754] = String.fromCharCode (0xffff);
+data[2755] = String.fromCharCode (0xffff);
+data[2756] = String.fromCharCode (0xffff);
+data[2757] = String.fromCharCode (0xffff);
+data[2758] = String.fromCharCode (0xffff);
+data[2759] = String.fromCharCode (0xffff);
+data[2760] = String.fromCharCode (0xffff);
+data[2761] = String.fromCharCode (0xffff);
+data[2762] = String.fromCharCode (0xffff);
+data[2763] = String.fromCharCode (0xffff);
+data[2764] = String.fromCharCode (0xffff);
+data[2765] = String.fromCharCode (0xffff);
+data[2766] = String.fromCharCode (0xffff);
+data[2767] = String.fromCharCode (0xffff);
+data[2768] = String.fromCharCode (0xffff);
+data[2769] = String.fromCharCode (0xffff);
+data[2770] = String.fromCharCode (0xffff);
+data[2771] = String.fromCharCode (0xffff);
+data[2772] = String.fromCharCode (0xffff);
+data[2773] = String.fromCharCode (0xffff);
+data[2774] = String.fromCharCode (0xffff);
+data[2775] = String.fromCharCode (0xffff);
+data[2776] = String.fromCharCode (0xffff);
+data[2777] = String.fromCharCode (0xffff);
+data[2778] = String.fromCharCode (0xffff);
+data[2779] = String.fromCharCode (0xffff);
+data[2780] = String.fromCharCode (0xffff);
+data[2781] = String.fromCharCode (0xffff);
+data[2782] = String.fromCharCode (0xffff);
+data[2783] = String.fromCharCode (0xffff);
+data[2784] = String.fromCharCode (0xffff);
+data[2785] = String.fromCharCode (0xffff);
+data[2786] = String.fromCharCode (0xffff);
+data[2787] = String.fromCharCode (0xffff);
+data[2788] = String.fromCharCode (0xffff);
+data[2789] = String.fromCharCode (0xffff);
+data[2790] = String.fromCharCode (0xffff);
+data[2791] = String.fromCharCode (0xffff);
+data[2792] = String.fromCharCode (0xffff);
+data[2793] = String.fromCharCode (0xffff);
+data[2794] = String.fromCharCode (0xffff);
+data[2795] = String.fromCharCode (0xffff);
+data[2796] = String.fromCharCode (0xffff);
+data[2797] = String.fromCharCode (0xffff);
+data[2798] = String.fromCharCode (0xffff);
+data[2799] = String.fromCharCode (0xffff);
+data[2800] = String.fromCharCode (0xffff);
+data[2801] = String.fromCharCode (0xffff);
+data[2802] = String.fromCharCode (0xffff);
+data[2803] = String.fromCharCode (0xffff);
+data[2804] = String.fromCharCode (0xffff);
+data[2805] = String.fromCharCode (0xffff);
+data[2806] = String.fromCharCode (0xffff);
+data[2807] = String.fromCharCode (0xffff);
+data[2808] = String.fromCharCode (0xffff);
+data[2809] = String.fromCharCode (0xffff);
+data[2810] = String.fromCharCode (0xffff);
+data[2811] = String.fromCharCode (0xffff);
+data[2812] = String.fromCharCode (0xffff);
+data[2813] = String.fromCharCode (0xffff);
+data[2814] = String.fromCharCode (0xffff);
+data[2815] = String.fromCharCode (0xffff);
+data[2816] = String.fromCharCode (0xffff);
+data[2817] = String.fromCharCode (0xffff);
+data[2818] = String.fromCharCode (0xffff);
+data[2819] = String.fromCharCode (0xffff);
+data[2820] = String.fromCharCode (0xffff);
+data[2821] = String.fromCharCode (0xffff);
+data[2822] = String.fromCharCode (0xffff);
+data[2823] = String.fromCharCode (0xffff);
+data[2824] = String.fromCharCode (0xffff);
+data[2825] = String.fromCharCode (0xffff);
+data[2826] = String.fromCharCode (0xffff);
+data[2827] = String.fromCharCode (0xffff);
+data[2828] = String.fromCharCode (0xffff);
+data[2829] = String.fromCharCode (0xffff);
+data[2830] = String.fromCharCode (0xffff);
+data[2831] = String.fromCharCode (0xffff);
+data[2832] = String.fromCharCode (0xffff);
+data[2833] = String.fromCharCode (0xffff);
+data[2834] = String.fromCharCode (0xffff);
+data[2835] = String.fromCharCode (0xffff);
+data[2836] = String.fromCharCode (0xffff);
+data[2837] = String.fromCharCode (0xffff);
+data[2838] = String.fromCharCode (0xffff);
+data[2839] = String.fromCharCode (0xffff);
+data[2840] = String.fromCharCode (0xffff);
+data[2841] = String.fromCharCode (0xffff);
+data[2842] = String.fromCharCode (0xffff);
+data[2843] = String.fromCharCode (0xffff);
+data[2844] = String.fromCharCode (0xffff);
+data[2845] = String.fromCharCode (0xffff);
+data[2846] = String.fromCharCode (0xffff);
+data[2847] = String.fromCharCode (0xffff);
+data[2848] = String.fromCharCode (0xffff);
+data[2849] = String.fromCharCode (0xffff);
+data[2850] = String.fromCharCode (0xffff);
+data[2851] = String.fromCharCode (0xffff);
+data[2852] = String.fromCharCode (0xffff);
+data[2853] = String.fromCharCode (0xffff);
+data[2854] = String.fromCharCode (0xffff);
+data[2855] = String.fromCharCode (0xffff);
+data[2856] = String.fromCharCode (0xffff);
+data[2857] = String.fromCharCode (0xffff);
+data[2858] = String.fromCharCode (0xffff);
+data[2859] = String.fromCharCode (0xffff);
+data[2860] = String.fromCharCode (0xffff);
+data[2861] = String.fromCharCode (0xffff);
+data[2862] = String.fromCharCode (0xffff);
+data[2863] = String.fromCharCode (0xffff);
+data[2864] = String.fromCharCode (0xffff);
+data[2865] = String.fromCharCode (0xffff);
+data[2866] = String.fromCharCode (0xffff);
+data[2867] = String.fromCharCode (0xffff);
+data[2868] = String.fromCharCode (0xffff);
+data[2869] = String.fromCharCode (0xffff);
+data[2870] = String.fromCharCode (0xffff);
+data[2871] = String.fromCharCode (0xffff);
+data[2872] = String.fromCharCode (0xffff);
+data[2873] = String.fromCharCode (0xffff);
+data[2874] = String.fromCharCode (0xffff);
+data[2875] = String.fromCharCode (0xffff);
+data[2876] = String.fromCharCode (0xffff);
+data[2877] = String.fromCharCode (0xffff);
+data[2878] = String.fromCharCode (0xffff);
+data[2879] = String.fromCharCode (0xffff);
+data[2880] = String.fromCharCode (0xffff);
+data[2881] = String.fromCharCode (0xffff);
+data[2882] = String.fromCharCode (0xffff);
+data[2883] = String.fromCharCode (0xffff);
+data[2884] = String.fromCharCode (0xffff);
+data[2885] = String.fromCharCode (0xffff);
+data[2886] = String.fromCharCode (0xffff);
+data[2887] = String.fromCharCode (0xffff);
+data[2888] = String.fromCharCode (0xffff);
+data[2889] = String.fromCharCode (0xffff);
+data[2890] = String.fromCharCode (0xffff);
+data[2891] = String.fromCharCode (0xffff);
+data[2892] = String.fromCharCode (0xffff);
+data[2893] = String.fromCharCode (0xffff);
+data[2894] = String.fromCharCode (0xffff);
+data[2895] = String.fromCharCode (0xffff);
+data[2896] = String.fromCharCode (0xffff);
+data[2897] = String.fromCharCode (0xffff);
+data[2898] = String.fromCharCode (0xffff);
+data[2899] = String.fromCharCode (0xffff);
+data[2900] = String.fromCharCode (0xffff);
+data[2901] = String.fromCharCode (0xffff);
+data[2902] = String.fromCharCode (0xffff);
+data[2903] = String.fromCharCode (0xffff);
+data[2904] = String.fromCharCode (0xffff);
+data[2905] = String.fromCharCode (0xffff);
+data[2906] = String.fromCharCode (0xffff);
+data[2907] = String.fromCharCode (0xffff);
+data[2908] = String.fromCharCode (0xffff);
+data[2909] = String.fromCharCode (0xffff);
+data[2910] = String.fromCharCode (0xffff);
+data[2911] = String.fromCharCode (0xffff);
+data[2912] = String.fromCharCode (0xffff);
+data[2913] = String.fromCharCode (0xffff);
+data[2914] = String.fromCharCode (0xffff);
+data[2915] = String.fromCharCode (0xffff);
+data[2916] = String.fromCharCode (0xffff);
+data[2917] = String.fromCharCode (0xffff);
+data[2918] = String.fromCharCode (0xffff);
+data[2919] = String.fromCharCode (0xffff);
+data[2920] = String.fromCharCode (0xffff);
+data[2921] = String.fromCharCode (0xffff);
+data[2922] = String.fromCharCode (0xffff);
+data[2923] = String.fromCharCode (0xffff);
+data[2924] = String.fromCharCode (0xffff);
+data[2925] = String.fromCharCode (0xffff);
+data[2926] = String.fromCharCode (0xffff);
+data[2927] = String.fromCharCode (0xffff);
+data[2928] = String.fromCharCode (0xffff);
+data[2929] = String.fromCharCode (0xffff);
+data[2930] = String.fromCharCode (0xffff);
+data[2931] = String.fromCharCode (0xffff);
+data[2932] = String.fromCharCode (0xffff);
+data[2933] = String.fromCharCode (0xffff);
+data[2934] = String.fromCharCode (0xffff);
+data[2935] = String.fromCharCode (0xffff);
+data[2936] = String.fromCharCode (0xffff);
+data[2937] = String.fromCharCode (0xffff);
+data[2938] = String.fromCharCode (0xffff);
+data[2939] = String.fromCharCode (0xffff);
+data[2940] = String.fromCharCode (0xffff);
+data[2941] = String.fromCharCode (0xffff);
+data[2942] = String.fromCharCode (0xffff);
+data[2943] = String.fromCharCode (0xffff);
+data[2944] = String.fromCharCode (0xffff);
+data[2945] = String.fromCharCode (0xffff);
+data[2946] = String.fromCharCode (0xffff);
+data[2947] = String.fromCharCode (0xffff);
+data[2948] = String.fromCharCode (0xffff);
+data[2949] = String.fromCharCode (0xffff);
+data[2950] = String.fromCharCode (0xffff);
+data[2951] = String.fromCharCode (0xffff);
+data[2952] = String.fromCharCode (0xffff);
+data[2953] = String.fromCharCode (0xffff);
+data[2954] = String.fromCharCode (0xffff);
+data[2955] = String.fromCharCode (0xffff);
+data[2956] = String.fromCharCode (0xffff);
+data[2957] = String.fromCharCode (0xffff);
+data[2958] = String.fromCharCode (0xffff);
+data[2959] = String.fromCharCode (0xffff);
+data[2960] = String.fromCharCode (0xffff);
+data[2961] = String.fromCharCode (0xffff);
+data[2962] = String.fromCharCode (0xffff);
+data[2963] = String.fromCharCode (0xffff);
+data[2964] = String.fromCharCode (0xffff);
+data[2965] = String.fromCharCode (0xffff);
+data[2966] = String.fromCharCode (0xffff);
+data[2967] = String.fromCharCode (0xffff);
+data[2968] = String.fromCharCode (0xffff);
+data[2969] = String.fromCharCode (0xffff);
+data[2970] = String.fromCharCode (0xffff);
+data[2971] = String.fromCharCode (0xffff);
+data[2972] = String.fromCharCode (0xffff);
+data[2973] = String.fromCharCode (0xffff);
+data[2974] = String.fromCharCode (0xffff);
+data[2975] = String.fromCharCode (0xffff);
+data[2976] = String.fromCharCode (0xffff);
+data[2977] = String.fromCharCode (0xffff);
+data[2978] = String.fromCharCode (0xffff);
+data[2979] = String.fromCharCode (0xffff);
+data[2980] = String.fromCharCode (0xffff);
+data[2981] = String.fromCharCode (0xffff);
+data[2982] = String.fromCharCode (0xffff);
+data[2983] = String.fromCharCode (0xffff);
+data[2984] = String.fromCharCode (0xffff);
+data[2985] = String.fromCharCode (0xffff);
+data[2986] = String.fromCharCode (0xffff);
+data[2987] = String.fromCharCode (0xffff);
+data[2988] = String.fromCharCode (0xffff);
+data[2989] = String.fromCharCode (0xffff);
+data[2990] = String.fromCharCode (0xffff);
+data[2991] = String.fromCharCode (0xffff);
+data[2992] = String.fromCharCode (0xffff);
+data[2993] = String.fromCharCode (0xffff);
+data[2994] = String.fromCharCode (0xffff);
+data[2995] = String.fromCharCode (0xffff);
+data[2996] = String.fromCharCode (0xffff);
+data[2997] = String.fromCharCode (0xffff);
+data[2998] = String.fromCharCode (0xffff);
+data[2999] = String.fromCharCode (0xffff);
+data[3000] = String.fromCharCode (0xffff);
+data[3001] = String.fromCharCode (0xffff);
+data[3002] = String.fromCharCode (0xffff);
+data[3003] = String.fromCharCode (0xffff);
+data[3004] = String.fromCharCode (0xffff);
+data[3005] = String.fromCharCode (0xffff);
+data[3006] = String.fromCharCode (0xffff);
+data[3007] = String.fromCharCode (0xffff);
+data[3008] = String.fromCharCode (0xffff);
+data[3009] = String.fromCharCode (0xffff);
+data[3010] = String.fromCharCode (0xffff);
+data[3011] = String.fromCharCode (0xffff);
+data[3012] = String.fromCharCode (0xffff);
+data[3013] = String.fromCharCode (0xffff);
+data[3014] = String.fromCharCode (0xffff);
+data[3015] = String.fromCharCode (0xffff);
+data[3016] = String.fromCharCode (0xffff);
+data[3017] = String.fromCharCode (0xffff);
+data[3018] = String.fromCharCode (0xffff);
+data[3019] = String.fromCharCode (0xffff);
+data[3020] = String.fromCharCode (0xffff);
+data[3021] = String.fromCharCode (0xffff);
+data[3022] = String.fromCharCode (0xffff);
+data[3023] = String.fromCharCode (0xffff);
+data[3024] = String.fromCharCode (0xffff);
+data[3025] = String.fromCharCode (0xffff);
+data[3026] = String.fromCharCode (0xffff);
+data[3027] = String.fromCharCode (0xffff);
+data[3028] = String.fromCharCode (0xffff);
+data[3029] = String.fromCharCode (0xffff);
+data[3030] = String.fromCharCode (0xffff);
+data[3031] = String.fromCharCode (0xffff);
+data[3032] = String.fromCharCode (0xffff);
+data[3033] = String.fromCharCode (0xffff);
+data[3034] = String.fromCharCode (0xffff);
+data[3035] = String.fromCharCode (0xffff);
+data[3036] = String.fromCharCode (0xffff);
+data[3037] = String.fromCharCode (0xffff);
+data[3038] = String.fromCharCode (0xffff);
+data[3039] = String.fromCharCode (0xffff);
+data[3040] = String.fromCharCode (0xffff);
+data[3041] = String.fromCharCode (0xffff);
+data[3042] = String.fromCharCode (0xffff);
+data[3043] = String.fromCharCode (0xffff);
+data[3044] = String.fromCharCode (0xffff);
+data[3045] = String.fromCharCode (0xffff);
+data[3046] = String.fromCharCode (0xffff);
+data[3047] = String.fromCharCode (0xffff);
+data[3048] = String.fromCharCode (0xffff);
+data[3049] = String.fromCharCode (0xffff);
+data[3050] = String.fromCharCode (0xffff);
+data[3051] = String.fromCharCode (0xffff);
+data[3052] = String.fromCharCode (0xffff);
+data[3053] = String.fromCharCode (0xffff);
+data[3054] = String.fromCharCode (0xffff);
+data[3055] = String.fromCharCode (0xffff);
+data[3056] = String.fromCharCode (0xffff);
+data[3057] = String.fromCharCode (0xffff);
+data[3058] = String.fromCharCode (0xffff);
+data[3059] = String.fromCharCode (0xffff);
+data[3060] = String.fromCharCode (0xffff);
+data[3061] = String.fromCharCode (0xffff);
+data[3062] = String.fromCharCode (0xffff);
+data[3063] = String.fromCharCode (0xffff);
+data[3064] = String.fromCharCode (0xffff);
+data[3065] = String.fromCharCode (0xffff);
+data[3066] = String.fromCharCode (0xffff);
+data[3067] = String.fromCharCode (0xffff);
+data[3068] = String.fromCharCode (0xffff);
+data[3069] = String.fromCharCode (0xffff);
+data[3070] = String.fromCharCode (0xffff);
+data[3071] = String.fromCharCode (0xffff);
+data[3072] = String.fromCharCode (0xffff);
+data[3073] = String.fromCharCode (0xffff);
+data[3074] = String.fromCharCode (0xffff);
+data[3075] = String.fromCharCode (0xffff);
+data[3076] = String.fromCharCode (0xffff);
+data[3077] = String.fromCharCode (0xffff);
+data[3078] = String.fromCharCode (0xffff);
+data[3079] = String.fromCharCode (0xffff);
+data[3080] = String.fromCharCode (0xffff);
+data[3081] = String.fromCharCode (0xffff);
+data[3082] = String.fromCharCode (0xffff);
+data[3083] = String.fromCharCode (0xffff);
+data[3084] = String.fromCharCode (0xffff);
+data[3085] = String.fromCharCode (0xffff);
+data[3086] = String.fromCharCode (0xffff);
+data[3087] = String.fromCharCode (0xffff);
+data[3088] = String.fromCharCode (0xffff);
+data[3089] = String.fromCharCode (0xffff);
+data[3090] = String.fromCharCode (0xffff);
+data[3091] = String.fromCharCode (0xffff);
+data[3092] = String.fromCharCode (0xffff);
+data[3093] = String.fromCharCode (0xffff);
+data[3094] = String.fromCharCode (0xffff);
+data[3095] = String.fromCharCode (0xffff);
+data[3096] = String.fromCharCode (0xffff);
+data[3097] = String.fromCharCode (0xffff);
+data[3098] = String.fromCharCode (0xffff);
+data[3099] = String.fromCharCode (0xffff);
+data[3100] = String.fromCharCode (0xffff);
+data[3101] = String.fromCharCode (0xffff);
+data[3102] = String.fromCharCode (0xffff);
+data[3103] = String.fromCharCode (0xffff);
+data[3104] = String.fromCharCode (0xffff);
+data[3105] = String.fromCharCode (0xffff);
+data[3106] = String.fromCharCode (0xffff);
+data[3107] = String.fromCharCode (0xffff);
+data[3108] = String.fromCharCode (0xffff);
+data[3109] = String.fromCharCode (0xffff);
+data[3110] = String.fromCharCode (0xffff);
+data[3111] = String.fromCharCode (0xffff);
+data[3112] = String.fromCharCode (0xffff);
+data[3113] = String.fromCharCode (0xffff);
+data[3114] = String.fromCharCode (0xffff);
+data[3115] = String.fromCharCode (0xffff);
+data[3116] = String.fromCharCode (0xffff);
+data[3117] = String.fromCharCode (0xffff);
+data[3118] = String.fromCharCode (0xffff);
+data[3119] = String.fromCharCode (0xffff);
+data[3120] = String.fromCharCode (0xffff);
+data[3121] = String.fromCharCode (0xffff);
+data[3122] = String.fromCharCode (0xffff);
+data[3123] = String.fromCharCode (0xffff);
+data[3124] = String.fromCharCode (0xffff);
+data[3125] = String.fromCharCode (0xffff);
+data[3126] = String.fromCharCode (0xffff);
+data[3127] = String.fromCharCode (0xffff);
+data[3128] = String.fromCharCode (0xffff);
+data[3129] = String.fromCharCode (0xffff);
+data[3130] = String.fromCharCode (0xffff);
+data[3131] = String.fromCharCode (0xffff);
+data[3132] = String.fromCharCode (0xffff);
+data[3133] = String.fromCharCode (0xffff);
+data[3134] = String.fromCharCode (0xffff);
+data[3135] = String.fromCharCode (0xffff);
+data[3136] = String.fromCharCode (0xffff);
+data[3137] = String.fromCharCode (0xffff);
+data[3138] = String.fromCharCode (0xffff);
+data[3139] = String.fromCharCode (0xffff);
+data[3140] = String.fromCharCode (0xffff);
+data[3141] = String.fromCharCode (0xffff);
+data[3142] = String.fromCharCode (0xffff);
+data[3143] = String.fromCharCode (0xffff);
+data[3144] = String.fromCharCode (0xffff);
+data[3145] = String.fromCharCode (0xffff);
+data[3146] = String.fromCharCode (0xffff);
+data[3147] = String.fromCharCode (0xffff);
+data[3148] = String.fromCharCode (0xffff);
+data[3149] = String.fromCharCode (0xffff);
+data[3150] = String.fromCharCode (0xffff);
+data[3151] = String.fromCharCode (0xffff);
+data[3152] = String.fromCharCode (0xffff);
+data[3153] = String.fromCharCode (0xffff);
+data[3154] = String.fromCharCode (0xffff);
+data[3155] = String.fromCharCode (0xffff);
+data[3156] = String.fromCharCode (0xffff);
+data[3157] = String.fromCharCode (0xffff);
+data[3158] = String.fromCharCode (0xffff);
+data[3159] = String.fromCharCode (0xffff);
+data[3160] = String.fromCharCode (0xffff);
+data[3161] = String.fromCharCode (0xffff);
+data[3162] = String.fromCharCode (0xffff);
+data[3163] = String.fromCharCode (0xffff);
+data[3164] = String.fromCharCode (0xffff);
+data[3165] = String.fromCharCode (0xffff);
+data[3166] = String.fromCharCode (0xffff);
+data[3167] = String.fromCharCode (0xffff);
+data[3168] = String.fromCharCode (0xffff);
+data[3169] = String.fromCharCode (0xffff);
+data[3170] = String.fromCharCode (0xffff);
+data[3171] = String.fromCharCode (0xffff);
+data[3172] = String.fromCharCode (0xffff);
+data[3173] = String.fromCharCode (0xffff);
+data[3174] = String.fromCharCode (0xffff);
+data[3175] = String.fromCharCode (0xffff);
+data[3176] = String.fromCharCode (0xffff);
+data[3177] = String.fromCharCode (0xffff);
+data[3178] = String.fromCharCode (0xffff);
+data[3179] = String.fromCharCode (0xffff);
+data[3180] = String.fromCharCode (0xffff);
+data[3181] = String.fromCharCode (0xffff);
+data[3182] = String.fromCharCode (0xffff);
+data[3183] = String.fromCharCode (0xffff);
+data[3184] = String.fromCharCode (0xffff);
+data[3185] = String.fromCharCode (0xffff);
+data[3186] = String.fromCharCode (0xffff);
+data[3187] = String.fromCharCode (0xffff);
+data[3188] = String.fromCharCode (0xffff);
+data[3189] = String.fromCharCode (0xffff);
+data[3190] = String.fromCharCode (0xffff);
+data[3191] = String.fromCharCode (0xffff);
+data[3192] = String.fromCharCode (0xffff);
+data[3193] = String.fromCharCode (0xffff);
+data[3194] = String.fromCharCode (0xffff);
+data[3195] = String.fromCharCode (0xffff);
+data[3196] = String.fromCharCode (0xffff);
+data[3197] = String.fromCharCode (0xffff);
+data[3198] = String.fromCharCode (0xffff);
+data[3199] = String.fromCharCode (0xffff);
+data[3200] = String.fromCharCode (0xffff);
+data[3201] = String.fromCharCode (0xffff);
+data[3202] = String.fromCharCode (0xffff);
+data[3203] = String.fromCharCode (0xffff);
+data[3204] = String.fromCharCode (0xffff);
+data[3205] = String.fromCharCode (0xffff);
+data[3206] = String.fromCharCode (0xffff);
+data[3207] = String.fromCharCode (0xffff);
+data[3208] = String.fromCharCode (0xffff);
+data[3209] = String.fromCharCode (0xffff);
+data[3210] = String.fromCharCode (0xffff);
+data[3211] = String.fromCharCode (0xffff);
+data[3212] = String.fromCharCode (0xffff);
+data[3213] = String.fromCharCode (0xffff);
+data[3214] = String.fromCharCode (0xffff);
+data[3215] = String.fromCharCode (0xffff);
+data[3216] = String.fromCharCode (0xffff);
+data[3217] = String.fromCharCode (0xffff);
+data[3218] = String.fromCharCode (0xffff);
+data[3219] = String.fromCharCode (0xffff);
+data[3220] = String.fromCharCode (0xffff);
+data[3221] = String.fromCharCode (0xffff);
+data[3222] = String.fromCharCode (0xffff);
+data[3223] = String.fromCharCode (0xffff);
+data[3224] = String.fromCharCode (0xffff);
+data[3225] = String.fromCharCode (0xffff);
+data[3226] = String.fromCharCode (0xffff);
+data[3227] = String.fromCharCode (0xffff);
+data[3228] = String.fromCharCode (0xffff);
+data[3229] = String.fromCharCode (0xffff);
+data[3230] = String.fromCharCode (0xffff);
+data[3231] = String.fromCharCode (0xffff);
+data[3232] = String.fromCharCode (0xffff);
+data[3233] = String.fromCharCode (0xffff);
+data[3234] = String.fromCharCode (0xffff);
+data[3235] = String.fromCharCode (0xffff);
+data[3236] = String.fromCharCode (0xffff);
+data[3237] = String.fromCharCode (0xffff);
+data[3238] = String.fromCharCode (0xffff);
+data[3239] = String.fromCharCode (0xffff);
+data[3240] = String.fromCharCode (0xffff);
+data[3241] = String.fromCharCode (0xffff);
+data[3242] = String.fromCharCode (0xffff);
+data[3243] = String.fromCharCode (0xffff);
+data[3244] = String.fromCharCode (0xffff);
+data[3245] = String.fromCharCode (0xffff);
+data[3246] = String.fromCharCode (0xffff);
+data[3247] = String.fromCharCode (0xffff);
+data[3248] = String.fromCharCode (0xffff);
+data[3249] = String.fromCharCode (0xffff);
+data[3250] = String.fromCharCode (0xffff);
+data[3251] = String.fromCharCode (0xffff);
+data[3252] = String.fromCharCode (0xffff);
+data[3253] = String.fromCharCode (0xffff);
+data[3254] = String.fromCharCode (0xffff);
+data[3255] = String.fromCharCode (0xffff);
+data[3256] = String.fromCharCode (0xffff);
+data[3257] = String.fromCharCode (0xffff);
+data[3258] = String.fromCharCode (0xffff);
+data[3259] = String.fromCharCode (0xffff);
+data[3260] = String.fromCharCode (0xffff);
+data[3261] = String.fromCharCode (0xffff);
+data[3262] = String.fromCharCode (0xffff);
+data[3263] = String.fromCharCode (0xffff);
+data[3264] = String.fromCharCode (0xffff);
+data[3265] = String.fromCharCode (0xffff);
+data[3266] = String.fromCharCode (0xffff);
+data[3267] = String.fromCharCode (0xffff);
+data[3268] = String.fromCharCode (0xffff);
+data[3269] = String.fromCharCode (0xffff);
+data[3270] = String.fromCharCode (0xffff);
+data[3271] = String.fromCharCode (0xffff);
+data[3272] = String.fromCharCode (0xffff);
+data[3273] = String.fromCharCode (0xffff);
+data[3274] = String.fromCharCode (0xffff);
+data[3275] = String.fromCharCode (0xffff);
+data[3276] = String.fromCharCode (0xffff);
+data[3277] = String.fromCharCode (0xffff);
+data[3278] = String.fromCharCode (0xffff);
+data[3279] = String.fromCharCode (0xffff);
+data[3280] = String.fromCharCode (0xffff);
+data[3281] = String.fromCharCode (0xffff);
+data[3282] = String.fromCharCode (0xffff);
+data[3283] = String.fromCharCode (0xffff);
+data[3284] = String.fromCharCode (0xffff);
+data[3285] = String.fromCharCode (0xffff);
+data[3286] = String.fromCharCode (0xffff);
+data[3287] = String.fromCharCode (0xffff);
+data[3288] = String.fromCharCode (0xffff);
+data[3289] = String.fromCharCode (0xffff);
+data[3290] = String.fromCharCode (0xffff);
+data[3291] = String.fromCharCode (0xffff);
+data[3292] = String.fromCharCode (0xffff);
+data[3293] = String.fromCharCode (0xffff);
+data[3294] = String.fromCharCode (0xffff);
+data[3295] = String.fromCharCode (0xffff);
+data[3296] = String.fromCharCode (0xffff);
+data[3297] = String.fromCharCode (0xffff);
+data[3298] = String.fromCharCode (0xffff);
+data[3299] = String.fromCharCode (0xffff);
+data[3300] = String.fromCharCode (0xffff);
+data[3301] = String.fromCharCode (0xffff);
+data[3302] = String.fromCharCode (0xffff);
+data[3303] = String.fromCharCode (0xffff);
+data[3304] = String.fromCharCode (0xffff);
+data[3305] = String.fromCharCode (0xffff);
+data[3306] = String.fromCharCode (0xffff);
+data[3307] = String.fromCharCode (0xffff);
+data[3308] = String.fromCharCode (0xffff);
+data[3309] = String.fromCharCode (0xffff);
+data[3310] = String.fromCharCode (0xffff);
+data[3311] = String.fromCharCode (0xffff);
+data[3312] = String.fromCharCode (0xffff);
+data[3313] = String.fromCharCode (0xffff);
+data[3314] = String.fromCharCode (0xffff);
+data[3315] = String.fromCharCode (0xffff);
+data[3316] = String.fromCharCode (0xffff);
+data[3317] = String.fromCharCode (0xffff);
+data[3318] = String.fromCharCode (0xffff);
+data[3319] = String.fromCharCode (0xffff);
+data[3320] = String.fromCharCode (0xffff);
+data[3321] = String.fromCharCode (0xffff);
+data[3322] = String.fromCharCode (0xffff);
+data[3323] = String.fromCharCode (0xffff);
+data[3324] = String.fromCharCode (0xffff);
+data[3325] = String.fromCharCode (0xffff);
+data[3326] = String.fromCharCode (0xffff);
+data[3327] = String.fromCharCode (0xffff);
+data[3328] = String.fromCharCode (0xffff);
+data[3329] = String.fromCharCode (0xffff);
+data[3330] = String.fromCharCode (0xffff);
+data[3331] = String.fromCharCode (0xffff);
+data[3332] = String.fromCharCode (0xffff);
+data[3333] = String.fromCharCode (0xffff);
+data[3334] = String.fromCharCode (0xffff);
+data[3335] = String.fromCharCode (0xffff);
+data[3336] = String.fromCharCode (0xffff);
+data[3337] = String.fromCharCode (0xffff);
+data[3338] = String.fromCharCode (0xffff);
+data[3339] = String.fromCharCode (0xffff);
+data[3340] = String.fromCharCode (0xffff);
+data[3341] = String.fromCharCode (0xffff);
+data[3342] = String.fromCharCode (0xffff);
+data[3343] = String.fromCharCode (0xffff);
+data[3344] = String.fromCharCode (0xffff);
+data[3345] = String.fromCharCode (0xffff);
+data[3346] = String.fromCharCode (0xffff);
+data[3347] = String.fromCharCode (0xffff);
+data[3348] = String.fromCharCode (0xffff);
+data[3349] = String.fromCharCode (0xffff);
+data[3350] = String.fromCharCode (0xffff);
+data[3351] = String.fromCharCode (0xffff);
+data[3352] = String.fromCharCode (0xffff);
+data[3353] = String.fromCharCode (0xffff);
+data[3354] = String.fromCharCode (0xffff);
+data[3355] = String.fromCharCode (0xffff);
+data[3356] = String.fromCharCode (0xffff);
+data[3357] = String.fromCharCode (0xffff);
+data[3358] = String.fromCharCode (0xffff);
+data[3359] = String.fromCharCode (0xffff);
+data[3360] = String.fromCharCode (0xffff);
+data[3361] = String.fromCharCode (0xffff);
+data[3362] = String.fromCharCode (0xffff);
+data[3363] = String.fromCharCode (0xffff);
+data[3364] = String.fromCharCode (0xffff);
+data[3365] = String.fromCharCode (0xffff);
+data[3366] = String.fromCharCode (0xffff);
+data[3367] = String.fromCharCode (0xffff);
+data[3368] = String.fromCharCode (0xffff);
+data[3369] = String.fromCharCode (0xffff);
+data[3370] = String.fromCharCode (0xffff);
+data[3371] = String.fromCharCode (0xffff);
+data[3372] = String.fromCharCode (0xffff);
+data[3373] = String.fromCharCode (0xffff);
+data[3374] = String.fromCharCode (0xffff);
+data[3375] = String.fromCharCode (0xffff);
+data[3376] = String.fromCharCode (0xffff);
+data[3377] = String.fromCharCode (0xffff);
+data[3378] = String.fromCharCode (0xffff);
+data[3379] = String.fromCharCode (0xffff);
+data[3380] = String.fromCharCode (0xffff);
+data[3381] = String.fromCharCode (0xffff);
+data[3382] = String.fromCharCode (0xffff);
+data[3383] = String.fromCharCode (0xffff);
+data[3384] = String.fromCharCode (0xffff);
+data[3385] = String.fromCharCode (0xffff);
+data[3386] = String.fromCharCode (0xffff);
+data[3387] = String.fromCharCode (0xffff);
+data[3388] = String.fromCharCode (0xffff);
+data[3389] = String.fromCharCode (0xffff);
+data[3390] = String.fromCharCode (0xffff);
+data[3391] = String.fromCharCode (0xffff);
+data[3392] = String.fromCharCode (0xffff);
+data[3393] = String.fromCharCode (0xffff);
+data[3394] = String.fromCharCode (0xffff);
+data[3395] = String.fromCharCode (0xffff);
+data[3396] = String.fromCharCode (0xffff);
+data[3397] = String.fromCharCode (0xffff);
+data[3398] = String.fromCharCode (0xffff);
+data[3399] = String.fromCharCode (0xffff);
+data[3400] = String.fromCharCode (0xffff);
+data[3401] = String.fromCharCode (0xffff);
+data[3402] = String.fromCharCode (0xffff);
+data[3403] = String.fromCharCode (0xffff);
+data[3404] = String.fromCharCode (0xffff);
+data[3405] = String.fromCharCode (0xffff);
+data[3406] = String.fromCharCode (0xffff);
+data[3407] = String.fromCharCode (0xffff);
+data[3408] = String.fromCharCode (0xffff);
+data[3409] = String.fromCharCode (0xffff);
+data[3410] = String.fromCharCode (0xffff);
+data[3411] = String.fromCharCode (0xffff);
+data[3412] = String.fromCharCode (0xffff);
+data[3413] = String.fromCharCode (0xffff);
+data[3414] = String.fromCharCode (0xffff);
+data[3415] = String.fromCharCode (0xffff);
+data[3416] = String.fromCharCode (0xffff);
+data[3417] = String.fromCharCode (0xffff);
+data[3418] = String.fromCharCode (0xffff);
+data[3419] = String.fromCharCode (0xffff);
+data[3420] = String.fromCharCode (0xffff);
+data[3421] = String.fromCharCode (0xffff);
+data[3422] = String.fromCharCode (0xffff);
+data[3423] = String.fromCharCode (0xffff);
+data[3424] = String.fromCharCode (0xffff);
+data[3425] = String.fromCharCode (0xffff);
+data[3426] = String.fromCharCode (0xffff);
+data[3427] = String.fromCharCode (0xffff);
+data[3428] = String.fromCharCode (0xffff);
+data[3429] = String.fromCharCode (0xffff);
+data[3430] = String.fromCharCode (0xffff);
+data[3431] = String.fromCharCode (0xffff);
+data[3432] = String.fromCharCode (0xffff);
+data[3433] = String.fromCharCode (0xffff);
+data[3434] = String.fromCharCode (0xffff);
+data[3435] = String.fromCharCode (0xffff);
+data[3436] = String.fromCharCode (0xffff);
+data[3437] = String.fromCharCode (0xffff);
+data[3438] = String.fromCharCode (0xffff);
+data[3439] = String.fromCharCode (0xffff);
+data[3440] = String.fromCharCode (0xffff);
+data[3441] = String.fromCharCode (0xffff);
+data[3442] = String.fromCharCode (0xffff);
+data[3443] = String.fromCharCode (0xffff);
+data[3444] = String.fromCharCode (0xffff);
+data[3445] = String.fromCharCode (0xffff);
+data[3446] = String.fromCharCode (0xffff);
+data[3447] = String.fromCharCode (0xffff);
+data[3448] = String.fromCharCode (0xffff);
+data[3449] = String.fromCharCode (0xffff);
+data[3450] = String.fromCharCode (0x000f);
+data[3984] = String.fromCharCode (0xffff);
+data[3985] = String.fromCharCode (0xffff);
+data[3986] = String.fromCharCode (0xffff);
+data[3987] = String.fromCharCode (0xffff);
+data[3988] = String.fromCharCode (0xffff);
+data[3989] = String.fromCharCode (0xffff);
+data[3990] = String.fromCharCode (0xffff);
+data[3991] = String.fromCharCode (0xffff);
+data[3992] = String.fromCharCode (0xffff);
+data[3993] = String.fromCharCode (0xffff);
+data[3994] = String.fromCharCode (0xffff);
+data[3995] = String.fromCharCode (0xffff);
+data[3996] = String.fromCharCode (0xffff);
+data[3997] = String.fromCharCode (0xffff);
+data[3998] = String.fromCharCode (0xffff);
+data[3999] = String.fromCharCode (0xffff);
+data[4000] = String.fromCharCode (0xffff);
+data[4001] = String.fromCharCode (0xffff);
+data[4002] = String.fromCharCode (0x3fff);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x80f8);
+data[4018] = String.fromCharCode (0xfdff);
+data[4019] = String.fromCharCode (0x5f7f);
+data[4020] = String.fromCharCode (0xffdb);
+data[4021] = String.fromCharCode (0xffff);
+data[4022] = String.fromCharCode (0xffff);
+data[4023] = String.fromCharCode (0xffff);
+data[4024] = String.fromCharCode (0xffff);
+data[4025] = String.fromCharCode (0xffff);
+data[4026] = String.fromCharCode (0xffff);
+data[4027] = String.fromCharCode (0x0003);
+data[4029] = String.fromCharCode (0xfff8);
+data[4030] = String.fromCharCode (0xffff);
+data[4031] = String.fromCharCode (0xffff);
+data[4032] = String.fromCharCode (0xffff);
+data[4033] = String.fromCharCode (0xffff);
+data[4034] = String.fromCharCode (0xffff);
+data[4035] = String.fromCharCode (0xffff);
+data[4036] = String.fromCharCode (0xffff);
+data[4037] = String.fromCharCode (0xffff);
+data[4038] = String.fromCharCode (0xffff);
+data[4039] = String.fromCharCode (0xffff);
+data[4040] = String.fromCharCode (0xffff);
+data[4041] = String.fromCharCode (0xffff);
+data[4042] = String.fromCharCode (0xffff);
+data[4043] = String.fromCharCode (0xffff);
+data[4044] = String.fromCharCode (0xffff);
+data[4045] = String.fromCharCode (0xffff);
+data[4046] = String.fromCharCode (0xffff);
+data[4047] = String.fromCharCode (0xffff);
+data[4048] = String.fromCharCode (0xffff);
+data[4049] = String.fromCharCode (0xffff);
+data[4050] = String.fromCharCode (0xffff);
+data[4051] = String.fromCharCode (0x3fff);
+data[4053] = String.fromCharCode (0xffff);
+data[4054] = String.fromCharCode (0xffff);
+data[4055] = String.fromCharCode (0xffff);
+data[4056] = String.fromCharCode (0xffff);
+data[4057] = String.fromCharCode (0xfffc);
+data[4058] = String.fromCharCode (0xffff);
+data[4059] = String.fromCharCode (0xffff);
+data[4060] = String.fromCharCode (0x00ff);
+data[4063] = String.fromCharCode (0x0fff);
+data[4071] = String.fromCharCode (0xffd7);
+data[4072] = String.fromCharCode (0xffff);
+data[4073] = String.fromCharCode (0xffff);
+data[4074] = String.fromCharCode (0xffff);
+data[4075] = String.fromCharCode (0xffff);
+data[4076] = String.fromCharCode (0xffff);
+data[4077] = String.fromCharCode (0xffff);
+data[4078] = String.fromCharCode (0xffff);
+data[4079] = String.fromCharCode (0x1fff);
+data[4082] = String.fromCharCode (0xfffe);
+data[4083] = String.fromCharCode (0x07ff);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4086] = String.fromCharCode (0xffc0);
+data[4087] = String.fromCharCode (0xffff);
+data[4088] = String.fromCharCode (0xffff);
+data[4089] = String.fromCharCode (0xffff);
+data[4090] = String.fromCharCode (0xffff);
+data[4091] = String.fromCharCode (0x7fff);
+data[4092] = String.fromCharCode (0xfcfc);
+data[4093] = String.fromCharCode (0x1cfc);
+data[4100] = String.fromCharCode (0xfffe);
+data[4101] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4108] = String.fromCharCode (0xffff);
+data[4109] = String.fromCharCode (0xff7f);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xffff);
+data[4113] = String.fromCharCode (0xffff);
+data[4114] = String.fromCharCode (0xffff);
+data[4115] = String.fromCharCode (0xffff);
+data[4116] = String.fromCharCode (0xffff);
+data[4117] = String.fromCharCode (0xffff);
+data[4118] = String.fromCharCode (0xffff);
+data[4119] = String.fromCharCode (0xffff);
+data[4120] = String.fromCharCode (0xffff);
+data[4121] = String.fromCharCode (0xffff);
+data[4122] = String.fromCharCode (0xffff);
+data[4123] = String.fromCharCode (0xffff);
+data[4124] = String.fromCharCode (0xffff);
+data[4125] = String.fromCharCode (0xffff);
+data[4126] = String.fromCharCode (0xffff);
+data[4127] = String.fromCharCode (0xfc3f);
+data[4128] = String.fromCharCode (0xffff);
+data[4129] = String.fromCharCode (0x00ff);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4139] = String.fromCharCode (0xf9ff);
+data[4140] = String.fromCharCode (0x0003);
+data[4141] = String.fromCharCode (0x0003);
+data[4142] = String.fromCharCode (0x001f);
+data[4151] = String.fromCharCode (0x0400);
+data[4152] = String.fromCharCode (0xd740);
+data[4153] = String.fromCharCode (0xffff);
+data[4154] = String.fromCharCode (0xfffb);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = String.fromCharCode (0x547f);
+data[4158] = String.fromCharCode (0x00fd);
+});
+c$.white_f = Clazz.defineMethod (c$, "white_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.white = new com.stevesoft.pat.Bits (data);
+data[0] = String.fromCharCode (0x3e00);
+data[1] = String.fromCharCode (0xf000);
+data[2] = String.fromCharCode (0x0001);
+data[512] = String.fromCharCode (0x0fff);
+data[514] = String.fromCharCode (0x0300);
+data[768] = String.fromCharCode (0x0001);
+data[4096] = String.fromCharCode (0x3e00);
+data[4097] = String.fromCharCode (0xf000);
+data[4098] = String.fromCharCode (0x0001);
+});
+c$.punct_f = Clazz.defineMethod (c$, "punct_f",
+function () {
+var data = Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.punct = new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0xf7ee);
+data[3] = String.fromCharCode (0x8c00);
+data[4] = String.fromCharCode (0x0001);
+data[5] = String.fromCharCode (0xb800);
+data[7] = String.fromCharCode (0x2800);
+data[10] = String.fromCharCode (0x2802);
+data[11] = String.fromCharCode (0x8880);
+data[55] = String.fromCharCode (0x4030);
+data[56] = String.fromCharCode (0x0080);
+data[85] = String.fromCharCode (0xfc00);
+data[88] = String.fromCharCode (0x0200);
+data[91] = String.fromCharCode (0x4000);
+data[92] = String.fromCharCode (0x0009);
+data[95] = String.fromCharCode (0x0018);
+data[96] = String.fromCharCode (0x1000);
+data[97] = String.fromCharCode (0x8800);
+data[102] = String.fromCharCode (0x3c00);
+data[109] = String.fromCharCode (0x0010);
+data[150] = '0';
+data[151] = String.fromCharCode (0x0001);
+data[226] = String.fromCharCode (0x8000);
+data[229] = String.fromCharCode (0x0c00);
+data[234] = String.fromCharCode (0x8000);
+data[240] = String.fromCharCode (0xfff0);
+data[241] = String.fromCharCode (0x0007);
+data[243] = String.fromCharCode (0x3c00);
+data[248] = String.fromCharCode (0x0020);
+data[271] = String.fromCharCode (0x0800);
+data[513] = String.fromCharCode (0xffff);
+data[514] = String.fromCharCode (0x00ff);
+data[515] = String.fromCharCode (0xffff);
+data[516] = 'o';
+data[519] = String.fromCharCode (0x6000);
+data[520] = String.fromCharCode (0x6000);
+data[562] = String.fromCharCode (0x0600);
+data[768] = String.fromCharCode (0xff4e);
+data[769] = String.fromCharCode (0xfff3);
+data[771] = String.fromCharCode (0x0001);
+data[783] = String.fromCharCode (0x0800);
+data[4051] = String.fromCharCode (0xc000);
+data[4067] = String.fromCharCode (0xffff);
+data[4068] = String.fromCharCode (0xfe1f);
+data[4069] = String.fromCharCode (0xfff7);
+data[4070] = String.fromCharCode (0x0d0b);
+data[4080] = String.fromCharCode (0xf7ee);
+data[4081] = String.fromCharCode (0x8c00);
+data[4082] = String.fromCharCode (0x0001);
+data[4083] = String.fromCharCode (0xb800);
+data[4085] = String.fromCharCode (0x2800);
+data[4086] = String.fromCharCode (0x003e);
+data[4098] = String.fromCharCode (0xf7ee);
+data[4099] = String.fromCharCode (0x8c00);
+data[4100] = String.fromCharCode (0x0001);
+data[4101] = String.fromCharCode (0xb800);
+data[4103] = String.fromCharCode (0x2800);
+data[4106] = String.fromCharCode (0x2802);
+data[4107] = String.fromCharCode (0x8880);
+data[4151] = String.fromCharCode (0x4030);
+data[4152] = String.fromCharCode (0x0080);
+});
+Clazz.defineStatics (c$,
+"upper", null,
+"lower", null,
+"title", null,
+"currency", null,
+"decimal_digit", null,
+"math", null,
+"letter", null,
+"white", null,
+"punct", null);
diff --git a/bin/com/stevesoft/pat/Boundary.js b/bin/com/stevesoft/pat/Boundary.js
index 58bb19c..9eaff99 100644
--- a/bin/com/stevesoft/pat/Boundary.js
+++ b/bin/com/stevesoft/pat/Boundary.js
@@ -1,52 +1,52 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Boundary", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "Boundary", com.stevesoft.pat.Pattern);
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "\\b" + this.nextString ();
-});
-Clazz.defineMethod (c$, "isAChar",
-function (c) {
-if (c >= 'a' && c <= 'z') {
-return true;
-}if (c >= 'A' && c <= 'Z') {
-return true;
-}if (c >= '0' && c <= '9') {
-return true;
-}if (c == '_') {
-return true;
-}return false;
-}, "~S");
-Clazz.defineMethod (c$, "matchLeft",
-function (pos, pt) {
-if (pos <= 0) {
-return true;
-}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos - 1))) {
-return false;
-}return true;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.defineMethod (c$, "matchRight",
-function (pos, pt) {
-if (pos < 0) {
-return false;
-}if (pos + 1 >= pt.src.length ()) {
-return true;
-}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos + 1))) {
-return false;
-}return true;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-if (this.matchRight (pos - 1, pt) || this.matchLeft (pos, pt)) {
-return this.nextMatch (pos, pt);
-}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (0);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.Boundary ();
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Boundary", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "Boundary", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "\\b" + this.nextString ();
+});
+Clazz.defineMethod (c$, "isAChar",
+function (c) {
+if (c >= 'a' && c <= 'z') {
+return true;
+}if (c >= 'A' && c <= 'Z') {
+return true;
+}if (c >= '0' && c <= '9') {
+return true;
+}if (c == '_') {
+return true;
+}return false;
+}, "~S");
+Clazz.defineMethod (c$, "matchLeft",
+function (pos, pt) {
+if (pos <= 0) {
+return true;
+}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos - 1))) {
+return false;
+}return true;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "matchRight",
+function (pos, pt) {
+if (pos < 0) {
+return false;
+}if (pos + 1 >= pt.src.length ()) {
+return true;
+}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos + 1))) {
+return false;
+}return true;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+if (this.matchRight (pos - 1, pt) || this.matchLeft (pos, pt)) {
+return this.nextMatch (pos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.Boundary ();
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/Bracket.js b/bin/com/stevesoft/pat/Bracket.js
index 26a2303..064ec34 100644
--- a/bin/com/stevesoft/pat/Bracket.js
+++ b/bin/com/stevesoft/pat/Bracket.js
@@ -1,60 +1,60 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.Bracket", ["com.stevesoft.pat.patInt", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.neg = false;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Bracket", com.stevesoft.pat.Or);
-Clazz.makeConstructor (c$,
-function (n) {
-Clazz.superConstructor (this, com.stevesoft.pat.Bracket, []);
-this.neg = n;
-}, "~B");
-Clazz.overrideMethod (c$, "leftForm",
-function () {
-if (this.neg) {
-return "[^";
-} else {
-return "[";
-}});
-Clazz.overrideMethod (c$, "rightForm",
-function () {
-return "]";
-});
-Clazz.overrideMethod (c$, "sepForm",
-function () {
-return "";
-});
-Clazz.defineMethod (c$, "matchInternal",
-function (pos, pt) {
-if (pos >= pt.src.length ()) {
-return -1;
-}var r = Clazz.superCall (this, com.stevesoft.pat.Bracket, "matchInternal", [pos, pt]);
-if ((this.neg && r < 0) || (!this.neg && r >= 0)) {
-return this.nextMatch (pos + 1, pt);
-}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "addOr",
-function (p) {
-this.pv = null;
-this.v.addElement (p);
-p.setParent (null);
-return this;
-}, "com.stevesoft.pat.Pattern");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-var b = new com.stevesoft.pat.Bracket (this.neg);
-b.v = new java.util.Vector ();
-for (var i = 0; i < this.v.size (); i++) {
-b.v.addElement ((this.v.elementAt (i)).clone1 (h));
-}
-return b;
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.Bracket", ["com.stevesoft.pat.patInt", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.neg = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Bracket", com.stevesoft.pat.Or);
+Clazz.makeConstructor (c$,
+function (n) {
+Clazz.superConstructor (this, com.stevesoft.pat.Bracket, []);
+this.neg = n;
+}, "~B");
+Clazz.overrideMethod (c$, "leftForm",
+function () {
+if (this.neg) {
+return "[^";
+} else {
+return "[";
+}});
+Clazz.overrideMethod (c$, "rightForm",
+function () {
+return "]";
+});
+Clazz.overrideMethod (c$, "sepForm",
+function () {
+return "";
+});
+Clazz.defineMethod (c$, "matchInternal",
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}var r = Clazz.superCall (this, com.stevesoft.pat.Bracket, "matchInternal", [pos, pt]);
+if ((this.neg && r < 0) || (!this.neg && r >= 0)) {
+return this.nextMatch (pos + 1, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "addOr",
+function (p) {
+this.pv = null;
+this.v.addElement (p);
+p.setParent (null);
+return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+var b = new com.stevesoft.pat.Bracket (this.neg);
+b.v = new java.util.Vector ();
+for (var i = 0; i < this.v.size (); i++) {
+b.v.addElement ((this.v.elementAt (i)).clone1 (h));
+}
+return b;
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/CaseMgr.js b/bin/com/stevesoft/pat/CaseMgr.js
index e35645b..30fe2ec 100644
--- a/bin/com/stevesoft/pat/CaseMgr.js
+++ b/bin/com/stevesoft/pat/CaseMgr.js
@@ -1,94 +1,94 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (null, "com.stevesoft.pat.CaseMgr", ["java.lang.Character"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "CaseMgr");
-c$.toUpperCaseC = Clazz.defineMethod (c$, "toUpperCaseC",
-function (c) {
-return Character.toUpperCase (c);
-}, "~S");
-c$.toLowerCaseC = Clazz.defineMethod (c$, "toLowerCaseC",
-function (c) {
-return Character.toLowerCase (c);
-}, "~S");
-c$.toUpperCase = Clazz.defineMethod (c$, "toUpperCase",
-function (s) {
-return s.toUpperCase ();
-}, "~S");
-c$.toLowerCase = Clazz.defineMethod (c$, "toLowerCase",
-function (s) {
-return s.toLowerCase ();
-}, "~S");
-c$.toTitleCaseC = Clazz.defineMethod (c$, "toTitleCaseC",
-function (c) {
-return Character.toUpperCase (c);
-}, "~S");
-c$.regionMatchesLike = Clazz.defineMethod (c$, "regionMatchesLike",
-function (s1, ign, i1, s2, i2, i3) {
-var itot = i2 + i3;
-if (itot > s2.length () || i1 + i3 > s1.length ()) {
-return false;
-}if (!ign) {
-for (var i = i2; i < itot; i++) {
-if (s2.charAt (i) != s1.charAt (i1++)) {
-return false;
-}}
-} else {
-for (var i = i2; i < itot; i++) {
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
-return false;
-}}
-}return true;
-}, "com.stevesoft.pat.StringLike,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
-c$.regionMatches = Clazz.defineMethod (c$, "regionMatches",
-function (s1, ign, i1, s2, i2, i3) {
-var itot = i2 + i3;
-if (itot > s2.length () || i1 + i3 > s1.length) {
-return false;
-}if (!ign) {
-for (var i = i2; i < itot; i++) {
-if (s2.charAt (i) != s1.charAt (i1++)) {
-return false;
-}}
-} else {
-for (var i = i2; i < itot; i++) {
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
-return false;
-}}
-}return true;
-}, "~S,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
-c$.regionMatchesLike2 = Clazz.defineMethod (c$, "regionMatchesLike2",
-function (s1, ign, i1, s2, i2, i3) {
-var itot = i2 + i3;
-if (itot > s2.length || i1 + i3 > s1.length ()) {
-return false;
-}if (!ign) {
-for (var i = i2; i < itot; i++) {
-if (s2.charAt (i) != s1.charAt (i1++)) {
-return false;
-}}
-} else {
-for (var i = i2; i < itot; i++) {
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
-return false;
-}}
-}return true;
-}, "com.stevesoft.pat.StringLike,~B,~N,~S,~N,~N");
-c$.regionMatches2 = Clazz.defineMethod (c$, "regionMatches2",
-function (s1, ign, i1, s2, i2, i3) {
-var itot = i2 + i3;
-if (itot > s2.length || i1 + i3 > s1.length) {
-return false;
-}if (!ign) {
-for (var i = i2; i < itot; i++) {
-if (s2.charAt (i) != s1.charAt (i1++)) {
-return false;
-}}
-} else {
-for (var i = i2; i < itot; i++) {
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
-return false;
-}}
-}return true;
-}, "~S,~B,~N,~S,~N,~N");
-Clazz.defineStatics (c$,
-"java_1_0", false);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.CaseMgr", ["java.lang.Character"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "CaseMgr");
+c$.toUpperCaseC = Clazz.defineMethod (c$, "toUpperCaseC",
+function (c) {
+return Character.toUpperCase (c);
+}, "~S");
+c$.toLowerCaseC = Clazz.defineMethod (c$, "toLowerCaseC",
+function (c) {
+return Character.toLowerCase (c);
+}, "~S");
+c$.toUpperCase = Clazz.defineMethod (c$, "toUpperCase",
+function (s) {
+return s.toUpperCase ();
+}, "~S");
+c$.toLowerCase = Clazz.defineMethod (c$, "toLowerCase",
+function (s) {
+return s.toLowerCase ();
+}, "~S");
+c$.toTitleCaseC = Clazz.defineMethod (c$, "toTitleCaseC",
+function (c) {
+return Character.toUpperCase (c);
+}, "~S");
+c$.regionMatchesLike = Clazz.defineMethod (c$, "regionMatchesLike",
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length () || i1 + i3 > s1.length ()) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "com.stevesoft.pat.StringLike,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatches = Clazz.defineMethod (c$, "regionMatches",
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length () || i1 + i3 > s1.length) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "~S,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatchesLike2 = Clazz.defineMethod (c$, "regionMatchesLike2",
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length || i1 + i3 > s1.length ()) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "com.stevesoft.pat.StringLike,~B,~N,~S,~N,~N");
+c$.regionMatches2 = Clazz.defineMethod (c$, "regionMatches2",
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length || i1 + i3 > s1.length) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "~S,~B,~N,~S,~N,~N");
+Clazz.defineStatics (c$,
+"java_1_0", false);
+});
diff --git a/bin/com/stevesoft/pat/ChangeRule.js b/bin/com/stevesoft/pat/ChangeRule.js
index 1a6f683..3edb0ff 100644
--- a/bin/com/stevesoft/pat/ChangeRule.js
+++ b/bin/com/stevesoft/pat/ChangeRule.js
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.ChangeRule", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.NewRule = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "ChangeRule", com.stevesoft.pat.SpecialRule);
-Clazz.makeConstructor (c$,
-function (c) {
-Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
-this.NewRule = c.NewRule;
-}, "com.stevesoft.pat.ChangeRule");
-Clazz.makeConstructor (c$,
-function (nm, rr) {
-Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
-this.name = nm;
-this.NewRule = rr;
-}, "~S,com.stevesoft.pat.Regex");
-Clazz.makeConstructor (c$,
-function (nm, tr) {
-Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
-this.name = nm;
-this.NewRule = tr.rp;
-}, "~S,com.stevesoft.pat.Transformer");
-Clazz.overrideMethod (c$, "clone1",
-function () {
-return new com.stevesoft.pat.ChangeRule (this);
-});
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "${=" + this.name + "}";
-});
-Clazz.overrideMethod (c$, "apply",
-function (sb, rr) {
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.ChangeRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.NewRule = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "ChangeRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$,
+function (c) {
+Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.NewRule = c.NewRule;
+}, "com.stevesoft.pat.ChangeRule");
+Clazz.makeConstructor (c$,
+function (nm, rr) {
+Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.name = nm;
+this.NewRule = rr;
+}, "~S,com.stevesoft.pat.Regex");
+Clazz.makeConstructor (c$,
+function (nm, tr) {
+Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.name = nm;
+this.NewRule = tr.rp;
+}, "~S,com.stevesoft.pat.Transformer");
+Clazz.overrideMethod (c$, "clone1",
+function () {
+return new com.stevesoft.pat.ChangeRule (this);
+});
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "${=" + this.name + "}";
+});
+Clazz.overrideMethod (c$, "apply",
+function (sb, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
diff --git a/bin/com/stevesoft/pat/CodeRule.js b/bin/com/stevesoft/pat/CodeRule.js
index 85a0917..92c00f3 100644
--- a/bin/com/stevesoft/pat/CodeRule.js
+++ b/bin/com/stevesoft/pat/CodeRule.js
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.CodeRule", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.c = 'E';
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "CodeRule", com.stevesoft.pat.SpecialRule);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);
-});
-Clazz.makeConstructor (c$,
-function (c) {
-Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);
-this.c = c;
-}, "~S");
-Clazz.overrideMethod (c$, "apply",
-function (sb, res) {
-sb.setMode (this.c);
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "\\" + this.c;
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.CodeRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = 'E';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "CodeRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);
+});
+Clazz.makeConstructor (c$,
+function (c) {
+Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);
+this.c = c;
+}, "~S");
+Clazz.overrideMethod (c$, "apply",
+function (sb, res) {
+sb.setMode (this.c);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "\\" + this.c;
+});
+});
diff --git a/bin/com/stevesoft/pat/Ctrl.js b/bin/com/stevesoft/pat/Ctrl.js
index 9a42c67..43250ce 100644
--- a/bin/com/stevesoft/pat/Ctrl.js
+++ b/bin/com/stevesoft/pat/Ctrl.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-c$ = Clazz.declareType (com.stevesoft.pat, "Ctrl");
-Clazz.defineStatics (c$,
-"cmap", Clazz.newCharArray (-1, [String.fromCharCode (64), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', String.fromCharCode (91), String.fromCharCode (92), String.fromCharCode (93), String.fromCharCode (94), String.fromCharCode (95), String.fromCharCode (96), 'a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', String.fromCharCode (123), String.fromCharCode (124), String.fromCharCode (125), String.fromCharCode (126), String.fromCharCode (127), String.fromCharCode (0), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (27), String.fromCharCode (27), String.fromCharCode (29), String.fromCharCode (30), String.fromCharCode (31), String.fromCharCode (32), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (59), String.fromCharCode (60), String.fromCharCode (61), String.fromCharCode (62), String.fromCharCode (63), String.fromCharCode (192), String.fromCharCode (193), String.fromCharCode (194), String.fromCharCode (195), String.fromCharCode (196), String.fromCharCode (197), String.fromCharCode (198), String.fromCharCode (199), String.fromCharCode (200), String.fromCharCode (201), String.fromCharCode (202), String.fromCharCode (203), String.fromCharCode (204), String.fromCharCode (205), String.fromCharCode (206), String.fromCharCode (207), String.fromCharCode (208), String.fromCharCode (209), String.fromCharCode (210), String.fromCharCode (211), String.fromCharCode (212), String.fromCharCode (213), String.fromCharCode (214), String.fromCharCode (215), String.fromCharCode (216), String.fromCharCode (217), String.fromCharCode (218), String.fromCharCode (219), String.fromCharCode (220), String.fromCharCode (221), String.fromCharCode (222), String.fromCharCode (223), String.fromCharCode (224), String.fromCharCode (225), String.fromCharCode (226), String.fromCharCode (227), String.fromCharCode (228), String.fromCharCode (229), String.fromCharCode (230), String.fromCharCode (231), String.fromCharCode (232), String.fromCharCode (233), String.fromCharCode (234), String.fromCharCode (235), String.fromCharCode (236), String.fromCharCode (237), String.fromCharCode (238), String.fromCharCode (239), String.fromCharCode (240), String.fromCharCode (241), String.fromCharCode (242), String.fromCharCode (243), String.fromCharCode (244), String.fromCharCode (245), String.fromCharCode (246), String.fromCharCode (247), String.fromCharCode (248), String.fromCharCode (249), String.fromCharCode (250), String.fromCharCode (251), String.fromCharCode (252), String.fromCharCode (253), String.fromCharCode (254), String.fromCharCode (255), String.fromCharCode (128), String.fromCharCode (129), String.fromCharCode (130), String.fromCharCode (131), String.fromCharCode (132), String.fromCharCode (133), String.fromCharCode (134), String.fromCharCode (135), String.fromCharCode (136), String.fromCharCode (137), String.fromCharCode (138), String.fromCharCode (139), String.fromCharCode (140), String.fromCharCode (141), String.fromCharCode (142), String.fromCharCode (143), String.fromCharCode (144), String.fromCharCode (145), String.fromCharCode (146), String.fromCharCode (147), String.fromCharCode (148), String.fromCharCode (149), String.fromCharCode (150), String.fromCharCode (151), String.fromCharCode (152), String.fromCharCode (153), String.fromCharCode (154), String.fromCharCode (155), String.fromCharCode (156), String.fromCharCode (157), String.fromCharCode (158), String.fromCharCode (159), String.fromCharCode (160), String.fromCharCode (161), String.fromCharCode (162), String.fromCharCode (163), String.fromCharCode (164), String.fromCharCode (165), String.fromCharCode (166), String.fromCharCode (167), String.fromCharCode (168), String.fromCharCode (169), String.fromCharCode (170), String.fromCharCode (171), String.fromCharCode (172), String.fromCharCode (173), String.fromCharCode (174), String.fromCharCode (175), String.fromCharCode (176), String.fromCharCode (177), String.fromCharCode (178), String.fromCharCode (179), String.fromCharCode (180), String.fromCharCode (181), String.fromCharCode (182), String.fromCharCode (183), String.fromCharCode (184), String.fromCharCode (185), String.fromCharCode (186), String.fromCharCode (187), String.fromCharCode (188), String.fromCharCode (189), String.fromCharCode (190), String.fromCharCode (191)]));
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.declareType (com.stevesoft.pat, "Ctrl");
+Clazz.defineStatics (c$,
+"cmap", Clazz.newCharArray (-1, [String.fromCharCode (64), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', String.fromCharCode (91), String.fromCharCode (92), String.fromCharCode (93), String.fromCharCode (94), String.fromCharCode (95), String.fromCharCode (96), 'a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', String.fromCharCode (123), String.fromCharCode (124), String.fromCharCode (125), String.fromCharCode (126), String.fromCharCode (127), String.fromCharCode (0), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (27), String.fromCharCode (27), String.fromCharCode (29), String.fromCharCode (30), String.fromCharCode (31), String.fromCharCode (32), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (59), String.fromCharCode (60), String.fromCharCode (61), String.fromCharCode (62), String.fromCharCode (63), String.fromCharCode (192), String.fromCharCode (193), String.fromCharCode (194), String.fromCharCode (195), String.fromCharCode (196), String.fromCharCode (197), String.fromCharCode (198), String.fromCharCode (199), String.fromCharCode (200), String.fromCharCode (201), String.fromCharCode (202), String.fromCharCode (203), String.fromCharCode (204), String.fromCharCode (205), String.fromCharCode (206), String.fromCharCode (207), String.fromCharCode (208), String.fromCharCode (209), String.fromCharCode (210), String.fromCharCode (211), String.fromCharCode (212), String.fromCharCode (213), String.fromCharCode (214), String.fromCharCode (215), String.fromCharCode (216), String.fromCharCode (217), String.fromCharCode (218), String.fromCharCode (219), String.fromCharCode (220), String.fromCharCode (221), String.fromCharCode (222), String.fromCharCode (223), String.fromCharCode (224), String.fromCharCode (225), String.fromCharCode (226), String.fromCharCode (227), String.fromCharCode (228), String.fromCharCode (229), String.fromCharCode (230), String.fromCharCode (231), String.fromCharCode (232), String.fromCharCode (233), String.fromCharCode (234), String.fromCharCode (235), String.fromCharCode (236), String.fromCharCode (237), String.fromCharCode (238), String.fromCharCode (239), String.fromCharCode (240), String.fromCharCode (241), String.fromCharCode (242), String.fromCharCode (243), String.fromCharCode (244), String.fromCharCode (245), String.fromCharCode (246), String.fromCharCode (247), String.fromCharCode (248), String.fromCharCode (249), String.fromCharCode (250), String.fromCharCode (251), String.fromCharCode (252), String.fromCharCode (253), String.fromCharCode (254), String.fromCharCode (255), String.fromCharCode (128), String.fromCharCode (129), String.fromCharCode (130), String.fromCharCode (131), String.fromCharCode (132), String.fromCharCode (133), String.fromCharCode (134), String.fromCharCode (135), String.fromCharCode (136), String.fromCharCode (137), String.fromCharCode (138), String.fromCharCode (139), String.fromCharCode (140), String.fromCharCode (141), String.fromCharCode (142), String.fromCharCode (143), String.fromCharCode (144), String.fromCharCode (145), String.fromCharCode (146), String.fromCharCode (147), String.fromCharCode (148), String.fromCharCode (149), String.fromCharCode (150), String.fromCharCode (151), String.fromCharCode (152), String.fromCharCode (153), String.fromCharCode (154), String.fromCharCode (155), String.fromCharCode (156), String.fromCharCode (157), String.fromCharCode (158), String.fromCharCode (159), String.fromCharCode (160), String.fromCharCode (161), String.fromCharCode (162), String.fromCharCode (163), String.fromCharCode (164), String.fromCharCode (165), String.fromCharCode (166), String.fromCharCode (167), String.fromCharCode (168), String.fromCharCode (169), String.fromCharCode (170), String.fromCharCode (171), String.fromCharCode (172), String.fromCharCode (173), String.fromCharCode (174), String.fromCharCode (175), String.fromCharCode (176), String.fromCharCode (177), String.fromCharCode (178), String.fromCharCode (179), String.fromCharCode (180), String.fromCharCode (181), String.fromCharCode (182), String.fromCharCode (183), String.fromCharCode (184), String.fromCharCode (185), String.fromCharCode (186), String.fromCharCode (187), String.fromCharCode (188), String.fromCharCode (189), String.fromCharCode (190), String.fromCharCode (191)]));
diff --git a/bin/com/stevesoft/pat/Custom.js b/bin/com/stevesoft/pat/Custom.js
index 4e0fa72..44fa656 100644
--- a/bin/com/stevesoft/pat/Custom.js
+++ b/bin/com/stevesoft/pat/Custom.js
@@ -1,41 +1,41 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Custom", ["com.stevesoft.pat.Regex"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.select = null;
-this.v = null;
-this.start = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Custom", com.stevesoft.pat.PatternSub);
-Clazz.makeConstructor (c$,
-function (s) {
-Clazz.superConstructor (this, com.stevesoft.pat.Custom, []);
-this.select = s;
-this.v = com.stevesoft.pat.Regex.validators.get (s);
-}, "~S");
-Clazz.defineMethod (c$, "matchInternal",
-function (pos, pt) {
-this.start = pos;
-return this.sub.matchInternal (pos, pt);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "toString",
-function () {
-var a = this.v.argsave == null ? "" : ":" + this.v.argsave;
-return "(??" + this.select + a + ")" + this.nextString ();
-});
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return this.v.minChars ();
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return this.v.maxChars ();
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-var c = new com.stevesoft.pat.Custom (this.select);
-h.put (c, c);
-h.put (this, c);
-c.sub = this.sub.clone (h);
-return c;
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Custom", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.select = null;
+this.v = null;
+this.start = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Custom", com.stevesoft.pat.PatternSub);
+Clazz.makeConstructor (c$,
+function (s) {
+Clazz.superConstructor (this, com.stevesoft.pat.Custom, []);
+this.select = s;
+this.v = com.stevesoft.pat.Regex.validators.get (s);
+}, "~S");
+Clazz.defineMethod (c$, "matchInternal",
+function (pos, pt) {
+this.start = pos;
+return this.sub.matchInternal (pos, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString",
+function () {
+var a = this.v.argsave == null ? "" : ":" + this.v.argsave;
+return "(??" + this.select + a + ")" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return this.v.minChars ();
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return this.v.maxChars ();
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+var c = new com.stevesoft.pat.Custom (this.select);
+h.put (c, c);
+h.put (this, c);
+c.sub = this.sub.clone (h);
+return c;
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/CustomEndpoint.js b/bin/com/stevesoft/pat/CustomEndpoint.js
index f5cb0ed..800608f 100644
--- a/bin/com/stevesoft/pat/CustomEndpoint.js
+++ b/bin/com/stevesoft/pat/CustomEndpoint.js
@@ -1,27 +1,27 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.CustomEndpoint", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.c = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "CustomEndpoint", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function (cm) {
-Clazz.superConstructor (this, com.stevesoft.pat.CustomEndpoint, []);
-this.c = cm;
-}, "com.stevesoft.pat.Custom");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-var npos = this.c.v.validate (pt.src, this.c.start, pos);
-if (npos >= 0) {
-return this.nextMatch (npos, pt);
-}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "";
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.CustomEndpoint (this.c.clone (h));
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.CustomEndpoint", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "CustomEndpoint", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function (cm) {
+Clazz.superConstructor (this, com.stevesoft.pat.CustomEndpoint, []);
+this.c = cm;
+}, "com.stevesoft.pat.Custom");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+var npos = this.c.v.validate (pt.src, this.c.start, pos);
+if (npos >= 0) {
+return this.nextMatch (npos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "";
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.CustomEndpoint (this.c.clone (h));
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/DirFileRegex.js b/bin/com/stevesoft/pat/DirFileRegex.js
index 0a2470f..b078e11 100644
--- a/bin/com/stevesoft/pat/DirFileRegex.js
+++ b/bin/com/stevesoft/pat/DirFileRegex.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.DirFileRegex", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "DirFileRegex", com.stevesoft.pat.FileRegex);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.DirFileRegex", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "DirFileRegex", com.stevesoft.pat.FileRegex);
+});
diff --git a/bin/com/stevesoft/pat/DotMulti.class b/bin/com/stevesoft/pat/DotMulti.class
index 3ec04e2d2bc419b0f63078f4e3c026dac3f9b55f..25dfe0a71579a0a95e51452699c7f0cd45413f0d 100644
GIT binary patch
delta 29
kcmZ1|(Iv4VfrHU-b0P;TGqW~>_~cA(1tvbR$&0w_0dPMD8vpkj0{Xb1|tWPFw^92
G?s@-
diff --git a/bin/com/stevesoft/pat/DotMulti.js b/bin/com/stevesoft/pat/DotMulti.js
index 3584af1..172397b 100644
--- a/bin/com/stevesoft/pat/DotMulti.js
+++ b/bin/com/stevesoft/pat/DotMulti.js
@@ -1,129 +1,129 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.DotMulti", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.fewestMatches = null;
-this.mostMatches = null;
-this.matchFewest = false;
-this.src = null;
-this.srclength = 0;
-this.dotDoesntMatchCR = true;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "DotMulti", com.stevesoft.pat.PatternSub);
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return this.fewestMatches;
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return this.mostMatches;
-});
-Clazz.makeConstructor (c$,
-function (a, b) {
-Clazz.superConstructor (this, com.stevesoft.pat.DotMulti, []);
-this.fewestMatches = a;
-this.mostMatches = b;
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return ".{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= dot multi)" + this.nextString ();
-});
-Clazz.defineMethod (c$, "submatchInternal",
-function (pos, pt) {
-if (pos < this.srclength) {
-if (this.dotDoesntMatchCR) {
-if (this.src.charAt (pos) != '\n') {
-return 1 + pos;
-}} else {
-return 1 + pos;
-}}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-var m = -1;
-var i = pos;
-this.src = pt.src;
-this.srclength = this.src.length ();
-this.dotDoesntMatchCR = pt.dotDoesntMatchCR;
-if (this.matchFewest) {
-var nMatches = 0;
-while (this.fewestMatches.intValue () > nMatches) {
-i = this.submatchInternal (i, pt);
-if (i < 0) {
-return -1;
-}nMatches++;
-}
-if (i < 0) {
-return -1;
-}var ii = this.nextMatch (i, pt);
-if (ii >= 0) {
-return ii;
-}if (!this.mostMatches.finite ()) {
-while (i >= 0) {
-i = this.submatchInternal (i, pt);
-if (i < 0) {
-return -1;
-}ii = this.nextMatch (i, pt);
-if (ii >= 0) {
-return ii;
-}}
-} else {
-while (i > 0) {
-i = this.submatchInternal (i, pt);
-if (i < 0) {
-return -1;
-}nMatches++;
-if (nMatches > this.mostMatches.intValue ()) {
-return -1;
-}ii = this.nextMatch (i, pt);
-if (ii >= 0) {
-return ii;
-}}
-}return -1;
-}var nMatches = 0;
-while (this.fewestMatches.intValue () > nMatches) {
-i = this.submatchInternal (i, pt);
-if (i >= 0) {
-nMatches++;
-} else {
-return -1;
-}}
-m = i;
-if (this.mostMatches.finite ()) {
-while (nMatches < this.mostMatches.intValue ()) {
-i = this.submatchInternal (i, pt);
-if (i >= 0) {
-m = i;
-nMatches++;
-} else {
-break;
-}}
-} else {
-while (true) {
-i = this.submatchInternal (i, pt);
-if (i >= 0) {
-m = i;
-nMatches++;
-} else {
-break;
-}}
-}while (m >= pos) {
-var r = this.nextMatch (m, pt);
-if (r >= 0) {
-return r;
-}m -= 1;
-nMatches--;
-if (nMatches < this.fewestMatches.intValue ()) {
-return -1;
-}}
-return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-var dm = new com.stevesoft.pat.DotMulti (this.fewestMatches, this.mostMatches);
-dm.matchFewest = this.matchFewest;
-return dm;
-}, "java.util.Hashtable");
-Clazz.defineStatics (c$,
-"step", 1,
-"idcount", 1);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.DotMulti", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fewestMatches = null;
+this.mostMatches = null;
+this.matchFewest = false;
+this.src = null;
+this.srclength = 0;
+this.dotDoesntMatchCR = true;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "DotMulti", com.stevesoft.pat.PatternSub);
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return this.fewestMatches;
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return this.mostMatches;
+});
+Clazz.makeConstructor (c$,
+function (a, b) {
+Clazz.superConstructor (this, com.stevesoft.pat.DotMulti, []);
+this.fewestMatches = a;
+this.mostMatches = b;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return ".{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= dot multi)" + this.nextString ();
+});
+Clazz.defineMethod (c$, "submatchInternal",
+function (pos, pt) {
+if (pos < this.srclength) {
+if (this.dotDoesntMatchCR) {
+if (this.src.charAt (pos) != '\n') {
+return 1 + pos;
+}} else {
+return 1 + pos;
+}}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+var m = -1;
+var i = pos;
+this.src = pt.src;
+this.srclength = this.src.length ();
+this.dotDoesntMatchCR = pt.dotDoesntMatchCR;
+if (this.matchFewest) {
+var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}nMatches++;
+}
+if (i < 0) {
+return -1;
+}var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}if (!this.mostMatches.finite ()) {
+while (i >= 0) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}
+} else {
+while (i > 0) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}nMatches++;
+if (nMatches > this.mostMatches.intValue ()) {
+return -1;
+}ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}
+}return -1;
+}var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+nMatches++;
+} else {
+return -1;
+}}
+m = i;
+if (this.mostMatches.finite ()) {
+while (nMatches < this.mostMatches.intValue ()) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+} else {
+while (true) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+}while (m >= pos) {
+var r = this.nextMatch (m, pt);
+if (r >= 0) {
+return r;
+}m -= 1;
+nMatches--;
+if (nMatches < this.fewestMatches.intValue ()) {
+return -1;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+var dm = new com.stevesoft.pat.DotMulti (this.fewestMatches, this.mostMatches);
+dm.matchFewest = this.matchFewest;
+return dm;
+}, "java.util.Hashtable");
+Clazz.defineStatics (c$,
+"step", 1,
+"idcount", 1);
+});
diff --git a/bin/com/stevesoft/pat/End.js b/bin/com/stevesoft/pat/End.js
index b332682..3df399f 100644
--- a/bin/com/stevesoft/pat/End.js
+++ b/bin/com/stevesoft/pat/End.js
@@ -1,38 +1,38 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.End", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.retIsEnd = false;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "End", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function (b) {
-Clazz.superConstructor (this, com.stevesoft.pat.End, []);
-this.retIsEnd = b;
-}, "~B");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-if (this.retIsEnd && pt.mFlag && pos < pt.src.length ()) {
-if (pt.src.charAt (pos) == '\n') {
-return this.nextMatch (pos, pt);
-}}if (pt.src.length () == pos) {
-return this.nextMatch (pos, pt);
-} else if (pos < pt.src.length ()) {
-pt.src.charAt (pos);
-}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "toString",
-function () {
-if (this.retIsEnd) {
-return "$";
-} else {
-return "\\Z";
-}});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.End (this.retIsEnd);
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.End", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.retIsEnd = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "End", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function (b) {
+Clazz.superConstructor (this, com.stevesoft.pat.End, []);
+this.retIsEnd = b;
+}, "~B");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+if (this.retIsEnd && pt.mFlag && pos < pt.src.length ()) {
+if (pt.src.charAt (pos) == '\n') {
+return this.nextMatch (pos, pt);
+}}if (pt.src.length () == pos) {
+return this.nextMatch (pos, pt);
+} else if (pos < pt.src.length ()) {
+pt.src.charAt (pos);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString",
+function () {
+if (this.retIsEnd) {
+return "$";
+} else {
+return "\\Z";
+}});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.End (this.retIsEnd);
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/FastBracket.js b/bin/com/stevesoft/pat/FastBracket.js
index 0e7d38a..d26c009 100644
--- a/bin/com/stevesoft/pat/FastBracket.js
+++ b/bin/com/stevesoft/pat/FastBracket.js
@@ -1,156 +1,156 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Bracket"], "com.stevesoft.pat.FastBracket", ["com.stevesoft.pat.Range", "$.oneChar", "java.util.BitSet", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.$min = 0;
-this.$max = 0;
-this.bs = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "FastBracket", com.stevesoft.pat.Bracket);
-c$.process = Clazz.defineMethod (c$, "process",
-function (b, ignc) {
-var v = b.v;
-b.pv = null;
-try {
-var nv = v;
-if (ignc) {
-nv = new java.util.Vector ();
-for (var i = 0; i < v.size (); i++) {
-var p = v.elementAt (i);
-nv.addElement (p);
-if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar)) {
-var oc = p;
-nv.addElement ( new com.stevesoft.pat.oneChar (oc.altc));
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
-var ra = p;
-nv.addElement ( new com.stevesoft.pat.Range (ra.altlo, ra.althi));
-}}
-}v = nv;
-for (var i = 0; i < v.size () - 1; i++) {
-for (var j = 0; j < v.size () - 1; j++) {
-var c1 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j));
-var c2 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j + 1));
-if (c2 < c1) {
-var o = v.elementAt (j);
-v.setElementAt (v.elementAt (j + 1), j);
-v.setElementAt (o, j + 1);
-}}
-}
-nv = new java.util.Vector ();
-var p = v.elementAt (0);
-nv.addElement (p);
-for (var i = 1; i < v.size (); i++) {
-if ((com.stevesoft.pat.FastBracket.geth (p)).charCodeAt (0) + 1 >= (com.stevesoft.pat.FastBracket.getl (v.elementAt (i))).charCodeAt (0)) {
-var p2 = v.elementAt (i);
-var lo = com.stevesoft.pat.FastBracket.min (com.stevesoft.pat.FastBracket.getl (p), com.stevesoft.pat.FastBracket.getl (p2));
-var hi = com.stevesoft.pat.FastBracket.max (com.stevesoft.pat.FastBracket.geth (p), com.stevesoft.pat.FastBracket.geth (p2));
-nv.setElementAt (p = com.stevesoft.pat.FastBracket.mkelem (lo, hi), nv.size () - 1);
-} else {
-p = v.elementAt (i);
-nv.addElement (p);
-}}
-b.v = v = nv;
-} catch (e) {
-if (Clazz.exceptionOf (e, com.stevesoft.pat.RegSyntax)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-var negv = com.stevesoft.pat.FastBracket.neg (v);
-if (v.size () == 1) {
-return b;
-}if (negv.size () == 1) {
-b.v = negv;
-b.neg = !b.neg;
-return b;
-}var fb = com.stevesoft.pat.FastBracket.newbrack (v, b.neg);
-if (fb == null) {
-fb = com.stevesoft.pat.FastBracket.newbrack (negv, !b.neg);
-}if (fb != null) {
-fb.parent = b.parent;
-fb.next = b.next;
-return fb;
-}return b;
-}, "com.stevesoft.pat.Bracket,~B");
-c$.newbrack = Clazz.defineMethod (c$, "newbrack",
-function (v, neg) {
-var fb = new com.stevesoft.pat.FastBracket (neg);
-fb.v = v;
-if (v.size () == 0) {
-return null;
-}fb.$min = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
-fb.$max = (com.stevesoft.pat.FastBracket.geth (v.elementAt (v.size () - 1))).charCodeAt (0);
-if (fb.$max - fb.$min <= 256) {
-fb.bs = new java.util.BitSet (fb.$max - fb.$min + 1);
-for (var i = 0; i < v.size (); i++) {
-var o = v.elementAt (i);
-var min0 = (com.stevesoft.pat.FastBracket.getl (o)).charCodeAt (0) - fb.$min;
-var max0 = (com.stevesoft.pat.FastBracket.geth (o)).charCodeAt (0) - fb.$min;
-for (var j = min0; j <= max0; j++) {
-fb.bs.set (j);
-}
-}
-return fb;
-}return null;
-}, "java.util.Vector,~B");
-c$.neg = Clazz.defineMethod (c$, "neg",
-function (v) {
-try {
-var nv = new java.util.Vector ();
-if (v.size () == 0) {
-nv.addElement ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (65535)));
-return nv;
-}var p0 = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
-if (p0 != 0) {
-nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (0), String.fromCharCode (p0 - 1)));
-}for (var i = 0; i < v.size () - 1; i++) {
-var hi = (com.stevesoft.pat.FastBracket.getl (v.elementAt (i + 1))).charCodeAt (0) - 1;
-var lo = (com.stevesoft.pat.FastBracket.geth (v.elementAt (i))).charCodeAt (0) + 1;
-nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (lo), String.fromCharCode (hi)));
-}
-var pN = (com.stevesoft.pat.FastBracket.geth (v.lastElement ())).charCodeAt (0);
-if (pN != 65535) {
-nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (pN + 1), String.fromCharCode (65535)));
-}return nv;
-} catch (rs) {
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
-return null;
-} else {
-throw rs;
-}
-}
-}, "java.util.Vector");
-c$.mkelem = Clazz.defineMethod (c$, "mkelem",
-function (lo, hi) {
-return lo == hi ? ( new com.stevesoft.pat.oneChar (lo)) : ( new com.stevesoft.pat.Range (lo, hi));
-}, "~S,~S");
-c$.min = Clazz.defineMethod (c$, "min",
-function (a, b) {
-return a < b ? a : b;
-}, "~S,~S");
-c$.max = Clazz.defineMethod (c$, "max",
-function (a, b) {
-return a > b ? a : b;
-}, "~S,~S");
-c$.getl = Clazz.defineMethod (c$, "getl",
-function (o) {
-var p = o;
-if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
-return (p).lo;
-}return (p).c;
-}, "~O");
-c$.geth = Clazz.defineMethod (c$, "geth",
-function (o) {
-var p = o;
-if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
-return (p).hi;
-}return (p).c;
-}, "~O");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-if (pos >= pt.src.length () || this.Masked (pos, pt)) {
-return -1;
-}var c = pt.src.charAt (pos);
-return ( new Boolean (this.neg ^ (c.charCodeAt (0) >= this.$min && c.charCodeAt (0) <= this.$max && this.bs.get (c.charCodeAt (0) - this.$min))).valueOf ()) ? this.nextMatch (pos + 1, pt) : -1;
-}, "~N,com.stevesoft.pat.Pthings");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Bracket"], "com.stevesoft.pat.FastBracket", ["com.stevesoft.pat.Range", "$.oneChar", "java.util.BitSet", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.$min = 0;
+this.$max = 0;
+this.bs = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "FastBracket", com.stevesoft.pat.Bracket);
+c$.process = Clazz.defineMethod (c$, "process",
+function (b, ignc) {
+var v = b.v;
+b.pv = null;
+try {
+var nv = v;
+if (ignc) {
+nv = new java.util.Vector ();
+for (var i = 0; i < v.size (); i++) {
+var p = v.elementAt (i);
+nv.addElement (p);
+if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar)) {
+var oc = p;
+nv.addElement ( new com.stevesoft.pat.oneChar (oc.altc));
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
+var ra = p;
+nv.addElement ( new com.stevesoft.pat.Range (ra.altlo, ra.althi));
+}}
+}v = nv;
+for (var i = 0; i < v.size () - 1; i++) {
+for (var j = 0; j < v.size () - 1; j++) {
+var c1 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j));
+var c2 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j + 1));
+if (c2 < c1) {
+var o = v.elementAt (j);
+v.setElementAt (v.elementAt (j + 1), j);
+v.setElementAt (o, j + 1);
+}}
+}
+nv = new java.util.Vector ();
+var p = v.elementAt (0);
+nv.addElement (p);
+for (var i = 1; i < v.size (); i++) {
+if ((com.stevesoft.pat.FastBracket.geth (p)).charCodeAt (0) + 1 >= (com.stevesoft.pat.FastBracket.getl (v.elementAt (i))).charCodeAt (0)) {
+var p2 = v.elementAt (i);
+var lo = com.stevesoft.pat.FastBracket.min (com.stevesoft.pat.FastBracket.getl (p), com.stevesoft.pat.FastBracket.getl (p2));
+var hi = com.stevesoft.pat.FastBracket.max (com.stevesoft.pat.FastBracket.geth (p), com.stevesoft.pat.FastBracket.geth (p2));
+nv.setElementAt (p = com.stevesoft.pat.FastBracket.mkelem (lo, hi), nv.size () - 1);
+} else {
+p = v.elementAt (i);
+nv.addElement (p);
+}}
+b.v = v = nv;
+} catch (e) {
+if (Clazz.exceptionOf (e, com.stevesoft.pat.RegSyntax)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+var negv = com.stevesoft.pat.FastBracket.neg (v);
+if (v.size () == 1) {
+return b;
+}if (negv.size () == 1) {
+b.v = negv;
+b.neg = !b.neg;
+return b;
+}var fb = com.stevesoft.pat.FastBracket.newbrack (v, b.neg);
+if (fb == null) {
+fb = com.stevesoft.pat.FastBracket.newbrack (negv, !b.neg);
+}if (fb != null) {
+fb.parent = b.parent;
+fb.next = b.next;
+return fb;
+}return b;
+}, "com.stevesoft.pat.Bracket,~B");
+c$.newbrack = Clazz.defineMethod (c$, "newbrack",
+function (v, neg) {
+var fb = new com.stevesoft.pat.FastBracket (neg);
+fb.v = v;
+if (v.size () == 0) {
+return null;
+}fb.$min = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
+fb.$max = (com.stevesoft.pat.FastBracket.geth (v.elementAt (v.size () - 1))).charCodeAt (0);
+if (fb.$max - fb.$min <= 256) {
+fb.bs = new java.util.BitSet (fb.$max - fb.$min + 1);
+for (var i = 0; i < v.size (); i++) {
+var o = v.elementAt (i);
+var min0 = (com.stevesoft.pat.FastBracket.getl (o)).charCodeAt (0) - fb.$min;
+var max0 = (com.stevesoft.pat.FastBracket.geth (o)).charCodeAt (0) - fb.$min;
+for (var j = min0; j <= max0; j++) {
+fb.bs.set (j);
+}
+}
+return fb;
+}return null;
+}, "java.util.Vector,~B");
+c$.neg = Clazz.defineMethod (c$, "neg",
+function (v) {
+try {
+var nv = new java.util.Vector ();
+if (v.size () == 0) {
+nv.addElement ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (65535)));
+return nv;
+}var p0 = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
+if (p0 != 0) {
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (0), String.fromCharCode (p0 - 1)));
+}for (var i = 0; i < v.size () - 1; i++) {
+var hi = (com.stevesoft.pat.FastBracket.getl (v.elementAt (i + 1))).charCodeAt (0) - 1;
+var lo = (com.stevesoft.pat.FastBracket.geth (v.elementAt (i))).charCodeAt (0) + 1;
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (lo), String.fromCharCode (hi)));
+}
+var pN = (com.stevesoft.pat.FastBracket.geth (v.lastElement ())).charCodeAt (0);
+if (pN != 65535) {
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (pN + 1), String.fromCharCode (65535)));
+}return nv;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Vector");
+c$.mkelem = Clazz.defineMethod (c$, "mkelem",
+function (lo, hi) {
+return lo == hi ? ( new com.stevesoft.pat.oneChar (lo)) : ( new com.stevesoft.pat.Range (lo, hi));
+}, "~S,~S");
+c$.min = Clazz.defineMethod (c$, "min",
+function (a, b) {
+return a < b ? a : b;
+}, "~S,~S");
+c$.max = Clazz.defineMethod (c$, "max",
+function (a, b) {
+return a > b ? a : b;
+}, "~S,~S");
+c$.getl = Clazz.defineMethod (c$, "getl",
+function (o) {
+var p = o;
+if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
+return (p).lo;
+}return (p).c;
+}, "~O");
+c$.geth = Clazz.defineMethod (c$, "geth",
+function (o) {
+var p = o;
+if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
+return (p).hi;
+}return (p).c;
+}, "~O");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+if (pos >= pt.src.length () || this.Masked (pos, pt)) {
+return -1;
+}var c = pt.src.charAt (pos);
+return ( new Boolean (this.neg ^ (c.charCodeAt (0) >= this.$min && c.charCodeAt (0) <= this.$max && this.bs.get (c.charCodeAt (0) - this.$min))).valueOf ()) ? this.nextMatch (pos + 1, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+});
diff --git a/bin/com/stevesoft/pat/FastMulti.class b/bin/com/stevesoft/pat/FastMulti.class
index 9de4ac64ec56d8d387f652630c201567262a7c37..5baa0147e612e90954c0eaadf0fe59f710f4892e 100644
GIT binary patch
delta 29
lcmbOs{a0#(02kxo&4OIhnV7X1_$IIBQDEYeocw}k0|1An2*v;a
delta 56
zcmew>HA8xX02kxE&4OIhnV8)e1ShZNQIP%5z{J48&cMjX&QQb%BBdD_n1B=`2a_1n
I= 0) {
-return ii;
-}}while (i >= 0 && i <= endstr) {
-i = this.sub.matchInternal (i, pt);
-if (i >= 0) {
-matches.inc ();
-if (this.fewestMatches.lessEq (matches)) {
-var ii = this.nextMatch (i, pt);
-if (ii >= 0) {
-return ii;
-}}if (matches.equals (this.mostMatches)) {
-return -1;
-}}}
-return -1;
-}var nMatches = 0;
-while (this.fewestMatches.intValue () > nMatches) {
-i = this.sub.matchInternal (i, pt);
-if (i >= 0) {
-nMatches++;
-} else {
-return -1;
-}}
-m = i;
-if (this.mostMatches.finite ()) {
-while (nMatches < this.mostMatches.intValue ()) {
-i = this.sub.matchInternal (i, pt);
-if (i >= 0) {
-m = i;
-nMatches++;
-} else {
-break;
-}}
-} else {
-while (true) {
-i = this.sub.matchInternal (i, pt);
-if (i >= 0) {
-m = i;
-nMatches++;
-} else {
-break;
-}}
-}while (m >= pos) {
-var r = this.nextMatch (m, pt);
-if (r >= 0) {
-return r;
-}m -= this.step;
-nMatches--;
-if (nMatches < this.fewestMatches.intValue ()) {
-return -1;
-}}
-return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-try {
-var fm = new com.stevesoft.pat.FastMulti (this.fewestMatches, this.mostMatches, this.sub.clone (h));
-fm.matchFewest = this.matchFewest;
-return fm;
-} catch (rs) {
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
-return null;
-} else {
-throw rs;
-}
-}
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.FastMulti", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fewestMatches = null;
+this.mostMatches = null;
+this.matchFewest = false;
+this.step = -1;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "FastMulti", com.stevesoft.pat.PatternSub);
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return this.sub.countMinChars ().mul (this.fewestMatches);
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return this.sub.countMaxChars ().mul (this.mostMatches);
+});
+Clazz.makeConstructor (c$,
+function (a, b, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.FastMulti, []);
+if (p == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Null length pattern followed by *, +, or other Multi.");
+}this.fewestMatches = a;
+this.mostMatches = b;
+this.sub = p;
+this.step = p.countMinChars ().intValue ();
+this.sub.setParent (null);
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "toString",
+function () {
+return this.sub.toString () + "{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= fast multi)" + this.nextString ();
+});
+Clazz.defineMethod (c$, "matchInternal",
+function (pos, pt) {
+var m = -1;
+var i = pos;
+var endstr = pt.src.length () - this.step;
+var matches = new com.stevesoft.pat.patInt (0);
+if (this.matchFewest) {
+if (this.fewestMatches.lessEq (matches)) {
+var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}while (i >= 0 && i <= endstr) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+matches.inc ();
+if (this.fewestMatches.lessEq (matches)) {
+var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}if (matches.equals (this.mostMatches)) {
+return -1;
+}}}
+return -1;
+}var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+nMatches++;
+} else {
+return -1;
+}}
+m = i;
+if (this.mostMatches.finite ()) {
+while (nMatches < this.mostMatches.intValue ()) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+} else {
+while (true) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+}while (m >= pos) {
+var r = this.nextMatch (m, pt);
+if (r >= 0) {
+return r;
+}m -= this.step;
+nMatches--;
+if (nMatches < this.fewestMatches.intValue ()) {
+return -1;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+try {
+var fm = new com.stevesoft.pat.FastMulti (this.fewestMatches, this.mostMatches, this.sub.clone (h));
+fm.matchFewest = this.matchFewest;
+return fm;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/FileRegex.js b/bin/com/stevesoft/pat/FileRegex.js
index ca23839..8327c7c 100644
--- a/bin/com/stevesoft/pat/FileRegex.js
+++ b/bin/com/stevesoft/pat/FileRegex.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.FileRegex", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "FileRegex", com.stevesoft.pat.Regex);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.FileRegex", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "FileRegex", com.stevesoft.pat.Regex);
+});
diff --git a/bin/com/stevesoft/pat/Group.js b/bin/com/stevesoft/pat/Group.js
index a9ebd1b..89fdd10 100644
--- a/bin/com/stevesoft/pat/Group.js
+++ b/bin/com/stevesoft/pat/Group.js
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Group", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.op = '\0';
-this.cl = '\0';
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Group", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function (opi, cli) {
-Clazz.superConstructor (this, com.stevesoft.pat.Group, []);
-this.op = opi;
-this.cl = cli;
-}, "~S,~S");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-var i;
-var count = 1;
-if (pos < pt.src.length ()) {
-if (!this.Masked (pos, pt) && pt.src.charAt (pos) != this.op) {
-return -1;
-}}for (i = pos + 1; i < pt.src.length (); i++) {
-var c = pt.src.charAt (i);
-var b = !this.Masked (i, pt);
-if (b && c == '\\') {
-i++;
-} else {
-if (b && c == this.cl) {
-count--;
-}if (count == 0) {
-return this.nextMatch (i + 1, pt);
-}if (b && c == this.op) {
-count++;
-}}}
-return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "(?@" + this.op + this.cl + ")" + this.nextString ();
-});
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (2);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.Group (this.op, this.cl);
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Group", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.op = '\0';
+this.cl = '\0';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Group", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function (opi, cli) {
+Clazz.superConstructor (this, com.stevesoft.pat.Group, []);
+this.op = opi;
+this.cl = cli;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+var i;
+var count = 1;
+if (pos < pt.src.length ()) {
+if (!this.Masked (pos, pt) && pt.src.charAt (pos) != this.op) {
+return -1;
+}}for (i = pos + 1; i < pt.src.length (); i++) {
+var c = pt.src.charAt (i);
+var b = !this.Masked (i, pt);
+if (b && c == '\\') {
+i++;
+} else {
+if (b && c == this.cl) {
+count--;
+}if (count == 0) {
+return this.nextMatch (i + 1, pt);
+}if (b && c == this.op) {
+count++;
+}}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "(?@" + this.op + this.cl + ")" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (2);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.Group (this.op, this.cl);
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/LeftRule.js b/bin/com/stevesoft/pat/LeftRule.js
index f70f50c..df5c04a 100644
--- a/bin/com/stevesoft/pat/LeftRule.js
+++ b/bin/com/stevesoft/pat/LeftRule.js
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.LeftRule", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "LeftRule", com.stevesoft.pat.ReplaceRule);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.LeftRule, []);
-});
-Clazz.overrideMethod (c$, "apply",
-function (sb, res) {
-sb.append (res.left ());
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "$`";
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.LeftRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "LeftRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.LeftRule, []);
+});
+Clazz.overrideMethod (c$, "apply",
+function (sb, res) {
+sb.append (res.left ());
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "$`";
+});
+});
diff --git a/bin/com/stevesoft/pat/MessageManager.js b/bin/com/stevesoft/pat/MessageManager.js
index 801e5de..23502c3 100644
--- a/bin/com/stevesoft/pat/MessageManager.js
+++ b/bin/com/stevesoft/pat/MessageManager.js
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-c$ = Clazz.declareType (com.stevesoft.pat, "MessageManager");
-c$.getString = Clazz.defineMethod (c$, "getString",
-function (string) {
-return string;
-}, "~S");
-c$.formatMessage = Clazz.defineMethod (c$, "formatMessage",
-function (s, fields) {
-for (var i = 0; i < fields.length; i++) s += " " + fields[i];
-
-return s;
-}, "~S,~A");
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.declareType (com.stevesoft.pat, "MessageManager");
+c$.getString = Clazz.defineMethod (c$, "getString",
+function (string) {
+return string;
+}, "~S");
+c$.formatMessage = Clazz.defineMethod (c$, "formatMessage",
+function (s, fields) {
+for (var i = 0; i < fields.length; i++) s += " " + fields[i];
+
+return s;
+}, "~S,~A");
diff --git a/bin/com/stevesoft/pat/Multi.js b/bin/com/stevesoft/pat/Multi.js
index e98b4ff..e759c95 100644
--- a/bin/com/stevesoft/pat/Multi.js
+++ b/bin/com/stevesoft/pat/Multi.js
@@ -1,62 +1,62 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi", ["com.stevesoft.pat.Multi_stage2"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.a = null;
-this.b = null;
-this.p = null;
-this.st2 = null;
-this.matchFewest = false;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Multi", com.stevesoft.pat.PatternSub);
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return this.a.mul (this.p.countMinChars ());
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return this.b.mul (this.p.countMaxChars ());
-});
-Clazz.makeConstructor (c$,
-function (a, b, p) {
-Clazz.superConstructor (this, com.stevesoft.pat.Multi, []);
-this.a = a;
-this.b = b;
-this.p = p;
-this.st2 = new com.stevesoft.pat.Multi_stage2 (a, b, p);
-this.st2.parent = this;
-this.sub = this.st2.sub;
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
-Clazz.overrideMethod (c$, "toString",
-function () {
-this.st2.matchFewest = this.matchFewest;
-return this.st2.toString ();
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-try {
-this.st2 = new com.stevesoft.pat.Multi_stage2 (this.a, this.b, this.p);
-} catch (r__) {
-if (Clazz.exceptionOf (r__, com.stevesoft.pat.RegSyntax)) {
-} else {
-throw r__;
-}
-}
-this.st2.matchFewest = this.matchFewest;
-this.st2.parent = this;
-return this.st2.matchInternal (pos, pt);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-try {
-var m = new com.stevesoft.pat.Multi (this.a, this.b, (this.p).clone (h));
-m.matchFewest = this.matchFewest;
-return m;
-} catch (rs) {
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
-return null;
-} else {
-throw rs;
-}
-}
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi", ["com.stevesoft.pat.Multi_stage2"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.a = null;
+this.b = null;
+this.p = null;
+this.st2 = null;
+this.matchFewest = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Multi", com.stevesoft.pat.PatternSub);
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return this.a.mul (this.p.countMinChars ());
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return this.b.mul (this.p.countMaxChars ());
+});
+Clazz.makeConstructor (c$,
+function (a, b, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.Multi, []);
+this.a = a;
+this.b = b;
+this.p = p;
+this.st2 = new com.stevesoft.pat.Multi_stage2 (a, b, p);
+this.st2.parent = this;
+this.sub = this.st2.sub;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.overrideMethod (c$, "toString",
+function () {
+this.st2.matchFewest = this.matchFewest;
+return this.st2.toString ();
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+try {
+this.st2 = new com.stevesoft.pat.Multi_stage2 (this.a, this.b, this.p);
+} catch (r__) {
+if (Clazz.exceptionOf (r__, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw r__;
+}
+}
+this.st2.matchFewest = this.matchFewest;
+this.st2.parent = this;
+return this.st2.matchInternal (pos, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+try {
+var m = new com.stevesoft.pat.Multi (this.a, this.b, (this.p).clone (h));
+m.matchFewest = this.matchFewest;
+return m;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/MultiMin.js b/bin/com/stevesoft/pat/MultiMin.js
index f536031..e749758 100644
--- a/bin/com/stevesoft/pat/MultiMin.js
+++ b/bin/com/stevesoft/pat/MultiMin.js
@@ -1,9 +1,9 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Multi"], "com.stevesoft.pat.MultiMin", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "MultiMin", com.stevesoft.pat.Multi);
-Clazz.makeConstructor (c$,
-function (i1, i2, p) {
-Clazz.superConstructor (this, com.stevesoft.pat.MultiMin, [i1, i2, p]);
-this.matchFewest = true;
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Multi"], "com.stevesoft.pat.MultiMin", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "MultiMin", com.stevesoft.pat.Multi);
+Clazz.makeConstructor (c$,
+function (i1, i2, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.MultiMin, [i1, i2, p]);
+this.matchFewest = true;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+});
diff --git a/bin/com/stevesoft/pat/Multi_stage2.js b/bin/com/stevesoft/pat/Multi_stage2.js
index 1d291ab..6d4f8fc 100644
--- a/bin/com/stevesoft/pat/Multi_stage2.js
+++ b/bin/com/stevesoft/pat/Multi_stage2.js
@@ -1,95 +1,95 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi_stage2", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.nextRet = null;
-this.count = null;
-this.matchMin = null;
-this.matchMax = null;
-this.matchFewest = false;
-this.pos_old = -1;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Multi_stage2", com.stevesoft.pat.PatternSub);
-Clazz.defineMethod (c$, "toString",
-function () {
-var ret = "";
-ret += this.sub.toString ();
-ret += "{" + this.matchMin + "," + this.matchMax + "}";
-if (this.matchFewest) {
-ret += "?";
-}ret += this.parent.nextString ();
-return ret;
-});
-Clazz.makeConstructor (c$,
-function (a, b, p) {
-Clazz.superConstructor (this, com.stevesoft.pat.Multi_stage2, []);
-if (p == null) {
-com.stevesoft.pat.RegSyntaxError.endItAll ("Multiple match of Null pattern requested.");
-}this.sub = p;
-this.nextRet = this;
-this.sub.setParent (this);
-this.matchMin = a;
-this.matchMax = b;
-this.count = new com.stevesoft.pat.patInt (0);
-if (!a.lessEq (b)) {
-com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + ">" + b);
-}var i = new com.stevesoft.pat.patInt (-1);
-if (a.lessEq (i)) {
-com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + "< 0");
-}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
-Clazz.defineMethod (c$, "getNext",
-function () {
-return this.nextRet;
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-this.sub.setParent (this);
-var canUse = -1;
-if (this.pos_old >= 0 && pos == this.pos_old) {
-return -1;
-}this.pos_old = pos;
-if (this.matchMin.lessEq (this.count)) {
-canUse = pos;
-}if (!this.count.lessEq (this.matchMax) || pos > pt.src.length ()) {
-return -1;
-}if ((this.matchFewest || this.count.equals (this.matchMax)) && canUse >= 0) {
-var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
-if (n == null) {
-return canUse;
-}var ret = this.testMatch (n, pos, pt);
-if (ret >= 0) {
-return ret;
-} else {
-canUse = -1;
-}}this.count.inc ();
-try {
-if (this.count.lessEq (this.matchMax)) {
-var r = this.testMatch (this.sub, pos, pt);
-if (r >= 0) {
-return r;
-}}} finally {
-this.count.dec ();
-}
-if (!this.matchFewest && canUse >= 0) {
-var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
-if (n == null) {
-return canUse;
-}var ret = this.testMatch (n, pos, pt);
-return ret;
-} else {
-return canUse;
-}}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-try {
-var m = new com.stevesoft.pat.Multi_stage2 (this.matchMin, this.matchMax, this.sub.clone (h));
-m.matchFewest = this.matchFewest;
-return m;
-} catch (rs) {
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
-return null;
-} else {
-throw rs;
-}
-}
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi_stage2", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.nextRet = null;
+this.count = null;
+this.matchMin = null;
+this.matchMax = null;
+this.matchFewest = false;
+this.pos_old = -1;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Multi_stage2", com.stevesoft.pat.PatternSub);
+Clazz.defineMethod (c$, "toString",
+function () {
+var ret = "";
+ret += this.sub.toString ();
+ret += "{" + this.matchMin + "," + this.matchMax + "}";
+if (this.matchFewest) {
+ret += "?";
+}ret += this.parent.nextString ();
+return ret;
+});
+Clazz.makeConstructor (c$,
+function (a, b, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.Multi_stage2, []);
+if (p == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Multiple match of Null pattern requested.");
+}this.sub = p;
+this.nextRet = this;
+this.sub.setParent (this);
+this.matchMin = a;
+this.matchMax = b;
+this.count = new com.stevesoft.pat.patInt (0);
+if (!a.lessEq (b)) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + ">" + b);
+}var i = new com.stevesoft.pat.patInt (-1);
+if (a.lessEq (i)) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + "< 0");
+}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "getNext",
+function () {
+return this.nextRet;
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+this.sub.setParent (this);
+var canUse = -1;
+if (this.pos_old >= 0 && pos == this.pos_old) {
+return -1;
+}this.pos_old = pos;
+if (this.matchMin.lessEq (this.count)) {
+canUse = pos;
+}if (!this.count.lessEq (this.matchMax) || pos > pt.src.length ()) {
+return -1;
+}if ((this.matchFewest || this.count.equals (this.matchMax)) && canUse >= 0) {
+var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
+if (n == null) {
+return canUse;
+}var ret = this.testMatch (n, pos, pt);
+if (ret >= 0) {
+return ret;
+} else {
+canUse = -1;
+}}this.count.inc ();
+try {
+if (this.count.lessEq (this.matchMax)) {
+var r = this.testMatch (this.sub, pos, pt);
+if (r >= 0) {
+return r;
+}}} finally {
+this.count.dec ();
+}
+if (!this.matchFewest && canUse >= 0) {
+var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
+if (n == null) {
+return canUse;
+}var ret = this.testMatch (n, pos, pt);
+return ret;
+} else {
+return canUse;
+}}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+try {
+var m = new com.stevesoft.pat.Multi_stage2 (this.matchMin, this.matchMax, this.sub.clone (h));
+m.matchFewest = this.matchFewest;
+return m;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/NoPattern.js b/bin/com/stevesoft/pat/NoPattern.js
index ec7438b..394e032 100644
--- a/bin/com/stevesoft/pat/NoPattern.js
+++ b/bin/com/stevesoft/pat/NoPattern.js
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NoPattern", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "NoPattern", com.stevesoft.pat.Pattern);
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "(?e=#)[^#d#D]";
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (i, p) {
-return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.NoPattern ();
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NoPattern", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NoPattern", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "(?e=#)[^#d#D]";
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (i, p) {
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.NoPattern ();
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/NonDirFileRegex.js b/bin/com/stevesoft/pat/NonDirFileRegex.js
index 59811e9..eb3a57d 100644
--- a/bin/com/stevesoft/pat/NonDirFileRegex.js
+++ b/bin/com/stevesoft/pat/NonDirFileRegex.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.NonDirFileRegex", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "NonDirFileRegex", com.stevesoft.pat.FileRegex);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.NonDirFileRegex", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NonDirFileRegex", com.stevesoft.pat.FileRegex);
+});
diff --git a/bin/com/stevesoft/pat/NotImplementedError.js b/bin/com/stevesoft/pat/NotImplementedError.js
index 45dd68f..4c44ef5 100644
--- a/bin/com/stevesoft/pat/NotImplementedError.js
+++ b/bin/com/stevesoft/pat/NotImplementedError.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["java.lang.Error"], "com.stevesoft.pat.NotImplementedError", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "NotImplementedError", Error);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.lang.Error"], "com.stevesoft.pat.NotImplementedError", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NotImplementedError", Error);
+});
diff --git a/bin/com/stevesoft/pat/NullPattern.js b/bin/com/stevesoft/pat/NullPattern.js
index 2198789..a8eda32 100644
--- a/bin/com/stevesoft/pat/NullPattern.js
+++ b/bin/com/stevesoft/pat/NullPattern.js
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NullPattern", ["com.stevesoft.pat.patInt"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "NullPattern", com.stevesoft.pat.Pattern);
-Clazz.overrideMethod (c$, "toString",
-function () {
-return this.nextString ();
-});
-Clazz.overrideMethod (c$, "matchInternal",
-function (p, pt) {
-return this.nextMatch (p, pt);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (0);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.NullPattern ();
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NullPattern", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NullPattern", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString",
+function () {
+return this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal",
+function (p, pt) {
+return this.nextMatch (p, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.NullPattern ();
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/NullRule.js b/bin/com/stevesoft/pat/NullRule.js
index f6a1485..f781239 100644
--- a/bin/com/stevesoft/pat/NullRule.js
+++ b/bin/com/stevesoft/pat/NullRule.js
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.NullRule", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "NullRule", com.stevesoft.pat.ReplaceRule);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.NullRule, []);
-});
-Clazz.overrideMethod (c$, "apply",
-function (sb, res) {
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "";
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.NullRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NullRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.NullRule, []);
+});
+Clazz.overrideMethod (c$, "apply",
+function (sb, res) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "";
+});
+});
diff --git a/bin/com/stevesoft/pat/Or.js b/bin/com/stevesoft/pat/Or.js
index 1ca2671..9255825 100644
--- a/bin/com/stevesoft/pat/Or.js
+++ b/bin/com/stevesoft/pat/Or.js
@@ -1,92 +1,92 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Or", ["com.stevesoft.pat.patInt", "java.lang.StringBuffer", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.v = null;
-this.pv = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Or", com.stevesoft.pat.Pattern);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.Or, []);
-this.v = new java.util.Vector ();
-});
-Clazz.defineMethod (c$, "leftForm",
-function () {
-return "(?:";
-});
-Clazz.defineMethod (c$, "rightForm",
-function () {
-return ")";
-});
-Clazz.defineMethod (c$, "sepForm",
-function () {
-return "|";
-});
-Clazz.defineMethod (c$, "addOr",
-function (p) {
-this.pv = null;
-this.v.addElement (p);
-p.setParent (this);
-return this;
-}, "com.stevesoft.pat.Pattern");
-Clazz.defineMethod (c$, "toString",
-function () {
-var i;
-var sb = new StringBuffer ();
-sb.append (this.leftForm ());
-if (this.v.size () > 0) {
-sb.append ((this.v.elementAt (0)).toString ());
-}for (i = 1; i < this.v.size (); i++) {
-sb.append (this.sepForm ());
-sb.append ((this.v.elementAt (i)).toString ());
-}
-sb.append (this.rightForm ());
-sb.append (this.nextString ());
-return sb.toString ();
-});
-Clazz.defineMethod (c$, "matchInternal",
-function (pos, pt) {
-if (this.pv == null) {
-this.pv = new Array (this.v.size ());
-this.v.copyInto (this.pv);
-}for (var i = 0; i < this.v.size (); i++) {
-var p = this.pv[i];
-var r = p.matchInternal (pos, pt);
-if (r >= 0) {
-return r;
-}}
-return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "minChars",
-function () {
-if (this.v.size () == 0) {
-return new com.stevesoft.pat.patInt (0);
-}var m = (this.v.elementAt (0)).countMinChars ();
-for (var i = 1; i < this.v.size (); i++) {
-var p = this.v.elementAt (i);
-m.mineq (p.countMinChars ());
-}
-return m;
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-if (this.v.size () == 0) {
-return new com.stevesoft.pat.patInt (0);
-}var m = (this.v.elementAt (0)).countMaxChars ();
-for (var i = 1; i < this.v.size (); i++) {
-var p = this.v.elementAt (i);
-m.maxeq (p.countMaxChars ());
-}
-return m;
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-var o = new com.stevesoft.pat.Or ();
-h.put (this, o);
-h.put (o, o);
-for (var i = 0; i < this.v.size (); i++) {
-o.v.addElement ((this.v.elementAt (i)).clone (h));
-}
-return o;
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Or", ["com.stevesoft.pat.patInt", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.v = null;
+this.pv = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Or", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.Or, []);
+this.v = new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "leftForm",
+function () {
+return "(?:";
+});
+Clazz.defineMethod (c$, "rightForm",
+function () {
+return ")";
+});
+Clazz.defineMethod (c$, "sepForm",
+function () {
+return "|";
+});
+Clazz.defineMethod (c$, "addOr",
+function (p) {
+this.pv = null;
+this.v.addElement (p);
+p.setParent (this);
+return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "toString",
+function () {
+var i;
+var sb = new StringBuffer ();
+sb.append (this.leftForm ());
+if (this.v.size () > 0) {
+sb.append ((this.v.elementAt (0)).toString ());
+}for (i = 1; i < this.v.size (); i++) {
+sb.append (this.sepForm ());
+sb.append ((this.v.elementAt (i)).toString ());
+}
+sb.append (this.rightForm ());
+sb.append (this.nextString ());
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "matchInternal",
+function (pos, pt) {
+if (this.pv == null) {
+this.pv = new Array (this.v.size ());
+this.v.copyInto (this.pv);
+}for (var i = 0; i < this.v.size (); i++) {
+var p = this.pv[i];
+var r = p.matchInternal (pos, pt);
+if (r >= 0) {
+return r;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars",
+function () {
+if (this.v.size () == 0) {
+return new com.stevesoft.pat.patInt (0);
+}var m = (this.v.elementAt (0)).countMinChars ();
+for (var i = 1; i < this.v.size (); i++) {
+var p = this.v.elementAt (i);
+m.mineq (p.countMinChars ());
+}
+return m;
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+if (this.v.size () == 0) {
+return new com.stevesoft.pat.patInt (0);
+}var m = (this.v.elementAt (0)).countMaxChars ();
+for (var i = 1; i < this.v.size (); i++) {
+var p = this.v.elementAt (i);
+m.maxeq (p.countMaxChars ());
+}
+return m;
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+var o = new com.stevesoft.pat.Or ();
+h.put (this, o);
+h.put (o, o);
+for (var i = 0; i < this.v.size (); i++) {
+o.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return o;
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/OrMark.js b/bin/com/stevesoft/pat/OrMark.js
index bf47fca..7590a74 100644
--- a/bin/com/stevesoft/pat/OrMark.js
+++ b/bin/com/stevesoft/pat/OrMark.js
@@ -1,54 +1,54 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Or", "$.SubMark"], "com.stevesoft.pat.OrMark", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.sm = null;
-this.id = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "OrMark", com.stevesoft.pat.Or);
-Clazz.prepareFields (c$, function () {
-this.sm = new com.stevesoft.pat.SubMark ();
-});
-Clazz.makeConstructor (c$,
-function (i) {
-Clazz.superConstructor (this, com.stevesoft.pat.OrMark, []);
-this.sm.om = this;
-this.id = i;
-}, "~N");
-Clazz.overrideMethod (c$, "leftForm",
-function () {
-return "(";
-});
-Clazz.defineMethod (c$, "getNext",
-function () {
-return this.sm;
-});
-Clazz.defineMethod (c$, "matchInternal",
-function (pos, pt) {
-this.sm.next = Clazz.superCall (this, com.stevesoft.pat.OrMark, "getNext", []);
-if (pt.marks == null) {
-var n2 = 2 * pt.nMarks + 2;
-pt.marks = Clazz.newIntArray (n2, 0);
-for (var i = 0; i < n2; i++) {
-pt.marks[i] = -1;
-}
-}pt.marks[this.id] = pos;
-var ret = Clazz.superCall (this, com.stevesoft.pat.OrMark, "matchInternal", [pos, pt]);
-if (ret < 0) {
-pt.marks[this.id] = -1;
-} else if (pt.marks[this.id] > pt.marks[this.id + pt.nMarks]) {
-var swap = pt.marks[this.id];
-pt.marks[this.id] = pt.marks[this.id + pt.nMarks] + 1;
-pt.marks[this.id + pt.nMarks] = swap + 1;
-}return ret;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-var om = new com.stevesoft.pat.OrMark (this.id);
-h.put (om, om);
-h.put (this, om);
-for (var i = 0; i < this.v.size (); i++) {
-om.v.addElement ((this.v.elementAt (i)).clone (h));
-}
-return om;
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Or", "$.SubMark"], "com.stevesoft.pat.OrMark", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sm = null;
+this.id = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "OrMark", com.stevesoft.pat.Or);
+Clazz.prepareFields (c$, function () {
+this.sm = new com.stevesoft.pat.SubMark ();
+});
+Clazz.makeConstructor (c$,
+function (i) {
+Clazz.superConstructor (this, com.stevesoft.pat.OrMark, []);
+this.sm.om = this;
+this.id = i;
+}, "~N");
+Clazz.overrideMethod (c$, "leftForm",
+function () {
+return "(";
+});
+Clazz.defineMethod (c$, "getNext",
+function () {
+return this.sm;
+});
+Clazz.defineMethod (c$, "matchInternal",
+function (pos, pt) {
+this.sm.next = Clazz.superCall (this, com.stevesoft.pat.OrMark, "getNext", []);
+if (pt.marks == null) {
+var n2 = 2 * pt.nMarks + 2;
+pt.marks = Clazz.newIntArray (n2, 0);
+for (var i = 0; i < n2; i++) {
+pt.marks[i] = -1;
+}
+}pt.marks[this.id] = pos;
+var ret = Clazz.superCall (this, com.stevesoft.pat.OrMark, "matchInternal", [pos, pt]);
+if (ret < 0) {
+pt.marks[this.id] = -1;
+} else if (pt.marks[this.id] > pt.marks[this.id + pt.nMarks]) {
+var swap = pt.marks[this.id];
+pt.marks[this.id] = pt.marks[this.id + pt.nMarks] + 1;
+pt.marks[this.id + pt.nMarks] = swap + 1;
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+var om = new com.stevesoft.pat.OrMark (this.id);
+h.put (om, om);
+h.put (this, om);
+for (var i = 0; i < this.v.size (); i++) {
+om.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return om;
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/PartialBuffer.js b/bin/com/stevesoft/pat/PartialBuffer.js
index 8490ff2..02fc0e3 100644
--- a/bin/com/stevesoft/pat/PartialBuffer.js
+++ b/bin/com/stevesoft/pat/PartialBuffer.js
@@ -1,50 +1,50 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.PartialBuffer", ["java.lang.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.off = 0;
-this.allowOverRun = true;
-this.overRun = false;
-this.sb = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "PartialBuffer", null, com.stevesoft.pat.StringLike);
-Clazz.makeConstructor (c$,
-function (sb) {
-this.sb = sb;
-}, "StringBuffer");
-Clazz.overrideMethod (c$, "charAt",
-function (n) {
-n += this.off;
-if (n == this.sb.length ()) {
-this.overRun = true;
-return String.fromCharCode (0);
-}return this.sb.charAt (n);
-}, "~N");
-Clazz.overrideMethod (c$, "length",
-function () {
-return this.allowOverRun ? this.sb.length () + 1 : this.sb.length ();
-});
-Clazz.overrideMethod (c$, "indexOf",
-function (c) {
-for (var i = 0; i < this.sb.length (); i++) {
-if (this.sb.charAt (i) == c) {
-return i;
-}}
-return -1;
-}, "~S");
-Clazz.overrideMethod (c$, "unwrap",
-function () {
-return this.sb;
-});
-Clazz.overrideMethod (c$, "substring",
-function (i1, i2) {
-var sb = new StringBuffer (i2 - i1);
-for (var i = i1; i < i2; i++) {
-sb.append (this.charAt (i));
-}
-return sb.toString ();
-}, "~N,~N");
-Clazz.overrideMethod (c$, "newStringBufferLike",
-function () {
-return null;
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.PartialBuffer", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.off = 0;
+this.allowOverRun = true;
+this.overRun = false;
+this.sb = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "PartialBuffer", null, com.stevesoft.pat.StringLike);
+Clazz.makeConstructor (c$,
+function (sb) {
+this.sb = sb;
+}, "StringBuffer");
+Clazz.overrideMethod (c$, "charAt",
+function (n) {
+n += this.off;
+if (n == this.sb.length ()) {
+this.overRun = true;
+return String.fromCharCode (0);
+}return this.sb.charAt (n);
+}, "~N");
+Clazz.overrideMethod (c$, "length",
+function () {
+return this.allowOverRun ? this.sb.length () + 1 : this.sb.length ();
+});
+Clazz.overrideMethod (c$, "indexOf",
+function (c) {
+for (var i = 0; i < this.sb.length (); i++) {
+if (this.sb.charAt (i) == c) {
+return i;
+}}
+return -1;
+}, "~S");
+Clazz.overrideMethod (c$, "unwrap",
+function () {
+return this.sb;
+});
+Clazz.overrideMethod (c$, "substring",
+function (i1, i2) {
+var sb = new StringBuffer (i2 - i1);
+for (var i = i1; i < i2; i++) {
+sb.append (this.charAt (i));
+}
+return sb.toString ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "newStringBufferLike",
+function () {
+return null;
+});
+});
diff --git a/bin/com/stevesoft/pat/Pattern.js b/bin/com/stevesoft/pat/Pattern.js
index a4dc10b..a3dddd4 100644
--- a/bin/com/stevesoft/pat/Pattern.js
+++ b/bin/com/stevesoft/pat/Pattern.js
@@ -1,153 +1,153 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (null, "com.stevesoft.pat.Pattern", ["com.stevesoft.pat.MessageManager", "$.patInf", "$.patInt", "java.lang.Error", "$.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.next = null;
-this.parent = null;
-this.mfrom = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Pattern");
-Clazz.defineMethod (c$, "getNext",
-function () {
-return this.next != null ? this.next : (this.parent == null ? null : this.parent.getNext ());
-});
-Clazz.defineMethod (c$, "setParent",
-function (p) {
-if (this.next != null) {
-this.next.setParent (p);
-} else {
-this.parent = p;
-}}, "com.stevesoft.pat.Pattern");
-Clazz.defineMethod (c$, "nextMatch",
-function (i, pt) {
-var p = this.getNext ();
-return p == null ? i : p.matchInternal (i, pt);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.defineMethod (c$, "nextString",
-function () {
-if (this.next == null) {
-return "";
-}return this.next.toString ();
-});
-c$.inString = Clazz.defineMethod (c$, "inString",
-function (c, s) {
-var i;
-for (i = 0; i < s.length; i++) {
-if (s.charAt (i) == c) {
-return true;
-}}
-return false;
-}, "~S,~S");
-c$.protect = Clazz.defineMethod (c$, "protect",
-function (s, PROTECT_THESE, esc) {
-var i;
-var sb = new StringBuffer ();
-var p = PROTECT_THESE + esc;
-for (i = 0; i < s.length; i++) {
-var c = s.charAt (i);
-if (com.stevesoft.pat.Pattern.inString (c, p)) {
-sb.append (esc);
-}sb.append (c);
-}
-return sb.toString ();
-}, "~S,~S,~S");
-Clazz.defineMethod (c$, "match",
-function (s, pt) {
-return this.matchAt (s, 0, pt);
-}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");
-Clazz.defineMethod (c$, "matchAt",
-function (s, i, pt) {
-pt.src = s;
-var r = this.matchInternal (i, pt);
-if (r < 0) {
-return -1;
-}this.mfrom = r < i ? r + 1 : i;
-return r < i ? i - r - 1 : r - i;
-}, "com.stevesoft.pat.StringLike,~N,com.stevesoft.pat.Pthings");
-Clazz.defineMethod (c$, "Masked",
-function (i, pt) {
-return pt.cbits == null ? false : pt.cbits.get (i);
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.defineMethod (c$, "add",
-function (p) {
-if (this.next == null) {
-if (p == null) {
-return this;
-}this.next = p;
-p.parent = this.parent;
-this.parent = null;
-} else {
-this.next.add (p);
-}return this;
-}, "com.stevesoft.pat.Pattern");
-Clazz.defineMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (0);
-});
-Clazz.defineMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInf ();
-});
-Clazz.defineMethod (c$, "countMinChars",
-function () {
-var p = this;
-var sum = new com.stevesoft.pat.patInt (0);
-while (p != null) {
-sum.pluseq (p.minChars ());
-p = p.next;
-}
-return sum;
-});
-Clazz.defineMethod (c$, "countMaxChars",
-function () {
-var p = this;
-var sum = new com.stevesoft.pat.patInt (0);
-while (p != null) {
-sum.pluseq (p.maxChars ());
-p = p.next;
-}
-return sum;
-});
-Clazz.defineMethod (c$, "testMatch",
-function (p, pos, pt) {
-var tab = null;
-if (pt.marks != null) {
-try {
-tab = Clazz.newIntArray (pt.marks.length, 0);
-for (var i = 0; i < tab.length; i++) {
-tab[i] = pt.marks[i];
-}
-} catch (t) {
-}
-}var ret = p.matchInternal (pos, pt);
-if (ret < 0) {
-pt.marks = tab;
-}return ret;
-}, "com.stevesoft.pat.Pattern,~N,com.stevesoft.pat.Pthings");
-Clazz.defineMethod (c$, "clone1",
-function (h) {
-throw new Error (com.stevesoft.pat.MessageManager.formatMessage ("error.no_such_method_as_clone1_for", Clazz.newArray (-1, [this.getClass ().getName ()])));
-}, "java.util.Hashtable");
-Clazz.defineMethod (c$, "clone",
-function (h) {
-var p = h.get (this);
-if (p != null) {
-return p;
-}p = this.clone1 (h);
-if (p == null) {
-throw new Error (com.stevesoft.pat.MessageManager.getString ("error.null_from_clone1"));
-}h.put (this, p);
-h.put (p, p);
-if (this.next != null) {
-p.next = this.next.clone (h);
-}if (this.parent != null) {
-p.parent = this.parent.clone (h);
-}return p;
-}, "java.util.Hashtable");
-Clazz.overrideMethod (c$, "equals",
-function (o) {
-return o === this;
-}, "~O");
-Clazz.defineStatics (c$,
-"ESC", '\\',
-"PROTECT_THESE", "[]{}(),$,-\"^.");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.Pattern", ["com.stevesoft.pat.MessageManager", "$.patInf", "$.patInt", "java.lang.Error", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.next = null;
+this.parent = null;
+this.mfrom = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Pattern");
+Clazz.defineMethod (c$, "getNext",
+function () {
+return this.next != null ? this.next : (this.parent == null ? null : this.parent.getNext ());
+});
+Clazz.defineMethod (c$, "setParent",
+function (p) {
+if (this.next != null) {
+this.next.setParent (p);
+} else {
+this.parent = p;
+}}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "nextMatch",
+function (i, pt) {
+var p = this.getNext ();
+return p == null ? i : p.matchInternal (i, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "nextString",
+function () {
+if (this.next == null) {
+return "";
+}return this.next.toString ();
+});
+c$.inString = Clazz.defineMethod (c$, "inString",
+function (c, s) {
+var i;
+for (i = 0; i < s.length; i++) {
+if (s.charAt (i) == c) {
+return true;
+}}
+return false;
+}, "~S,~S");
+c$.protect = Clazz.defineMethod (c$, "protect",
+function (s, PROTECT_THESE, esc) {
+var i;
+var sb = new StringBuffer ();
+var p = PROTECT_THESE + esc;
+for (i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if (com.stevesoft.pat.Pattern.inString (c, p)) {
+sb.append (esc);
+}sb.append (c);
+}
+return sb.toString ();
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "match",
+function (s, pt) {
+return this.matchAt (s, 0, pt);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "matchAt",
+function (s, i, pt) {
+pt.src = s;
+var r = this.matchInternal (i, pt);
+if (r < 0) {
+return -1;
+}this.mfrom = r < i ? r + 1 : i;
+return r < i ? i - r - 1 : r - i;
+}, "com.stevesoft.pat.StringLike,~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "Masked",
+function (i, pt) {
+return pt.cbits == null ? false : pt.cbits.get (i);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "add",
+function (p) {
+if (this.next == null) {
+if (p == null) {
+return this;
+}this.next = p;
+p.parent = this.parent;
+this.parent = null;
+} else {
+this.next.add (p);
+}return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (0);
+});
+Clazz.defineMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInf ();
+});
+Clazz.defineMethod (c$, "countMinChars",
+function () {
+var p = this;
+var sum = new com.stevesoft.pat.patInt (0);
+while (p != null) {
+sum.pluseq (p.minChars ());
+p = p.next;
+}
+return sum;
+});
+Clazz.defineMethod (c$, "countMaxChars",
+function () {
+var p = this;
+var sum = new com.stevesoft.pat.patInt (0);
+while (p != null) {
+sum.pluseq (p.maxChars ());
+p = p.next;
+}
+return sum;
+});
+Clazz.defineMethod (c$, "testMatch",
+function (p, pos, pt) {
+var tab = null;
+if (pt.marks != null) {
+try {
+tab = Clazz.newIntArray (pt.marks.length, 0);
+for (var i = 0; i < tab.length; i++) {
+tab[i] = pt.marks[i];
+}
+} catch (t) {
+}
+}var ret = p.matchInternal (pos, pt);
+if (ret < 0) {
+pt.marks = tab;
+}return ret;
+}, "com.stevesoft.pat.Pattern,~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "clone1",
+function (h) {
+throw new Error (com.stevesoft.pat.MessageManager.formatMessage ("error.no_such_method_as_clone1_for", Clazz.newArray (-1, [this.getClass ().getName ()])));
+}, "java.util.Hashtable");
+Clazz.defineMethod (c$, "clone",
+function (h) {
+var p = h.get (this);
+if (p != null) {
+return p;
+}p = this.clone1 (h);
+if (p == null) {
+throw new Error (com.stevesoft.pat.MessageManager.getString ("error.null_from_clone1"));
+}h.put (this, p);
+h.put (p, p);
+if (this.next != null) {
+p.next = this.next.clone (h);
+}if (this.parent != null) {
+p.parent = this.parent.clone (h);
+}return p;
+}, "java.util.Hashtable");
+Clazz.overrideMethod (c$, "equals",
+function (o) {
+return o === this;
+}, "~O");
+Clazz.defineStatics (c$,
+"ESC", '\\',
+"PROTECT_THESE", "[]{}(),$,-\"^.");
+});
diff --git a/bin/com/stevesoft/pat/PatternSub.js b/bin/com/stevesoft/pat/PatternSub.js
index 2199b2b..835661a 100644
--- a/bin/com/stevesoft/pat/PatternSub.js
+++ b/bin/com/stevesoft/pat/PatternSub.js
@@ -1,7 +1,7 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.PatternSub", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.sub = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "PatternSub", com.stevesoft.pat.Pattern);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.PatternSub", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sub = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "PatternSub", com.stevesoft.pat.Pattern);
+});
diff --git a/bin/com/stevesoft/pat/PopRule.js b/bin/com/stevesoft/pat/PopRule.js
index d983d19..92af006 100644
--- a/bin/com/stevesoft/pat/PopRule.js
+++ b/bin/com/stevesoft/pat/PopRule.js
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PopRule", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "PopRule", com.stevesoft.pat.SpecialRule);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.PopRule, []);
-});
-Clazz.overrideMethod (c$, "toString1",
-function () {
-return "${POP}";
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PopRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "PopRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.PopRule, []);
+});
+Clazz.overrideMethod (c$, "toString1",
+function () {
+return "${POP}";
+});
+});
diff --git a/bin/com/stevesoft/pat/Prop.js b/bin/com/stevesoft/pat/Prop.js
index 7f99d0e..5dbb6db 100644
--- a/bin/com/stevesoft/pat/Prop.js
+++ b/bin/com/stevesoft/pat/Prop.js
@@ -1,40 +1,40 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (null, "com.stevesoft.pat.Prop", ["com.stevesoft.pat.Bits"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "Prop");
-c$.isDecimalDigit = Clazz.defineMethod (c$, "isDecimalDigit",
-function (c) {
-if (com.stevesoft.pat.Bits.decimal_digit == null) {
-com.stevesoft.pat.Bits.decimal_digit_f ();
-}return com.stevesoft.pat.Bits.decimal_digit.get (c.charCodeAt (0));
-}, "~S");
-c$.isAlphabetic = Clazz.defineMethod (c$, "isAlphabetic",
-function (c) {
-if (com.stevesoft.pat.Bits.letter == null) {
-com.stevesoft.pat.Bits.letter_f ();
-}return com.stevesoft.pat.Bits.letter.get (c.charCodeAt (0));
-}, "~S");
-c$.isMath = Clazz.defineMethod (c$, "isMath",
-function (c) {
-if (com.stevesoft.pat.Bits.math == null) {
-com.stevesoft.pat.Bits.math_f ();
-}return com.stevesoft.pat.Bits.math.get (c.charCodeAt (0));
-}, "~S");
-c$.isCurrency = Clazz.defineMethod (c$, "isCurrency",
-function (c) {
-if (com.stevesoft.pat.Bits.currency == null) {
-com.stevesoft.pat.Bits.currency_f ();
-}return com.stevesoft.pat.Bits.currency.get (c.charCodeAt (0));
-}, "~S");
-c$.isWhite = Clazz.defineMethod (c$, "isWhite",
-function (c) {
-if (com.stevesoft.pat.Bits.white == null) {
-com.stevesoft.pat.Bits.white_f ();
-}return com.stevesoft.pat.Bits.white.get (c.charCodeAt (0));
-}, "~S");
-c$.isPunct = Clazz.defineMethod (c$, "isPunct",
-function (c) {
-if (com.stevesoft.pat.Bits.punct == null) {
-com.stevesoft.pat.Bits.punct_f ();
-}return com.stevesoft.pat.Bits.punct.get (c.charCodeAt (0));
-}, "~S");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.Prop", ["com.stevesoft.pat.Bits"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "Prop");
+c$.isDecimalDigit = Clazz.defineMethod (c$, "isDecimalDigit",
+function (c) {
+if (com.stevesoft.pat.Bits.decimal_digit == null) {
+com.stevesoft.pat.Bits.decimal_digit_f ();
+}return com.stevesoft.pat.Bits.decimal_digit.get (c.charCodeAt (0));
+}, "~S");
+c$.isAlphabetic = Clazz.defineMethod (c$, "isAlphabetic",
+function (c) {
+if (com.stevesoft.pat.Bits.letter == null) {
+com.stevesoft.pat.Bits.letter_f ();
+}return com.stevesoft.pat.Bits.letter.get (c.charCodeAt (0));
+}, "~S");
+c$.isMath = Clazz.defineMethod (c$, "isMath",
+function (c) {
+if (com.stevesoft.pat.Bits.math == null) {
+com.stevesoft.pat.Bits.math_f ();
+}return com.stevesoft.pat.Bits.math.get (c.charCodeAt (0));
+}, "~S");
+c$.isCurrency = Clazz.defineMethod (c$, "isCurrency",
+function (c) {
+if (com.stevesoft.pat.Bits.currency == null) {
+com.stevesoft.pat.Bits.currency_f ();
+}return com.stevesoft.pat.Bits.currency.get (c.charCodeAt (0));
+}, "~S");
+c$.isWhite = Clazz.defineMethod (c$, "isWhite",
+function (c) {
+if (com.stevesoft.pat.Bits.white == null) {
+com.stevesoft.pat.Bits.white_f ();
+}return com.stevesoft.pat.Bits.white.get (c.charCodeAt (0));
+}, "~S");
+c$.isPunct = Clazz.defineMethod (c$, "isPunct",
+function (c) {
+if (com.stevesoft.pat.Bits.punct == null) {
+com.stevesoft.pat.Bits.punct_f ();
+}return com.stevesoft.pat.Bits.punct.get (c.charCodeAt (0));
+}, "~S");
+});
diff --git a/bin/com/stevesoft/pat/Pthings.js b/bin/com/stevesoft/pat/Pthings.js
index 179ec6b..8969d4f 100644
--- a/bin/com/stevesoft/pat/Pthings.js
+++ b/bin/com/stevesoft/pat/Pthings.js
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-c$ = Clazz.decorateAsClass (function () {
-this.src = null;
-this.ignoreCase = false;
-this.mFlag = false;
-this.cbits = null;
-this.marks = null;
-this.nMarks = 0;
-this.dotDoesntMatchCR = false;
-this.no_check = false;
-this.lastPos = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Pthings");
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.decorateAsClass (function () {
+this.src = null;
+this.ignoreCase = false;
+this.mFlag = false;
+this.cbits = null;
+this.marks = null;
+this.nMarks = 0;
+this.dotDoesntMatchCR = false;
+this.no_check = false;
+this.lastPos = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Pthings");
diff --git a/bin/com/stevesoft/pat/PushRule.js b/bin/com/stevesoft/pat/PushRule.js
index bac59ef..fd7d64e 100644
--- a/bin/com/stevesoft/pat/PushRule.js
+++ b/bin/com/stevesoft/pat/PushRule.js
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PushRule", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.NewRule = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "PushRule", com.stevesoft.pat.SpecialRule);
-Clazz.makeConstructor (c$,
-function (p) {
-Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
-this.NewRule = p.NewRule;
-}, "com.stevesoft.pat.PushRule");
-Clazz.makeConstructor (c$,
-function (nm, rr) {
-Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
-this.name = nm;
-this.NewRule = rr;
-}, "~S,com.stevesoft.pat.Regex");
-Clazz.makeConstructor (c$,
-function (nm, tr) {
-Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
-this.name = nm;
-this.NewRule = tr.rp;
-}, "~S,com.stevesoft.pat.Transformer");
-Clazz.overrideMethod (c$, "clone1",
-function () {
-return new com.stevesoft.pat.PushRule (this);
-});
-Clazz.defineMethod (c$, "String1",
-function () {
-return "${+" + this.name + "}";
-});
-Clazz.overrideMethod (c$, "apply",
-function (sbl, rr) {
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PushRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.NewRule = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "PushRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$,
+function (p) {
+Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.NewRule = p.NewRule;
+}, "com.stevesoft.pat.PushRule");
+Clazz.makeConstructor (c$,
+function (nm, rr) {
+Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.name = nm;
+this.NewRule = rr;
+}, "~S,com.stevesoft.pat.Regex");
+Clazz.makeConstructor (c$,
+function (nm, tr) {
+Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.name = nm;
+this.NewRule = tr.rp;
+}, "~S,com.stevesoft.pat.Transformer");
+Clazz.overrideMethod (c$, "clone1",
+function () {
+return new com.stevesoft.pat.PushRule (this);
+});
+Clazz.defineMethod (c$, "String1",
+function () {
+return "${+" + this.name + "}";
+});
+Clazz.overrideMethod (c$, "apply",
+function (sbl, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
diff --git a/bin/com/stevesoft/pat/RBuffer.js b/bin/com/stevesoft/pat/RBuffer.js
index 529f8a2..27970cf 100644
--- a/bin/com/stevesoft/pat/RBuffer.js
+++ b/bin/com/stevesoft/pat/RBuffer.js
@@ -1,32 +1,32 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (null, "com.stevesoft.pat.RBuffer", ["java.lang.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.done = false;
-this.sb = null;
-this.pos = 0;
-this.epos = 0;
-this.next = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "RBuffer");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.makeConstructor (c$,
-function (sb) {
-this.sb = sb;
-}, "StringBuffer");
-Clazz.overrideMethod (c$, "toString",
-function () {
-return "sb=" + this.sb.toString ().$replace ('\n', ' ') + " pos=" + this.pos + " epos=" + this.epos + " sb.length()=" + this.sb.length () + "\n" + this.sp (this.pos + 3) + "^" + this.sp (this.epos - this.pos - 1) + "^";
-});
-Clazz.defineMethod (c$, "sp",
-function (n) {
-if (n <= 0) {
-return "";
-}var sb = new StringBuffer (n);
-for (var i = 0; i < n; i++) {
-sb.append (' ');
-}
-return sb.toString ();
-}, "~N");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.RBuffer", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.done = false;
+this.sb = null;
+this.pos = 0;
+this.epos = 0;
+this.next = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RBuffer");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.makeConstructor (c$,
+function (sb) {
+this.sb = sb;
+}, "StringBuffer");
+Clazz.overrideMethod (c$, "toString",
+function () {
+return "sb=" + this.sb.toString ().$replace ('\n', ' ') + " pos=" + this.pos + " epos=" + this.epos + " sb.length()=" + this.sb.length () + "\n" + this.sp (this.pos + 3) + "^" + this.sp (this.epos - this.pos - 1) + "^";
+});
+Clazz.defineMethod (c$, "sp",
+function (n) {
+if (n <= 0) {
+return "";
+}var sb = new StringBuffer (n);
+for (var i = 0; i < n; i++) {
+sb.append (' ');
+}
+return sb.toString ();
+}, "~N");
+});
diff --git a/bin/com/stevesoft/pat/Range.js b/bin/com/stevesoft/pat/Range.js
index cb007c4..8294a31 100644
--- a/bin/com/stevesoft/pat/Range.js
+++ b/bin/com/stevesoft/pat/Range.js
@@ -1,65 +1,65 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern", "$.RegSyntax"], ["com.stevesoft.pat.BadRangeArgs", "$.Range"], ["com.stevesoft.pat.RegSyntaxError", "$.oneChar", "$.patInt"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "BadRangeArgs", com.stevesoft.pat.RegSyntax);
-c$ = Clazz.decorateAsClass (function () {
-this.lo = '\0';
-this.hi = '\0';
-this.altlo = '\0';
-this.althi = '\0';
-this.printBrackets = false;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Range", com.stevesoft.pat.Pattern);
-Clazz.overrideMethod (c$, "toString",
-function () {
-var s = com.stevesoft.pat.Pattern.protect ("" + this.lo, "[]{}(),$,-\"^.", '\\') + "-" + com.stevesoft.pat.Pattern.protect ("" + this.hi, "[]{}(),$,-\"^.", '\\');
-if (!this.printBrackets) {
-return s;
-}return "[" + s + "]";
-});
-Clazz.makeConstructor (c$,
-function (loi, hii) {
-Clazz.superConstructor (this, com.stevesoft.pat.Range, []);
-this.lo = loi;
-this.hi = hii;
-var o = null;
-if (this.lo >= this.hi) {
-com.stevesoft.pat.RegSyntaxError.endItAll ("Badly formed []'s : " + this.lo + " >= " + this.hi);
-}o = new com.stevesoft.pat.oneChar (this.lo);
-this.altlo = o.altc;
-o = new com.stevesoft.pat.oneChar (this.hi);
-this.althi = o.altc;
-}, "~S,~S");
-Clazz.overrideMethod (c$, "matchInternal",
-function (pos, pt) {
-if (pos >= pt.src.length ()) {
-return -1;
-}if (this.Masked (pos, pt)) {
-return -1;
-}var c = pt.src.charAt (pos);
-if (this.lo <= c && c <= this.hi || (pt.ignoreCase && (this.altlo <= c && c <= this.althi))) {
-return this.nextMatch (pos + 1, pt);
-}return -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "minChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "maxChars",
-function () {
-return new com.stevesoft.pat.patInt (1);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-try {
-var r = new com.stevesoft.pat.Range (this.lo, this.hi);
-r.printBrackets = this.printBrackets;
-return r;
-} catch (rs) {
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
-return null;
-} else {
-throw rs;
-}
-}
-}, "java.util.Hashtable");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern", "$.RegSyntax"], ["com.stevesoft.pat.BadRangeArgs", "$.Range"], ["com.stevesoft.pat.RegSyntaxError", "$.oneChar", "$.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "BadRangeArgs", com.stevesoft.pat.RegSyntax);
+c$ = Clazz.decorateAsClass (function () {
+this.lo = '\0';
+this.hi = '\0';
+this.altlo = '\0';
+this.althi = '\0';
+this.printBrackets = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Range", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString",
+function () {
+var s = com.stevesoft.pat.Pattern.protect ("" + this.lo, "[]{}(),$,-\"^.", '\\') + "-" + com.stevesoft.pat.Pattern.protect ("" + this.hi, "[]{}(),$,-\"^.", '\\');
+if (!this.printBrackets) {
+return s;
+}return "[" + s + "]";
+});
+Clazz.makeConstructor (c$,
+function (loi, hii) {
+Clazz.superConstructor (this, com.stevesoft.pat.Range, []);
+this.lo = loi;
+this.hi = hii;
+var o = null;
+if (this.lo >= this.hi) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Badly formed []'s : " + this.lo + " >= " + this.hi);
+}o = new com.stevesoft.pat.oneChar (this.lo);
+this.altlo = o.altc;
+o = new com.stevesoft.pat.oneChar (this.hi);
+this.althi = o.altc;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "matchInternal",
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}if (this.Masked (pos, pt)) {
+return -1;
+}var c = pt.src.charAt (pos);
+if (this.lo <= c && c <= this.hi || (pt.ignoreCase && (this.altlo <= c && c <= this.althi))) {
+return this.nextMatch (pos + 1, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars",
+function () {
+return new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+try {
+var r = new com.stevesoft.pat.Range (this.lo, this.hi);
+r.printBrackets = this.printBrackets;
+return r;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
diff --git a/bin/com/stevesoft/pat/RegOpt.class b/bin/com/stevesoft/pat/RegOpt.class
index b62aeb0f9890c347c2641cee9e763188d72e5f84..96c50d7b81c40d5d4e0d7ec9b1a7b33b2afa9bba 100644
GIT binary patch
delta 29
lcmbQB(66xJJSSuC<_nyTEX>{vf|Et~bQ!HSJM*1o1OSh;2$cW;
delta 30
mcmeBIn4qxXJSSt{<_nyTEX+O(LX$=KbeYVVHaqd1Wds10q6n7&
diff --git a/bin/com/stevesoft/pat/RegOpt.js b/bin/com/stevesoft/pat/RegOpt.js
index ed70432..54e0ed8 100644
--- a/bin/com/stevesoft/pat/RegOpt.js
+++ b/bin/com/stevesoft/pat/RegOpt.js
@@ -1,254 +1,254 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["com.stevesoft.pat.Pattern", "$.oneChar", "java.util.Hashtable", "$.Vector"], ["com.stevesoft.pat.Branch", "$.RegOpt", "$.FastChar"], ["com.stevesoft.pat.Any", "$.Bracket", "$.Custom", "$.FastBracket", "$.FastMulti", "$.Multi", "$.NullPattern", "$.Or", "$.Range", "$.UniValidator", "$.patInt", "java.lang.Character", "$.StringBuffer"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);
-Clazz.overrideMethod (c$, "matchInternal",
-function (p, pt) {
-return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;
-}, "~N,com.stevesoft.pat.Pthings");
-Clazz.overrideMethod (c$, "clone1",
-function (h) {
-return new com.stevesoft.pat.FastChar (this.c);
-}, "java.util.Hashtable");
-c$ = Clazz.decorateAsClass (function () {
-this.h = null;
-this.keys = null;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);
-Clazz.prepareFields (c$, function () {
-this.h = new java.util.Hashtable ();
-this.keys = new java.util.Vector ();
-});
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);
-});
-Clazz.overrideMethod (c$, "clone1",
-function (x) {
-var b = new com.stevesoft.pat.Branch ();
-b.keys = this.keys.clone ();
-x.put (this, b);
-x.put (b, b);
-for (var i = 0; i < this.keys.size (); i++) {
-var p = this.h.get (this.keys.elementAt (i));
-b.h.put (this.keys.elementAt (i), p.clone (x));
-}
-return b;
-}, "java.util.Hashtable");
-Clazz.defineMethod (c$, "reduce",
-function (ignoreCase, dontMinQ) {
-if (this.h.size () == 1) {
-var e = this.h.keys ();
-var c = e.nextElement ();
-var oc;
-if (ignoreCase || dontMinQ) {
-oc = new com.stevesoft.pat.oneChar (c.charValue ());
-} else {
-oc = new com.stevesoft.pat.FastChar (c.charValue ());
-}oc.next = this.h.get (c);
-oc.add (this.next);
-return oc;
-} else if (this.h.size () == 0) {
-return null;
-}return this;
-}, "~B,~B");
-Clazz.defineMethod (c$, "maxChars",
-function () {
-var e = this.h.keys ();
-var count = new com.stevesoft.pat.patInt (0);
-while (e.hasMoreElements ()) {
-var key = e.nextElement ();
-var pa = this.h.get (key);
-var pi = pa.maxChars ();
-pi.inc ();
-count.maxeq (pi);
-}
-return count;
-});
-Clazz.defineMethod (c$, "minChars",
-function () {
-var e = this.h.keys ();
-var count = new com.stevesoft.pat.patInt (0);
-while (e.hasMoreElements ()) {
-var key = e.nextElement ();
-var pa = this.h.get (key);
-var pi = pa.minChars ();
-pi.inc ();
-count.mineq (pi);
-}
-return count;
-});
-Clazz.defineMethod (c$, "addc",
-function (o, ignoreCase, dontMinQ) {
-var n = o.next;
-if (n == null) {
-n = new com.stevesoft.pat.NullPattern ();
-} else {
-n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
-}n.setParent (this);
-this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
-if (ignoreCase) {
-if (o.c != o.altc) {
-this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);
-}if (o.c != o.altc2 && o.altc != o.altc2) {
-this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);
-}}}, "com.stevesoft.pat.oneChar,~B,~B");
-Clazz.defineMethod (c$, "set",
-function (c, n, igc, dontMinQ) {
-var p = this.h.get (c);
-this.next = null;
-if (p == null) {
-if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {
-var np = new com.stevesoft.pat.NullPattern ();
-np.add (n);
-this.h.put (c, np);
-} else {
-this.h.put (c, n);
-}this.keys.addElement (c);
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
-(p).addOr (n);
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {
-var b = new com.stevesoft.pat.Branch ();
-b.addc (p, igc, dontMinQ);
-b.addc (n, igc, dontMinQ);
-this.h.put (c, b);
-b.setParent (this);
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {
-(p).addc (n, igc, dontMinQ);
-n.setParent (p);
-} else {
-var o = new com.stevesoft.pat.Or ();
-o.setParent (this);
-if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
-o.addOr (p.next);
-} else {
-o.addOr (p);
-}o.addOr (n);
-var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);
-this.h.put (c, optpat);
-optpat.setParent (this);
-}}, "Character,com.stevesoft.pat.Pattern,~B,~B");
-Clazz.overrideMethod (c$, "toString",
-function () {
-var sb = new StringBuffer ();
-sb.append ("(?:(?#branch)");
-for (var i = 0; i < this.keys.size (); i++) {
-var c = this.keys.elementAt (i);
-sb.append (c);
-sb.append (this.h.get (c));
-if (i + 1 < this.keys.size ()) {
-sb.append ("|");
-}}
-sb.append (")");
-sb.append (this.nextString ());
-return sb.toString ();
-});
-Clazz.defineMethod (c$, "matchInternal",
-function (pos, pt) {
-if (pos >= pt.src.length ()) {
-return -1;
-}var n = this.h.get ( new Character (pt.src.charAt (pos)));
-if (n == null) {
-return -1;
-}if (pt.cbits != null && pt.cbits.get (pos)) {
-return -1;
-}return n.matchInternal (pos + 1, pt);
-}, "~N,com.stevesoft.pat.Pthings");
-c$ = Clazz.declareType (com.stevesoft.pat, "RegOpt");
-c$.opt = Clazz.defineMethod (c$, "opt",
-function (p, ignoreCase, dontMinQ) {
-if (p == null) {
-return p;
-}if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {
-var b = p;
-p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
-p.next = b.next;
-p.parent = b.parent;
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
-var o = p;
-p = new com.stevesoft.pat.FastChar (o.c);
-p.next = o.next;
-p.parent = o.parent;
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
-var o = p;
-p = o.v.elementAt (0);
-p.setParent (null);
-p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
-p.add (o.next);
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
-var o = p;
-o.pv = null;
-var v = o.v;
-o.v = new java.util.Vector ();
-var b = new com.stevesoft.pat.Branch ();
-b.parent = o.parent;
-for (var i = 0; i < v.size (); i++) {
-var pp = v.elementAt (i);
-if (Clazz.instanceOf (pp, com.stevesoft.pat.oneChar) && (b.h.size () >= 1 || (i + 1 < v.size () && Clazz.instanceOf (v.elementAt (i + 1), com.stevesoft.pat.oneChar)))) {
-b.addc (pp, ignoreCase, dontMinQ);
-} else {
-if (b.keys.size () > 0) {
-var p2 = b.reduce (ignoreCase, dontMinQ);
-if (p2 != null) {
-o.addOr (p2);
-b = new com.stevesoft.pat.Branch ();
-b.parent = o.parent;
-}}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
-}}
-if (b.keys.size () > 0) {
-var p2 = b.reduce (ignoreCase, dontMinQ);
-if (p2 != null) {
-o.addOr (p2);
-}}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
-p = o.v.elementAt (0);
-p.setParent (null);
-p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
-p.add (o.next);
-}} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {
-var ps = p;
-ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {
-var m = p;
-var fm = null;
-try {
-fm = new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
-} catch (rs) {
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
-} else {
-throw rs;
-}
-}
-fm.parent = m.parent;
-fm.matchFewest = m.matchFewest;
-fm.next = m.next;
-p = fm;
-}if (p.next != null) {
-p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
-}return p;
-}, "com.stevesoft.pat.Pattern,~B,~B");
-c$.safe4fm = Clazz.defineMethod (c$, "safe4fm",
-function (x) {
-while (x != null) {
-if (Clazz.instanceOf (x, com.stevesoft.pat.Bracket)) {
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Range)) {
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Any)) {
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Custom) && Clazz.instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Or)) {
-var o = x;
-if (!o.leftForm ().equals ("(?:")) {
-return false;
-}var lo = o.countMinChars ();
-var hi = o.countMaxChars ();
-if (!lo.equals (hi)) {
-return false;
-}for (var i = 0; i < o.v.size (); i++) {
-if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
-return false;
-}}
-} else {
-return false;
-}x = x.next;
-}
-return true;
-}, "com.stevesoft.pat.Pattern");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern", "$.oneChar", "java.util.Hashtable", "$.Vector"], ["com.stevesoft.pat.Branch", "$.RegOpt", "$.FastChar"], ["com.stevesoft.pat.Any", "$.Bracket", "$.Custom", "$.FastBracket", "$.FastMulti", "$.Multi", "$.NullPattern", "$.Or", "$.Range", "$.UniValidator", "$.patInt", "java.lang.Character", "$.StringBuffer"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);
+Clazz.overrideMethod (c$, "matchInternal",
+function (p, pt) {
+return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1",
+function (h) {
+return new com.stevesoft.pat.FastChar (this.c);
+}, "java.util.Hashtable");
+c$ = Clazz.decorateAsClass (function () {
+this.h = null;
+this.keys = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);
+Clazz.prepareFields (c$, function () {
+this.h = new java.util.Hashtable ();
+this.keys = new java.util.Vector ();
+});
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);
+});
+Clazz.overrideMethod (c$, "clone1",
+function (x) {
+var b = new com.stevesoft.pat.Branch ();
+b.keys = this.keys.clone ();
+x.put (this, b);
+x.put (b, b);
+for (var i = 0; i < this.keys.size (); i++) {
+var p = this.h.get (this.keys.elementAt (i));
+b.h.put (this.keys.elementAt (i), p.clone (x));
+}
+return b;
+}, "java.util.Hashtable");
+Clazz.defineMethod (c$, "reduce",
+function (ignoreCase, dontMinQ) {
+if (this.h.size () == 1) {
+var e = this.h.keys ();
+var c = e.nextElement ();
+var oc;
+if (ignoreCase || dontMinQ) {
+oc = new com.stevesoft.pat.oneChar (c.charValue ());
+} else {
+oc = new com.stevesoft.pat.FastChar (c.charValue ());
+}oc.next = this.h.get (c);
+oc.add (this.next);
+return oc;
+} else if (this.h.size () == 0) {
+return null;
+}return this;
+}, "~B,~B");
+Clazz.defineMethod (c$, "maxChars",
+function () {
+var e = this.h.keys ();
+var count = new com.stevesoft.pat.patInt (0);
+while (e.hasMoreElements ()) {
+var key = e.nextElement ();
+var pa = this.h.get (key);
+var pi = pa.maxChars ();
+pi.inc ();
+count.maxeq (pi);
+}
+return count;
+});
+Clazz.defineMethod (c$, "minChars",
+function () {
+var e = this.h.keys ();
+var count = new com.stevesoft.pat.patInt (0);
+while (e.hasMoreElements ()) {
+var key = e.nextElement ();
+var pa = this.h.get (key);
+var pi = pa.minChars ();
+pi.inc ();
+count.mineq (pi);
+}
+return count;
+});
+Clazz.defineMethod (c$, "addc",
+function (o, ignoreCase, dontMinQ) {
+var n = o.next;
+if (n == null) {
+n = new com.stevesoft.pat.NullPattern ();
+} else {
+n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
+}n.setParent (this);
+this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
+if (ignoreCase) {
+if (o.c != o.altc) {
+this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);
+}if (o.c != o.altc2 && o.altc != o.altc2) {
+this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);
+}}}, "com.stevesoft.pat.oneChar,~B,~B");
+Clazz.defineMethod (c$, "set",
+function (c, n, igc, dontMinQ) {
+var p = this.h.get (c);
+this.next = null;
+if (p == null) {
+if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {
+var np = new com.stevesoft.pat.NullPattern ();
+np.add (n);
+this.h.put (c, np);
+} else {
+this.h.put (c, n);
+}this.keys.addElement (c);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
+(p).addOr (n);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {
+var b = new com.stevesoft.pat.Branch ();
+b.addc (p, igc, dontMinQ);
+b.addc (n, igc, dontMinQ);
+this.h.put (c, b);
+b.setParent (this);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {
+(p).addc (n, igc, dontMinQ);
+n.setParent (p);
+} else {
+var o = new com.stevesoft.pat.Or ();
+o.setParent (this);
+if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
+o.addOr (p.next);
+} else {
+o.addOr (p);
+}o.addOr (n);
+var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);
+this.h.put (c, optpat);
+optpat.setParent (this);
+}}, "Character,com.stevesoft.pat.Pattern,~B,~B");
+Clazz.overrideMethod (c$, "toString",
+function () {
+var sb = new StringBuffer ();
+sb.append ("(?:(?#branch)");
+for (var i = 0; i < this.keys.size (); i++) {
+var c = this.keys.elementAt (i);
+sb.append (c);
+sb.append (this.h.get (c));
+if (i + 1 < this.keys.size ()) {
+sb.append ("|");
+}}
+sb.append (")");
+sb.append (this.nextString ());
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "matchInternal",
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}var n = this.h.get ( new Character (pt.src.charAt (pos)));
+if (n == null) {
+return -1;
+}if (pt.cbits != null && pt.cbits.get (pos)) {
+return -1;
+}return n.matchInternal (pos + 1, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+c$ = Clazz.declareType (com.stevesoft.pat, "RegOpt");
+c$.opt = Clazz.defineMethod (c$, "opt",
+function (p, ignoreCase, dontMinQ) {
+if (p == null) {
+return p;
+}if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {
+var b = p;
+p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
+p.next = b.next;
+p.parent = b.parent;
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
+var o = p;
+p = new com.stevesoft.pat.FastChar (o.c);
+p.next = o.next;
+p.parent = o.parent;
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
+var o = p;
+p = o.v.elementAt (0);
+p.setParent (null);
+p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
+p.add (o.next);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
+var o = p;
+o.pv = null;
+var v = o.v;
+o.v = new java.util.Vector ();
+var b = new com.stevesoft.pat.Branch ();
+b.parent = o.parent;
+for (var i = 0; i < v.size (); i++) {
+var pp = v.elementAt (i);
+if (Clazz.instanceOf (pp, com.stevesoft.pat.oneChar) && (b.h.size () >= 1 || (i + 1 < v.size () && Clazz.instanceOf (v.elementAt (i + 1), com.stevesoft.pat.oneChar)))) {
+b.addc (pp, ignoreCase, dontMinQ);
+} else {
+if (b.keys.size () > 0) {
+var p2 = b.reduce (ignoreCase, dontMinQ);
+if (p2 != null) {
+o.addOr (p2);
+b = new com.stevesoft.pat.Branch ();
+b.parent = o.parent;
+}}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
+}}
+if (b.keys.size () > 0) {
+var p2 = b.reduce (ignoreCase, dontMinQ);
+if (p2 != null) {
+o.addOr (p2);
+}}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
+p = o.v.elementAt (0);
+p.setParent (null);
+p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
+p.add (o.next);
+}} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {
+var ps = p;
+ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {
+var m = p;
+var fm = null;
+try {
+fm = new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+fm.parent = m.parent;
+fm.matchFewest = m.matchFewest;
+fm.next = m.next;
+p = fm;
+}if (p.next != null) {
+p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
+}return p;
+}, "com.stevesoft.pat.Pattern,~B,~B");
+c$.safe4fm = Clazz.defineMethod (c$, "safe4fm",
+function (x) {
+while (x != null) {
+if (Clazz.instanceOf (x, com.stevesoft.pat.Bracket)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Range)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Any)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Custom) && Clazz.instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Or)) {
+var o = x;
+if (!o.leftForm ().equals ("(?:")) {
+return false;
+}var lo = o.countMinChars ();
+var hi = o.countMaxChars ();
+if (!lo.equals (hi)) {
+return false;
+}for (var i = 0; i < o.v.size (); i++) {
+if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
+return false;
+}}
+} else {
+return false;
+}x = x.next;
+}
+return true;
+}, "com.stevesoft.pat.Pattern");
+});
diff --git a/bin/com/stevesoft/pat/RegRes.js b/bin/com/stevesoft/pat/RegRes.js
index ec4def1..9a31c29 100644
--- a/bin/com/stevesoft/pat/RegRes.js
+++ b/bin/com/stevesoft/pat/RegRes.js
@@ -1,155 +1,155 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (null, "com.stevesoft.pat.RegRes", ["java.lang.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.marks = null;
-this.didMatch_ = false;
-this.src = null;
-this.charsMatched_ = 0;
-this.matchFrom_ = 0;
-this.numSubs_ = 0;
-Clazz.instantialize (this, arguments);
-}, com.stevesoft.pat, "RegRes");
-Clazz.defineMethod (c$, "getString",
-function () {
-return this.src.toString ();
-});
-Clazz.defineMethod (c$, "getStringLike",
-function () {
-return this.src;
-});
-Clazz.overrideMethod (c$, "toString",
-function () {
-var sb = new StringBuffer ();
-sb.append ("match=" + this.matchedFrom () + ":" + this.charsMatched ());
-if (!this.didMatch ()) {
-return sb.toString ();
-}for (var i = 0; i < this.numSubs (); i++) {
-var n = i + 1;
-sb.append (" sub(" + n + ")=" + this.matchedFromI (n) + ":" + this.charsMatchedI (n));
-}
-return sb.toString ();
-});
-Clazz.defineMethod (c$, "copyOutOf",
-function (r) {
-if (r.marks == null) {
-this.marks = null;
-} else {
-try {
-this.marks = Clazz.newIntArray (r.marks.length, 0);
-for (var i = 0; i < this.marks.length; i++) {
-this.marks[i] = r.marks[i];
-}
-} catch (t) {
-}
-}this.didMatch_ = r.didMatch_;
-this.src = r.src;
-this.charsMatched_ = r.charsMatched_;
-this.matchFrom_ = r.matchFrom_;
-this.numSubs_ = r.numSubs_;
-}, "com.stevesoft.pat.RegRes");
-Clazz.defineMethod (c$, "equals",
-function (r) {
-if (this.charsMatched_ != r.charsMatched_ || this.matchFrom_ != r.matchFrom_ || this.didMatch_ != r.didMatch_ || this.numSubs_ != r.numSubs_ || !this.src.unwrap ().equals (r.src.unwrap ())) {
-return false;
-}if (this.marks == null && r.marks != null) {
-return false;
-}if (this.marks != null && r.marks == null) {
-return false;
-}for (var i = 1; i <= this.numSubs_; i++) {
-if (this.matchedFromI (i) != r.matchedFromI (i)) {
-return false;
-} else if (this.charsMatchedI (i) != r.charsMatchedI (i)) {
-return false;
-}}
-return true;
-}, "com.stevesoft.pat.RegRes");
-Clazz.defineMethod (c$, "stringMatched",
-function () {
-var mf = this.matchedFrom ();
-var cm = this.charsMatched ();
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
-});
-Clazz.defineMethod (c$, "matchedFromI",
-function (i) {
-if (this.marks == null || i > this.numSubs_) {
-return -1;
-}return this.marks[i];
-}, "~N");
-Clazz.defineMethod (c$, "charsMatchedI",
-function (i) {
-if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
-return -1;
-}var mf = this.matchedFromI (i);
-return mf < 0 ? -1 : this.marks[i + this.numSubs_] - this.matchedFromI (i);
-}, "~N");
-Clazz.defineMethod (c$, "matchedToI",
-function (i) {
-if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
-return -1;
-}return this.marks[i + this.numSubs_];
-}, "~N");
-Clazz.defineMethod (c$, "stringMatchedI",
-function (i) {
-var mf = this.matchedFromI (i);
-var cm = this.charsMatchedI (i);
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
-}, "~N");
-Clazz.defineMethod (c$, "left",
-function () {
-var mf = this.matchedFrom ();
-return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
-});
-Clazz.defineMethod (c$, "leftI",
-function (i) {
-var mf = this.matchedFromI (i);
-return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
-}, "~N");
-Clazz.defineMethod (c$, "right",
-function () {
-var mf = this.matchedFrom ();
-var cm = this.charsMatched ();
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
-});
-Clazz.defineMethod (c$, "rightI",
-function (i) {
-var mf = this.matchedFromI (i);
-var cm = this.charsMatchedI (i);
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
-}, "~N");
-Clazz.defineMethod (c$, "matchedFrom",
-function () {
-return !this.didMatch_ ? -1 : this.matchFrom_;
-});
-Clazz.defineMethod (c$, "charsMatched",
-function () {
-return !this.didMatch_ || this.matchFrom_ < 0 ? -1 : this.charsMatched_;
-});
-Clazz.defineMethod (c$, "matchedTo",
-function () {
-return !this.didMatch_ ? -1 : this.matchFrom_ + this.charsMatched_;
-});
-Clazz.defineMethod (c$, "numSubs",
-function () {
-return this.numSubs_;
-});
-Clazz.defineMethod (c$, "didMatch",
-function () {
-return this.didMatch_;
-});
-Clazz.defineMethod (c$, "matchFrom",
-function () {
-return this.matchedFrom ();
-});
-Clazz.defineMethod (c$, "substring",
-function () {
-return this.stringMatched ();
-});
-Clazz.defineMethod (c$, "matchFromI",
-function (i) {
-return this.matchedFromI (i);
-}, "~N");
-Clazz.defineMethod (c$, "substringI",
-function (i) {
-return this.stringMatchedI (i);
-}, "~N");
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.RegRes", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.marks = null;
+this.didMatch_ = false;
+this.src = null;
+this.charsMatched_ = 0;
+this.matchFrom_ = 0;
+this.numSubs_ = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RegRes");
+Clazz.defineMethod (c$, "getString",
+function () {
+return this.src.toString ();
+});
+Clazz.defineMethod (c$, "getStringLike",
+function () {
+return this.src;
+});
+Clazz.overrideMethod (c$, "toString",
+function () {
+var sb = new StringBuffer ();
+sb.append ("match=" + this.matchedFrom () + ":" + this.charsMatched ());
+if (!this.didMatch ()) {
+return sb.toString ();
+}for (var i = 0; i < this.numSubs (); i++) {
+var n = i + 1;
+sb.append (" sub(" + n + ")=" + this.matchedFromI (n) + ":" + this.charsMatchedI (n));
+}
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "copyOutOf",
+function (r) {
+if (r.marks == null) {
+this.marks = null;
+} else {
+try {
+this.marks = Clazz.newIntArray (r.marks.length, 0);
+for (var i = 0; i < this.marks.length; i++) {
+this.marks[i] = r.marks[i];
+}
+} catch (t) {
+}
+}this.didMatch_ = r.didMatch_;
+this.src = r.src;
+this.charsMatched_ = r.charsMatched_;
+this.matchFrom_ = r.matchFrom_;
+this.numSubs_ = r.numSubs_;
+}, "com.stevesoft.pat.RegRes");
+Clazz.defineMethod (c$, "equals",
+function (r) {
+if (this.charsMatched_ != r.charsMatched_ || this.matchFrom_ != r.matchFrom_ || this.didMatch_ != r.didMatch_ || this.numSubs_ != r.numSubs_ || !this.src.unwrap ().equals (r.src.unwrap ())) {
+return false;
+}if (this.marks == null && r.marks != null) {
+return false;
+}if (this.marks != null && r.marks == null) {
+return false;
+}for (var i = 1; i <= this.numSubs_; i++) {
+if (this.matchedFromI (i) != r.matchedFromI (i)) {
+return false;
+} else if (this.charsMatchedI (i) != r.charsMatchedI (i)) {
+return false;
+}}
+return true;
+}, "com.stevesoft.pat.RegRes");
+Clazz.defineMethod (c$, "stringMatched",
+function () {
+var mf = this.matchedFrom ();
+var cm = this.charsMatched ();
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
+});
+Clazz.defineMethod (c$, "matchedFromI",
+function (i) {
+if (this.marks == null || i > this.numSubs_) {
+return -1;
+}return this.marks[i];
+}, "~N");
+Clazz.defineMethod (c$, "charsMatchedI",
+function (i) {
+if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
+return -1;
+}var mf = this.matchedFromI (i);
+return mf < 0 ? -1 : this.marks[i + this.numSubs_] - this.matchedFromI (i);
+}, "~N");
+Clazz.defineMethod (c$, "matchedToI",
+function (i) {
+if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
+return -1;
+}return this.marks[i + this.numSubs_];
+}, "~N");
+Clazz.defineMethod (c$, "stringMatchedI",
+function (i) {
+var mf = this.matchedFromI (i);
+var cm = this.charsMatchedI (i);
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
+}, "~N");
+Clazz.defineMethod (c$, "left",
+function () {
+var mf = this.matchedFrom ();
+return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
+});
+Clazz.defineMethod (c$, "leftI",
+function (i) {
+var mf = this.matchedFromI (i);
+return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
+}, "~N");
+Clazz.defineMethod (c$, "right",
+function () {
+var mf = this.matchedFrom ();
+var cm = this.charsMatched ();
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
+});
+Clazz.defineMethod (c$, "rightI",
+function (i) {
+var mf = this.matchedFromI (i);
+var cm = this.charsMatchedI (i);
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
+}, "~N");
+Clazz.defineMethod (c$, "matchedFrom",
+function () {
+return !this.didMatch_ ? -1 : this.matchFrom_;
+});
+Clazz.defineMethod (c$, "charsMatched",
+function () {
+return !this.didMatch_ || this.matchFrom_ < 0 ? -1 : this.charsMatched_;
+});
+Clazz.defineMethod (c$, "matchedTo",
+function () {
+return !this.didMatch_ ? -1 : this.matchFrom_ + this.charsMatched_;
+});
+Clazz.defineMethod (c$, "numSubs",
+function () {
+return this.numSubs_;
+});
+Clazz.defineMethod (c$, "didMatch",
+function () {
+return this.didMatch_;
+});
+Clazz.defineMethod (c$, "matchFrom",
+function () {
+return this.matchedFrom ();
+});
+Clazz.defineMethod (c$, "substring",
+function () {
+return this.stringMatched ();
+});
+Clazz.defineMethod (c$, "matchFromI",
+function (i) {
+return this.matchedFromI (i);
+}, "~N");
+Clazz.defineMethod (c$, "substringI",
+function (i) {
+return this.stringMatchedI (i);
+}, "~N");
+});
diff --git a/bin/com/stevesoft/pat/RegSyntax.js b/bin/com/stevesoft/pat/RegSyntax.js
index 9275c48..8a6e621 100644
--- a/bin/com/stevesoft/pat/RegSyntax.js
+++ b/bin/com/stevesoft/pat/RegSyntax.js
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["java.lang.Exception"], "com.stevesoft.pat.RegSyntax", null, function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntax", Exception);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.RegSyntax, []);
-});
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.lang.Exception"], "com.stevesoft.pat.RegSyntax", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntax", Exception);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.RegSyntax, []);
+});
+});
diff --git a/bin/com/stevesoft/pat/RegSyntaxError.js b/bin/com/stevesoft/pat/RegSyntaxError.js
index 5a81c21..3a127a5 100644
--- a/bin/com/stevesoft/pat/RegSyntaxError.js
+++ b/bin/com/stevesoft/pat/RegSyntaxError.js
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");
-Clazz.load (["java.lang.Error"], "com.stevesoft.pat.RegSyntaxError", ["com.stevesoft.pat.RegSyntax"], function () {
-c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntaxError", Error);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, com.stevesoft.pat.RegSyntaxError, []);
-});
-c$.endItAll = Clazz.defineMethod (c$, "endItAll",
-function (s) {
-if (com.stevesoft.pat.RegSyntaxError.RegSyntaxErrorEnabled) {
-throw new com.stevesoft.pat.RegSyntaxError (s);
-}throw new com.stevesoft.pat.RegSyntax (s);
-}, "~S");
-Clazz.defineStatics (c$,
-"RegSyntaxErrorEnabled", false);
-});
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.lang.Error"], "com.stevesoft.pat.RegSyntaxError", ["com.stevesoft.pat.RegSyntax"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntaxError", Error);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.RegSyntaxError, []);
+});
+c$.endItAll = Clazz.defineMethod (c$, "endItAll",
+function (s) {
+if (com.stevesoft.pat.RegSyntaxError.RegSyntaxErrorEnabled) {
+throw new com.stevesoft.pat.RegSyntaxError (s);
+}throw new com.stevesoft.pat.RegSyntax (s);
+}, "~S");
+Clazz.defineStatics (c$,
+"RegSyntaxErrorEnabled", false);
+});
diff --git a/bin/com/stevesoft/pat/Regex.class b/bin/com/stevesoft/pat/Regex.class
index 89553f04e5d229c473dcc8b7222278d622fe529e..14f6f05c57d97868b50c5b8e349cb4e6029e7918 100644
GIT binary patch
delta 240
zcmZ2;jd9^M#tnybIJFp9fRKTqeDWXdsL86j8$`qznEx{*GcdC=FtRgT1R@58z|F68
zT{#)gZZUknN`hT`PjuweNph=q)aK>Z91e;BNQW=cr#LV$?$WX5m>MuEx7
x;p&21C@QV>1UJWqPhw$o+x#J#nT^|tK}PBi&_zt~f|LIzYA_0I)=XmN1OQa3H~|0v
delta 230
zcmZ2@jd9I2#tnybIJFsAfRKTqeDWXdsL86j8$=}-SpG94GcdC=FtRgT1R@3oKBvtu
zbzM0b&u!K>U&JV&&A|GHfe$F-0L1?pY9>FlkYZ%o{M$l;kI{d#hc-VG2yVOp|58
z)rHwn6
");
+}
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, "Sequence Details for " + (sequences.length == 1 ? sequences[0].getDisplayId (true) : "Selection"), 600, 500);
+cap.setText (jalview.util.MessageManager.formatMessage ("label.html_content", Clazz.newArray (-1, [contents.toString ()])));
+}, "~A");
+Clazz.defineMethod (c$, "editName",
+function () {
+var dialog = new jalview.appletgui.EditNameDialog (this.seq.getName (), this.seq.getDescription (), " Sequence Name", "Sequence Description", this.ap.alignFrame, "Edit Sequence Name / Description", 500, 100, true);
+if (dialog.accept) {
+this.seq.setName (dialog.getName ());
+this.seq.setDescription (dialog.getDescription ());
+this.ap.paintAlignment (false);
+}});
+Clazz.defineMethod (c$, "addPDB",
+function () {
+if (this.seq.getPDBId () != null) {
+var entry = this.seq.getPDBId ().firstElement ();
+if (this.ap.av.applet.jmolAvailable) {
+ new jalview.appletgui.AppletJmol (entry, Clazz.newArray (-1, [this.seq]), null, this.ap, jalview.io.AppletFormatAdapter.URL);
+}} else {
+var cap = new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_pdb_file"));
+cap.setPDBImport (this.seq);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.paste_pdb_file_for_sequence", Clazz.newArray (-1, [this.seq.getName ()])), 400, 300);
+}});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.groupMenu.setLabel (jalview.util.MessageManager.getString ("label.selection"));
+this.sequenceFeature.addActionListener (this);
+this.editGroupName.addActionListener (this);
+this.unGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
+this.unGroupMenuItem.addActionListener (this);
+this.createGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
+this.createGroupMenuItem.addActionListener (this);
+this.nucleotideMenuItem.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
+this.nucleotideMenuItem.addActionListener (this);
+this.conservationMenuItem.addItemListener (this);
+this.abovePIDColour.addItemListener (this);
+this.colourMenu.setLabel (jalview.util.MessageManager.getString ("label.group_colour"));
+this.showBoxes.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
+this.showBoxes.setState (true);
+this.showBoxes.addItemListener (this);
+this.sequenceName.addActionListener (this);
+this.sequenceDetails.addActionListener (this);
+this.selSeqDetails.addActionListener (this);
+this.displayNonconserved.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
+this.displayNonconserved.setState (false);
+this.displayNonconserved.addItemListener (this);
+this.showText.setLabel (jalview.util.MessageManager.getString ("action.text"));
+this.showText.addItemListener (this);
+this.showColourText.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
+this.showColourText.addItemListener (this);
+this.outputmenu.setLabel (jalview.util.MessageManager.getString ("label.out_to_textbox"));
+this.seqMenu.setLabel (jalview.util.MessageManager.getString ("label.sequence"));
+this.pdb.setLabel (jalview.util.MessageManager.getString ("label.view_pdb_structure"));
+this.hideSeqs.setLabel (jalview.util.MessageManager.getString ("action.hide_sequences"));
+this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with", Clazz.newArray (-1, [""])));
+this.revealAll.setLabel (jalview.util.MessageManager.getString ("action.reveal_all"));
+this.revealSeq.setLabel (jalview.util.MessageManager.getString ("action.reveal_sequences"));
+this.menu1.setLabel (jalview.util.MessageManager.getString ("label.group") + ":");
+this.add (this.groupMenu);
+this.add (this.seqMenu);
+this.add (this.hideSeqs);
+this.add (this.revealSeq);
+this.add (this.revealAll);
+this.groupMenu.add (this.groupShowAnnotationsMenu);
+this.groupMenu.add (this.groupHideAnnotationsMenu);
+this.groupMenu.add (this.groupAddReferenceAnnotations);
+this.groupMenu.add (this.editMenu);
+this.groupMenu.add (this.outputmenu);
+this.groupMenu.add (this.sequenceFeature);
+this.groupMenu.add (this.createGroupMenuItem);
+this.groupMenu.add (this.unGroupMenuItem);
+this.groupMenu.add (this.menu1);
+this.colourMenu.add (this.noColourmenuItem);
+this.colourMenu.add (this.clustalColour);
+this.colourMenu.add (this.BLOSUM62Colour);
+this.colourMenu.add (this.PIDColour);
+this.colourMenu.add (this.zappoColour);
+this.colourMenu.add (this.taylorColour);
+this.colourMenu.add (this.hydrophobicityColour);
+this.colourMenu.add (this.helixColour);
+this.colourMenu.add (this.strandColour);
+this.colourMenu.add (this.turnColour);
+this.colourMenu.add (this.buriedColour);
+this.colourMenu.add (this.nucleotideMenuItem);
+this.colourMenu.add (this.userDefinedColour);
+this.colourMenu.addSeparator ();
+this.colourMenu.add (this.abovePIDColour);
+this.colourMenu.add (this.conservationMenuItem);
+this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
+this.noColourmenuItem.addActionListener (this);
+this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx_colours"));
+this.clustalColour.addActionListener (this);
+this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
+this.zappoColour.addActionListener (this);
+this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
+this.taylorColour.addActionListener (this);
+this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener (this);
+this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
+this.helixColour.addActionListener (this);
+this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
+this.strandColour.addActionListener (this);
+this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
+this.turnColour.addActionListener (this);
+this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
+this.buriedColour.addActionListener (this);
+this.abovePIDColour.setLabel (jalview.util.MessageManager.getString ("label.above_identity_percentage"));
+this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
+this.userDefinedColour.addActionListener (this);
+this.PIDColour.setLabel (jalview.util.MessageManager.getString ("action.percentage_identity"));
+this.PIDColour.addActionListener (this);
+this.BLOSUM62Colour.setLabel ("BLOSUM62");
+this.BLOSUM62Colour.addActionListener (this);
+this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("label.conservation"));
+this.editMenu.add (this.copy);
+this.copy.addActionListener (this);
+this.editMenu.add (this.cut);
+this.cut.addActionListener (this);
+this.editMenu.add (this.editSequence);
+this.editSequence.addActionListener (this);
+this.editMenu.add (this.toUpper);
+this.toUpper.addActionListener (this);
+this.editMenu.add (this.toLower);
+this.toLower.addActionListener (this);
+this.editMenu.add (this.toggleCase);
+this.seqMenu.add (this.seqShowAnnotationsMenu);
+this.seqMenu.add (this.seqHideAnnotationsMenu);
+this.seqMenu.add (this.seqAddReferenceAnnotations);
+this.seqMenu.add (this.sequenceName);
+this.seqMenu.add (this.makeReferenceSeq);
+if (!this.ap.av.applet.useXtrnalSviewer) {
+this.seqMenu.add (this.pdb);
+}this.seqMenu.add (this.repGroup);
+this.menu1.add (this.editGroupName);
+this.menu1.add (this.colourMenu);
+this.menu1.add (this.showBoxes);
+this.menu1.add (this.showText);
+this.menu1.add (this.showColourText);
+this.menu1.add (this.displayNonconserved);
+this.toggleCase.addActionListener (this);
+this.pdb.addActionListener (this);
+this.hideSeqs.addActionListener (this);
+this.repGroup.addActionListener (this);
+this.revealAll.addActionListener (this);
+this.revealSeq.addActionListener (this);
+this.makeReferenceSeq.addActionListener (this);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "refresh",
+function () {
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "clustalColour_actionPerformed",
+function () {
+var sg = this.getGroup ();
+sg.cs = new jalview.schemes.ClustalxColourScheme (sg, this.ap.av.getHiddenRepSequences ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "zappoColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.ZappoColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "taylorColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.TaylorColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "hydrophobicityColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.HydrophobicColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "helixColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.HelixColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "strandColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.StrandColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "turnColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.TurnColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "buriedColour_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.BuriedColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "nucleotideMenuItem_actionPerformed",
+function () {
+this.getGroup ().cs = new jalview.schemes.NucleotideColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "abovePIDColour_itemStateChanged",
+function () {
+var sg = this.getGroup ();
+if (sg.cs == null) {
+return;
+}if (this.abovePIDColour.getState ()) {
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+var threshold = jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, sg.cs, this.getGroup ().getName ());
+sg.cs.setThreshold (threshold, this.ap.av.isIgnoreGapsConsensus ());
+jalview.appletgui.SliderPanel.showPIDSlider ();
+} else {
+sg.cs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
+}this.refresh ();
+});
+Clazz.defineMethod (c$, "userDefinedColour_actionPerformed",
+function () {
+ new jalview.appletgui.UserDefinedColours (this.ap, this.getGroup ());
+});
+Clazz.defineMethod (c$, "PIDColour_actionPerformed",
+function () {
+var sg = this.getGroup ();
+sg.cs = new jalview.schemes.PIDColourScheme ();
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+this.refresh ();
+});
+Clazz.defineMethod (c$, "BLOSUM62Colour_actionPerformed",
+function () {
+var sg = this.getGroup ();
+sg.cs = new jalview.schemes.Blosum62ColourScheme ();
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+this.refresh ();
+});
+Clazz.defineMethod (c$, "noColourmenuItem_actionPerformed",
+function () {
+this.getGroup ().cs = null;
+this.refresh ();
+});
+Clazz.defineMethod (c$, "conservationMenuItem_itemStateChanged",
+function () {
+var sg = this.getGroup ();
+if (sg.cs == null) {
+return;
+}if (this.conservationMenuItem.getState ()) {
+sg.cs.setConservation (jalview.analysis.Conservation.calculateConservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth (), false, this.ap.av.getConsPercGaps (), false));
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, sg.cs, sg.getName ());
+jalview.appletgui.SliderPanel.showConservationSlider ();
+} else {
+sg.cs.setConservation (null);
+}this.refresh ();
+});
+Clazz.defineMethod (c$, "getGroup",
+function () {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+this.ap.av.getAlignment ().addGroup (sg);
+}return sg;
+});
+Clazz.defineMethod (c$, "unGroupMenuItem_actionPerformed",
+function () {
+var sg = this.ap.av.getSelectionGroup ();
+this.ap.av.getAlignment ().deleteGroup (sg);
+this.ap.av.setSelectionGroup (null);
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "createGroupMenuItem_actionPerformed",
+function () {
+this.getGroup ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "showColourText_itemStateChanged",
+function () {
+this.getGroup ().setColourText (this.showColourText.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "showText_itemStateChanged",
+function () {
+this.getGroup ().setDisplayText (this.showText.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "makeReferenceSeq_actionPerformed",
+function () {
+if (!this.ap.av.getAlignment ().hasSeqrep ()) {
+this.ap.av.setDisplayReferenceSeq (true);
+this.ap.av.setColourByReferenceSeq (true);
+this.ap.av.getAlignment ().setSeqrep (this.seq);
+} else {
+if (this.ap.av.getAlignment ().getSeqrep () === this.seq) {
+this.ap.av.getAlignment ().setSeqrep (null);
+} else {
+this.ap.av.getAlignment ().setSeqrep (this.seq);
+}}this.refresh ();
+});
+Clazz.defineMethod (c$, "showNonconserved_itemStateChanged",
+function () {
+this.getGroup ().setShowNonconserved (this.displayNonconserved.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "showBoxes_itemStateChanged",
+function () {
+this.getGroup ().setDisplayBoxes (this.showBoxes.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "hideSequences",
+function (representGroup) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg == null || sg.getSize () < 1) {
+this.ap.av.hideSequence ( Clazz.newArray (-1, [this.seq]));
+return;
+}this.ap.av.setSelectionGroup (null);
+if (representGroup) {
+this.ap.av.hideRepSequences (this.seq, sg);
+return;
+}var gsize = sg.getSize ();
+var hseqs;
+hseqs = new Array (gsize);
+var index = 0;
+for (var i = 0; i < gsize; i++) {
+hseqs[index++] = sg.getSequenceAt (i);
+}
+this.ap.av.hideSequence (hseqs);
+this.ap.av.sendSelection ();
+}, "~B");
+Clazz.defineMethod (c$, "buildAnnotationTypesMenus",
+function (showMenu, hideMenu, forSequences) {
+showMenu.removeAll ();
+hideMenu.removeAll ();
+var all = java.util.Arrays.asList (["All"]);
+this.addAnnotationTypeToShowHide (showMenu, forSequences, "", all, true, true);
+this.addAnnotationTypeToShowHide (hideMenu, forSequences, "", all, true, false);
+showMenu.addSeparator ();
+hideMenu.addSeparator ();
+var annotations = this.ap.getAlignment ().getAlignmentAnnotation ();
+var shownTypes = new java.util.LinkedHashMap ();
+var hiddenTypes = new java.util.LinkedHashMap ();
+jalview.analysis.AlignmentAnnotationUtils.getShownHiddenTypes (shownTypes, hiddenTypes, jalview.analysis.AlignmentAnnotationUtils.asList (annotations), forSequences);
+for (var calcId, $calcId = hiddenTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var type, $type = hiddenTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {
+this.addAnnotationTypeToShowHide (showMenu, forSequences, calcId, type, false, true);
+}
+}
+showMenu.setEnabled (!hiddenTypes.isEmpty ());
+for (var calcId, $calcId = shownTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var type, $type = shownTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {
+this.addAnnotationTypeToShowHide (hideMenu, forSequences, calcId, type, false, false);
+}
+}
+hideMenu.setEnabled (!shownTypes.isEmpty ());
+}, "awt2swing.Menu,awt2swing.Menu,java.util.List");
+Clazz.defineMethod (c$, "addAnnotationTypeToShowHide",
+function (showOrHideMenu, forSequences, calcId, types, allTypes, actionIsShow) {
+var label = types.toString ();
+label = label.substring (1, label.length - 1);
+var item = new awt2swing.MenuItem (label);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$3") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$3, this, Clazz.cloneFinals ("types", types, "forSequences", forSequences, "allTypes", allTypes, "actionIsShow", actionIsShow))));
+showOrHideMenu.add (item);
+}, "awt2swing.Menu,java.util.List,~S,java.util.List,~B,~B");
+c$.$APopupMenu$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.APopupMenu"].addReferenceAnnotations_actionPerformed (this.f$.candidates);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$APopupMenu$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.APopupMenu"].ap.alignFrame.showURL (this.f$.url, this.f$.target);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$APopupMenu$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.APopupMenu"].ap.getAlignment (), this.f$.types, this.f$.forSequences, this.f$.allTypes, this.f$.actionIsShow);
+this.b$["jalview.appletgui.APopupMenu"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ALL_ANNOTATIONS", "All");
+});
diff --git a/bin/jalview/appletgui/AlignFrame.class b/bin/jalview/appletgui/AlignFrame.class
index c5a84722ff68ed5532fba2bdbd3973bc4bb066f0..f1ac80b81ee0a3a170d2bce4623677e7f13146fb 100644
GIT binary patch
delta 265
zcmdn`g=Ov+mJK=!7}sppT@b*{9L*p&xnZ>$^M3~E$*WdtGjeUdzFL`?F?RFsbxYa(
zwlmnt2#Wt^oOyQr|3
zn3%ZuliOVFN*49tI}nV&)PCMur&-42(B6
zH*P=1C??3j`Io^8Xva=TVSWu^HZ3j&M&`Sd7w%Nr+_3YA3ZwOA*Lz=>ncaXsv3X>{
q$hx`g(Lol*Et@T#XEHH+G4M`a^3sy~KLZEYrHl-Wn;*Um2><}1_d)Lf
delta 247
zcmbRHg=Om(mJK=!7}ssqT@b*{9Lpd)xnZ>$i^P8hrpYT;YcsJkZN9o%nVGR-^Urll
z*;OtvM9K(?|7PSB;ALi#0%ATUAR)m5LIQ%^U_AN4Hc=)fCLkroBfumKh9XQNOq1Vi
z^RcjC;$q@*VEn_t&FH}Ri-A*Ag$am&VocmXD8dXyTueL+Ow7g1B@B!VGZ+{cZ*ET6
zevDB_h=J=bgB2q?^G-=&ehpzZb*9bMJ723X+H6+8_l23+ok3`_+#?I1<(tDF9b{o#
dyIJyiCKIzW1K;G 0) {
-this.viewport.hideSequence (hiddenSeqs);
-}if (columnSelection != null) {
-this.viewport.setColumnSelection (columnSelection);
-}this.alignPanel = new jalview.appletgui.AlignmentPanel (this, this.viewport);
-this.avc = new jalview.controller.AlignViewController (this, this.viewport, this.alignPanel);
-this.viewport.updateConservation (this.alignPanel);
-this.viewport.updateConsensus (this.alignPanel);
-this.displayNonconservedMenuItem.setState (this.viewport.getShowUnconserved ());
-this.followMouseOverFlag.setState (this.viewport.isFollowHighlight ());
-this.showGroupConsensus.setState (this.viewport.isShowGroupConsensus ());
-this.showGroupConservation.setState (this.viewport.isShowGroupConservation ());
-this.showConsensusHistogram.setState (this.viewport.isShowConsensusHistogram ());
-this.showSequenceLogo.setState (this.viewport.isShowSequenceLogo ());
-this.normSequenceLogo.setState (this.viewport.isNormaliseSequenceLogo ());
-this.applyToAllGroups.setState (this.viewport.getColourAppliesToAllGroups ());
-this.annotationPanelMenuItem.setState (this.viewport.isShowAnnotation ());
-this.showAlignmentAnnotations.setState (this.viewport.isShowAnnotation ());
-this.showSequenceAnnotations.setState (this.viewport.isShowAnnotation ());
-this.seqLimits.setState (this.viewport.getShowJVSuffix ());
-if (applet != null) {
-var param = applet.sortBy;
-if (param != null) {
-if (param.equalsIgnoreCase ("Id")) {
-this.sortIDMenuItem_actionPerformed ();
-} else if (param.equalsIgnoreCase ("Pairwise Identity")) {
-this.sortPairwiseMenuItem_actionPerformed ();
-} else if (param.equalsIgnoreCase ("Length")) {
-this.sortLengthMenuItem_actionPerformed ();
-}}param = applet.wrap;
-if (param != null) {
-if (param.equalsIgnoreCase ("true")) {
-this.wrapMenuItem.setState (true);
-this.wrapMenuItem_actionPerformed ();
-}}param = applet.centrecolumnlabels;
-if (param != null) {
-this.centreColumnLabelFlag.setState (true);
-this.centreColumnLabelFlag_stateChanged ();
-}}if (this.viewport.getAlignment ().isNucleotide ()) {
-this.viewport.updateStrucConsensus (this.alignPanel);
-if (this.viewport.getAlignment ().hasRNAStructure ()) {
-this.RNAHelixColour.setEnabled (true);
-} else {
-this.RNAHelixColour.setEnabled (false);
-}} else {
-this.RNAHelixColour.setEnabled (false);
-this.purinePyrimidineColour.setEnabled (false);
-}this.addKeyListener (this);
-this.alignPanel.seqPanel.seqCanvas.addKeyListener (this);
-this.alignPanel.idPanel.idCanvas.addKeyListener (this);
-this.alignPanel.scalePanel.addKeyListener (this);
-this.alignPanel.annotationPanel.addKeyListener (this);
-this.alignPanel.annotationPanelHolder.addKeyListener (this);
-this.alignPanel.annotationSpaceFillerHolder.addKeyListener (this);
-this.alignPanel.alabels.addKeyListener (this);
-if (addToDisplay) {
-this.addToDisplay (embedded);
-}}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B,~B");
-Clazz.defineMethod (c$, "addToDisplay",
-function (embedded) {
-this.createAlignFrameWindow (embedded);
-this.validate ();
-this.alignPanel.adjustAnnotationHeight ();
-this.alignPanel.paintAlignment (true);
-}, "~B");
-Clazz.defineMethod (c$, "getAlignViewport",
-function () {
-return this.viewport;
-});
-Clazz.defineMethod (c$, "getSeqcanvas",
-function () {
-return this.alignPanel.seqPanel.seqCanvas;
-});
-Clazz.defineMethod (c$, "parseFeaturesFile",
-function (file, type) {
-return this.parseFeaturesFile (file, type, true);
-}, "~S,~S");
-Clazz.defineMethod (c$, "parseFeaturesFile",
-function (file, type, autoenabledisplay) {
-var featureLinks = new java.util.Hashtable ();
-var featuresFile = false;
-try {
-featuresFile = new jalview.io.FeaturesFile (file, type).parse (this.viewport.getAlignment (), this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().getFeatureColours (), featureLinks, true, this.viewport.applet.getDefaultParameter ("relaxedidmatch", false));
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-if (featuresFile) {
-if (featureLinks.size () > 0) {
-this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().featureLinks = featureLinks;
-}if (autoenabledisplay) {
-this.viewport.setShowSequenceFeatures (true);
-this.sequenceFeatures.setState (true);
-}if (this.alignPanel.seqPanel.seqCanvas.fr != null) {
-this.alignPanel.seqPanel.seqCanvas.fr.findAllFeatures (true);
-}if (this.viewport.featureSettings != null) {
-this.viewport.featureSettings.refreshTable ();
-}this.alignPanel.paintAlignment (true);
-this.setStatus (jalview.util.MessageManager.getString ("label.successfully_added_features_alignment"));
-}return featuresFile;
-}, "~S,~S,~B");
-Clazz.overrideMethod (c$, "keyPressed",
-function (evt) {
-if (this.viewport.cursorMode && ((evt.getKeyCode () >= 48 && evt.getKeyCode () <= 57) || (evt.getKeyCode () >= 96 && evt.getKeyCode () <= 105)) && Character.isDigit (evt.getKeyChar ())) {
-this.alignPanel.seqPanel.numberPressed (evt.getKeyChar ());
-}switch (evt.getKeyCode ()) {
-case 27:
-this.deselectAllSequenceMenuItem_actionPerformed ();
-this.alignPanel.alabels.cancelDrag ();
-break;
-case 88:
-if (evt.isControlDown () || evt.isMetaDown ()) {
-this.cut_actionPerformed ();
-}break;
-case 67:
-if (this.viewport.cursorMode && !evt.isControlDown ()) {
-this.alignPanel.seqPanel.setCursorColumn ();
-}if (evt.isControlDown () || evt.isMetaDown ()) {
-this.copy_actionPerformed ();
-}break;
-case 86:
-if (evt.isControlDown ()) {
-this.paste (evt.isShiftDown ());
-}break;
-case 65:
-if (evt.isControlDown () || evt.isMetaDown ()) {
-this.selectAllSequenceMenuItem_actionPerformed ();
-}break;
-case 40:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.moveCursor (0, 1);
-} else {
-this.moveSelectedSequences (false);
-}break;
-case 38:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.moveCursor (0, -1);
-} else {
-this.moveSelectedSequences (true);
-}break;
-case 37:
-if (evt.isAltDown () || !this.viewport.cursorMode) {
-this.slideSequences (false, this.alignPanel.seqPanel.getKeyboardNo1 ());
-} else {
-this.alignPanel.seqPanel.moveCursor (-1, 0);
-}break;
-case 39:
-if (evt.isAltDown () || !this.viewport.cursorMode) {
-this.slideSequences (true, this.alignPanel.seqPanel.getKeyboardNo1 ());
-} else {
-this.alignPanel.seqPanel.moveCursor (1, 0);
-}break;
-case 32:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.insertGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
-}break;
-case 127:
-case 8:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.deleteGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
-} else {
-this.cut_actionPerformed ();
-this.alignPanel.seqPanel.seqCanvas.repaint ();
-}break;
-case 83:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.setCursorRow ();
-}break;
-case 80:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.setCursorPosition ();
-}break;
-case 10:
-case 44:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.setCursorRowAndColumn ();
-}break;
-case 81:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.setSelectionAreaAtCursor (true);
-}break;
-case 77:
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.setSelectionAreaAtCursor (false);
-}break;
-case 113:
-this.viewport.cursorMode = !this.viewport.cursorMode;
-this.setStatus (jalview.util.MessageManager.formatMessage ("label.keyboard_editing_mode", Clazz.newArray (-1, [(this.viewport.cursorMode ? "on" : "off")])));
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.seqCanvas.cursorX = this.viewport.startRes;
-this.alignPanel.seqPanel.seqCanvas.cursorY = this.viewport.startSeq;
-}break;
-case 70:
-if (evt.isControlDown ()) {
-this.findMenuItem_actionPerformed ();
-}break;
-case 72:
-{
-var toggleSeqs = !evt.isControlDown ();
-var toggleCols = !evt.isShiftDown ();
-this.toggleHiddenRegions (toggleSeqs, toggleCols);
-break;
-}case 33:
-if (this.viewport.getWrapAlignment ()) {
-this.alignPanel.scrollUp (true);
-} else {
-this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq - this.viewport.endSeq + this.viewport.startSeq);
-}break;
-case 34:
-if (this.viewport.getWrapAlignment ()) {
-this.alignPanel.scrollUp (false);
-} else {
-this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq + this.viewport.endSeq - this.viewport.startSeq);
-}break;
-case 90:
-if (evt.isControlDown ()) {
-this.undoMenuItem_actionPerformed ();
-}break;
-case 89:
-if (evt.isControlDown ()) {
-this.redoMenuItem_actionPerformed ();
-}break;
-case 76:
-if (evt.isControlDown ()) {
-this.trimAlignment (true);
-}break;
-case 82:
-if (evt.isControlDown ()) {
-this.trimAlignment (false);
-}break;
-case 69:
-if (evt.isControlDown ()) {
-if (evt.isShiftDown ()) {
-this.removeAllGapsMenuItem_actionPerformed ();
-} else {
-this.removeGappedColumnMenuItem_actionPerformed ();
-}}break;
-case 73:
-if (evt.isControlDown ()) {
-if (evt.isAltDown ()) {
-this.invertColSel_actionPerformed ();
-} else {
-this.invertSequenceMenuItem_actionPerformed ();
-}}break;
-case 71:
-if (evt.isControlDown ()) {
-if (evt.isShiftDown ()) {
-this.unGroup_actionPerformed ();
-} else {
-this.createGroup_actionPerformed ();
-}}break;
-case 85:
-if (evt.isControlDown ()) {
-this.deleteGroups_actionPerformed ();
-}break;
-case 84:
-if (evt.isControlDown ()) {
-this.newView (null);
-}break;
-}
-this.alignPanel.paintAlignment (true);
-}, "java.awt.event.KeyEvent");
-Clazz.defineMethod (c$, "toggleHiddenRegions",
-($fz = function (toggleSeqs, toggleCols) {
-var hide = false;
-var sg = this.viewport.getSelectionGroup ();
-if (!toggleSeqs && !toggleCols) {
-if ((this.viewport.getColumnSelection () != null && this.viewport.getColumnSelection ().getSelected () != null && this.viewport.getColumnSelection ().getSelected ().size () > 0) || (sg != null && sg.getSize () > 0 && sg.getStartRes () <= sg.getEndRes ())) {
-if (sg != null) {
-this.invertSequenceMenuItem_actionPerformed ();
-sg = this.viewport.getSelectionGroup ();
-toggleSeqs = true;
-}this.viewport.expandColSelection (sg, true);
-this.invertColSel_actionPerformed ();
-toggleCols = true;
-}}if (toggleSeqs) {
-if (sg != null && sg.getSize () != this.viewport.getAlignment ().getHeight ()) {
-hide = true;
-this.viewport.hideAllSelectedSeqs ();
-} else if (!(toggleCols && this.viewport.getColumnSelection ().getSelected ().size () > 0)) {
-this.viewport.showAllHiddenSeqs ();
-}}if (toggleCols) {
-if (this.viewport.getColumnSelection ().getSelected ().size () > 0) {
-this.viewport.hideSelectedColumns ();
-if (!toggleSeqs) {
-this.viewport.setSelectionGroup (sg);
-}} else if (!hide) {
-this.viewport.showAllHiddenColumns ();
-}}}, $fz.isPrivate = true, $fz), "~B,~B");
-Clazz.overrideMethod (c$, "keyReleased",
-function (evt) {
-}, "java.awt.event.KeyEvent");
-Clazz.overrideMethod (c$, "keyTyped",
-function (evt) {
-}, "java.awt.event.KeyEvent");
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-var source = evt.getSource ();
-if (source === this.displayNonconservedMenuItem) {
-this.displayNonconservedMenuItem_actionPerformed ();
-} else if (source === this.colourTextMenuItem) {
-this.colourTextMenuItem_actionPerformed ();
-} else if (source === this.wrapMenuItem) {
-this.wrapMenuItem_actionPerformed ();
-} else if (source === this.scaleAbove) {
-this.viewport.setScaleAboveWrapped (this.scaleAbove.getState ());
-} else if (source === this.scaleLeft) {
-this.viewport.setScaleLeftWrapped (this.scaleLeft.getState ());
-} else if (source === this.scaleRight) {
-this.viewport.setScaleRightWrapped (this.scaleRight.getState ());
-} else if (source === this.seqLimits) {
-this.seqLimits_itemStateChanged ();
-} else if (source === this.viewBoxesMenuItem) {
-this.viewport.setShowBoxes (this.viewBoxesMenuItem.getState ());
-} else if (source === this.viewTextMenuItem) {
-this.viewport.setShowText (this.viewTextMenuItem.getState ());
-} else if (source === this.renderGapsMenuItem) {
-this.viewport.setRenderGaps (this.renderGapsMenuItem.getState ());
-} else if (source === this.annotationPanelMenuItem) {
-this.viewport.setShowAnnotation (this.annotationPanelMenuItem.getState ());
-this.alignPanel.setAnnotationVisible (this.annotationPanelMenuItem.getState ());
-} else if (source === this.sequenceFeatures) {
-this.viewport.setShowSequenceFeatures (this.sequenceFeatures.getState ());
-this.alignPanel.seqPanel.seqCanvas.repaint ();
-} else if (source === this.showAlignmentAnnotations) {
-this.setAnnotationsVisibility ();
-} else if (source === this.showSequenceAnnotations) {
-this.setAnnotationsVisibility ();
-} else if (source === this.sortAnnBySequence) {
-var newState = this.sortAnnBySequence.getState ();
-this.sortAnnByLabel.setState (false);
-this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
-this.setViewportAnnotationOrder ();
-} else if (source === this.sortAnnByLabel) {
-var newState = this.sortAnnByLabel.getState ();
-this.sortAnnBySequence.setState (false);
-this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
-this.setViewportAnnotationOrder ();
-} else if (source === this.showAutoFirst) {
-this.showAutoLast.setState (!this.showAutoFirst.getState ());
-this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
-this.setViewportAnnotationOrder ();
-} else if (source === this.showAutoLast) {
-this.showAutoFirst.setState (!this.showAutoLast.getState ());
-this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
-this.setViewportAnnotationOrder ();
-} else if (source === this.conservationMenuItem) {
-this.conservationMenuItem_actionPerformed ();
-} else if (source === this.abovePIDThreshold) {
-this.abovePIDThreshold_actionPerformed ();
-} else if (source === this.applyToAllGroups) {
-this.viewport.setColourAppliesToAllGroups (this.applyToAllGroups.getState ());
-} else if (source === this.autoCalculate) {
-this.viewport.autoCalculateConsensus = this.autoCalculate.getState ();
-} else if (source === this.$sortByTree) {
-this.viewport.sortByTree = this.$sortByTree.getState ();
-} else if (source === this.centreColumnLabelFlag) {
-this.centreColumnLabelFlag_stateChanged ();
-} else if (source === this.followMouseOverFlag) {
-this.mouseOverFlag_stateChanged ();
-} else if (source === this.showGroupConsensus) {
-this.showGroupConsensus_actionPerformed ();
-} else if (source === this.showGroupConservation) {
-this.showGroupConservation_actionPerformed ();
-} else if (source === this.showSequenceLogo) {
-this.showSequenceLogo_actionPerformed ();
-} else if (source === this.normSequenceLogo) {
-this.normSequenceLogo_actionPerformed ();
-} else if (source === this.showConsensusHistogram) {
-this.showConsensusHistogram_actionPerformed ();
-} else if (source === this.applyAutoAnnotationSettings) {
-this.applyAutoAnnotationSettings_actionPerformed ();
-}this.alignPanel.paintAlignment (true);
-}, "java.awt.event.ItemEvent");
-Clazz.defineMethod (c$, "setAnnotationsVisibility",
-($fz = function () {
-var showForAlignment = this.showAlignmentAnnotations.getState ();
-var showForSequences = this.showSequenceAnnotations.getState ();
-for (var aa, $aa = 0, $$aa = this.alignPanel.getAlignment ().getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
-var visible = (aa.sequenceRef == null ? showForAlignment : showForSequences);
-aa.visible = visible;
-}
-this.alignPanel.validateAnnotationDimensions (true);
-this.validate ();
-this.repaint ();
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "setAnnotationSortOrder",
-($fz = function (order) {
-this.annotationSortOrder = order;
-}, $fz.isPrivate = true, $fz), "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
-Clazz.defineMethod (c$, "setViewportAnnotationOrder",
-($fz = function () {
-this.alignPanel.av.setSortAnnotationsBy (this.annotationSortOrder);
-this.alignPanel.av.setShowAutocalculatedAbove (this.showAutoCalculatedAbove);
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "setShowAutoCalculatedAbove",
-($fz = function (showAbove) {
-this.showAutoCalculatedAbove = showAbove;
-}, $fz.isPrivate = true, $fz), "~B");
-Clazz.defineMethod (c$, "mouseOverFlag_stateChanged",
-($fz = function () {
-this.viewport.setFollowHighlight (this.followMouseOverFlag.getState ());
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "centreColumnLabelFlag_stateChanged",
-($fz = function () {
-this.viewport.centreColumnLabels = this.centreColumnLabelFlag.getState ();
-this.alignPanel.annotationPanel.repaint ();
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-var source = evt.getSource ();
-if (source === this.inputText) {
-this.inputText_actionPerformed ();
-} else if (source === this.$loadTree) {
-this.loadTree_actionPerformed ();
-} else if (source === this.loadApplication) {
-this.launchFullApplication ();
-} else if (source === this.$loadAnnotations) {
-this.loadAnnotations ();
-} else if (source === this.$outputAnnotations) {
-this.outputAnnotations (true);
-} else if (source === this.$outputFeatures) {
-this.outputFeatures (true, "Jalview");
-} else if (source === this.closeMenuItem) {
-this.closeMenuItem_actionPerformed ();
-} else if (source === this.copy) {
-this.copy_actionPerformed ();
-} else if (source === this.undoMenuItem) {
-this.undoMenuItem_actionPerformed ();
-} else if (source === this.redoMenuItem) {
-this.redoMenuItem_actionPerformed ();
-} else if (source === this.inputText) {
-this.inputText_actionPerformed ();
-} else if (source === this.closeMenuItem) {
-this.closeMenuItem_actionPerformed ();
-} else if (source === this.undoMenuItem) {
-this.undoMenuItem_actionPerformed ();
-} else if (source === this.redoMenuItem) {
-this.redoMenuItem_actionPerformed ();
-} else if (source === this.copy) {
-this.copy_actionPerformed ();
-} else if (source === this.pasteNew) {
-this.pasteNew_actionPerformed ();
-} else if (source === this.pasteThis) {
-this.pasteThis_actionPerformed ();
-} else if (source === this.cut) {
-this.cut_actionPerformed ();
-} else if (source === this.$delete) {
-this.delete_actionPerformed ();
-} else if (source === this.grpsFromSelection) {
-this.makeGrpsFromSelection_actionPerformed ();
-} else if (source === this.deleteGroups) {
-this.deleteGroups_actionPerformed ();
-} else if (source === this.selectAllSequenceMenuItem) {
-this.selectAllSequenceMenuItem_actionPerformed ();
-} else if (source === this.deselectAllSequenceMenuItem) {
-this.deselectAllSequenceMenuItem_actionPerformed ();
-} else if (source === this.invertSequenceMenuItem) {
-this.invertSequenceMenuItem_actionPerformed ();
-} else if (source === this.invertColSel) {
-this.viewport.invertColumnSelection ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.remove2LeftMenuItem) {
-this.trimAlignment (true);
-} else if (source === this.remove2RightMenuItem) {
-this.trimAlignment (false);
-} else if (source === this.removeGappedColumnMenuItem) {
-this.removeGappedColumnMenuItem_actionPerformed ();
-} else if (source === this.removeAllGapsMenuItem) {
-this.removeAllGapsMenuItem_actionPerformed ();
-} else if (source === this.findMenuItem) {
-this.findMenuItem_actionPerformed ();
-} else if (source === this.$font) {
- new jalview.appletgui.FontChooser (this.alignPanel);
-} else if (source === this.$newView) {
-this.newView (null);
-} else if (source === this.showColumns) {
-this.viewport.showAllHiddenColumns ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.showSeqs) {
-this.viewport.showAllHiddenSeqs ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.hideColumns) {
-this.viewport.hideSelectedColumns ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.hideSequences && this.viewport.getSelectionGroup () != null) {
-this.viewport.hideAllSelectedSeqs ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.hideAllButSelection) {
-this.toggleHiddenRegions (false, false);
-this.alignPanel.paintAlignment (true);
-} else if (source === this.hideAllSelection) {
-var sg = this.viewport.getSelectionGroup ();
-this.viewport.expandColSelection (sg, false);
-this.viewport.hideAllSelectedSeqs ();
-this.viewport.hideSelectedColumns ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.showAllHidden) {
-this.viewport.showAllHiddenColumns ();
-this.viewport.showAllHiddenSeqs ();
-this.alignPanel.paintAlignment (true);
-} else if (source === this.showGroupConsensus) {
-this.showGroupConsensus_actionPerformed ();
-} else if (source === this.showGroupConservation) {
-this.showGroupConservation_actionPerformed ();
-} else if (source === this.showSequenceLogo) {
-this.showSequenceLogo_actionPerformed ();
-} else if (source === this.normSequenceLogo) {
-this.normSequenceLogo_actionPerformed ();
-} else if (source === this.showConsensusHistogram) {
-this.showConsensusHistogram_actionPerformed ();
-} else if (source === this.applyAutoAnnotationSettings) {
-this.applyAutoAnnotationSettings_actionPerformed ();
-} else if (source === this.featureSettings) {
- new jalview.appletgui.FeatureSettings (this.alignPanel);
-} else if (source === this.alProperties) {
-var contents = new jalview.io.AlignmentProperties (this.viewport.getAlignment ()).formatAsString ();
-var cap = new jalview.appletgui.CutAndPasteTransfer (false, this);
-cap.setText (contents.toString ());
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_properties", Clazz.newArray (-1, [this.getTitle ()])), 400, 250);
-} else if (source === this.overviewMenuItem) {
-this.overviewMenuItem_actionPerformed ();
-} else if (source === this.noColourmenuItem) {
-this.changeColour (null);
-} else if (source === this.clustalColour) {
-this.abovePIDThreshold.setState (false);
-this.changeColour ( new jalview.schemes.ClustalxColourScheme (this.viewport.getAlignment (), null));
-} else if (source === this.zappoColour) {
-this.changeColour ( new jalview.schemes.ZappoColourScheme ());
-} else if (source === this.taylorColour) {
-this.changeColour ( new jalview.schemes.TaylorColourScheme ());
-} else if (source === this.hydrophobicityColour) {
-this.changeColour ( new jalview.schemes.HydrophobicColourScheme ());
-} else if (source === this.helixColour) {
-this.changeColour ( new jalview.schemes.HelixColourScheme ());
-} else if (source === this.strandColour) {
-this.changeColour ( new jalview.schemes.StrandColourScheme ());
-} else if (source === this.turnColour) {
-this.changeColour ( new jalview.schemes.TurnColourScheme ());
-} else if (source === this.buriedColour) {
-this.changeColour ( new jalview.schemes.BuriedColourScheme ());
-} else if (source === this.nucleotideColour) {
-this.changeColour ( new jalview.schemes.NucleotideColourScheme ());
-} else if (source === this.purinePyrimidineColour) {
-this.changeColour ( new jalview.schemes.PurinePyrimidineColourScheme ());
-} else if (source === this.RNAInteractionColour) {
-this.changeColour ( new jalview.schemes.RNAInteractionColourScheme ());
-} else if (source === this.RNAHelixColour) {
- new jalview.schemes.RNAHelicesColourChooser (this.viewport, this.alignPanel);
-} else if (source === this.modifyPID) {
-this.modifyPID_actionPerformed ();
-} else if (source === this.modifyConservation) {
-this.modifyConservation_actionPerformed ();
-} else if (source === this.userDefinedColour) {
- new jalview.appletgui.UserDefinedColours (this.alignPanel, null);
-} else if (source === this.PIDColour) {
-this.changeColour ( new jalview.schemes.PIDColourScheme ());
-} else if (source === this.BLOSUM62Colour) {
-this.changeColour ( new jalview.schemes.Blosum62ColourScheme ());
-} else if (source === this.tcoffeeColour) {
-this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
-} else if (source === this.annotationColour) {
- new jalview.appletgui.AnnotationColourChooser (this.viewport, this.alignPanel);
-} else if (source === this.annotationColumnSelection) {
- new jalview.appletgui.AnnotationColumnChooser (this.viewport, this.alignPanel);
-} else if (source === this.sortPairwiseMenuItem) {
-this.sortPairwiseMenuItem_actionPerformed ();
-} else if (source === this.sortIDMenuItem) {
-this.sortIDMenuItem_actionPerformed ();
-} else if (source === this.sortLengthMenuItem) {
-this.sortLengthMenuItem_actionPerformed ();
-} else if (source === this.sortGroupMenuItem) {
-this.sortGroupMenuItem_actionPerformed ();
-} else if (source === this.removeRedundancyMenuItem) {
-this.removeRedundancyMenuItem_actionPerformed ();
-} else if (source === this.pairwiseAlignmentMenuItem) {
-this.pairwiseAlignmentMenuItem_actionPerformed ();
-} else if (source === this.PCAMenuItem) {
-this.PCAMenuItem_actionPerformed ();
-} else if (source === this.averageDistanceTreeMenuItem) {
-this.averageDistanceTreeMenuItem_actionPerformed ();
-} else if (source === this.neighbourTreeMenuItem) {
-this.neighbourTreeMenuItem_actionPerformed ();
-} else if (source === this.njTreeBlosumMenuItem) {
-this.njTreeBlosumMenuItem_actionPerformed ();
-} else if (source === this.avDistanceTreeBlosumMenuItem) {
-this.avTreeBlosumMenuItem_actionPerformed ();
-} else if (source === this.documentation) {
-this.documentation_actionPerformed ();
-} else if (source === this.about) {
-this.about_actionPerformed ();
-}}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "inputText_actionPerformed",
-function () {
-var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.input_cut_paste"), 500, 500);
-});
-Clazz.defineMethod (c$, "outputText_actionPerformed",
-function (e) {
-var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_output_command", Clazz.newArray (-1, [e.getActionCommand ()])), 600, 500);
-var fr = this.alignPanel.cloneFeatureRenderer ();
-cap.setText ( new jalview.io.AppletFormatAdapter (this.alignPanel).formatSequences (e.getActionCommand (), this.viewport.getAlignment (), this.viewport.getShowJVSuffix ()));
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "loadAnnotations",
-function () {
-var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
-cap.setText (jalview.util.MessageManager.getString ("label.paste_features_annotations_Tcoffee_here"));
-cap.setAnnotationImport ();
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.paste_annotations"), 400, 300);
-});
-Clazz.defineMethod (c$, "outputAnnotations",
-function (displayTextbox) {
-var annotation = new jalview.io.AnnotationFile ().printAnnotationsForView (this.viewport);
-if (displayTextbox) {
-var cap = new jalview.appletgui.CutAndPasteTransfer (false, this);
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.annotations"), 600, 500);
-cap.setText (annotation);
-}return annotation;
-}, "~B");
-Clazz.defineMethod (c$, "getDisplayedFeatureCols",
-($fz = function () {
-if (this.alignPanel.getFeatureRenderer () != null && this.viewport.getFeaturesDisplayed () != null) {
-return this.alignPanel.getFeatureRenderer ().getDisplayedFeatureCols ();
-}return null;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "outputFeatures",
-function (displayTextbox, format) {
-var features;
-if (format.equalsIgnoreCase ("Jalview")) {
-features = new jalview.io.FeaturesFile ().printJalviewFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
-} else {
-features = new jalview.io.FeaturesFile ().printGFFFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
-}if (displayTextbox) {
-var frimport = false;
-if (features == null || features.equals ("No Features Visible")) {
-features = "# No features visible - paste some and import them here.";
-frimport = true;
-}var cap = new jalview.appletgui.CutAndPasteTransfer (frimport, this);
-if (frimport) {
-cap.setAnnotationImport ();
-}var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.features"), 600, 500);
-cap.setText (features);
-} else {
-if (features == null) {
-features = "";
-}}return features;
-}, "~B,~S");
-Clazz.defineMethod (c$, "launchFullApplication",
-function () {
-var url = new StringBuffer (this.jalviewServletURL);
-var firstSep = url.lastIndexOf ("?") > url.lastIndexOf ("/") ? "&" : "?";
-url.append (firstSep);
-var applet = this.viewport.applet;
-var s = applet.startupFile;
-url.append ("open=" + this.appendProtocol (s));
-if (this.viewport.applet.features != null) {
-url.append ("&features=");
-url.append (this.appendProtocol (applet.features));
-}if (applet.annotations != null) {
-url.append ("&annotations=");
-url.append (this.appendProtocol (applet.annotations));
-}if (applet.jnetFile != null) {
-url.append ("&annotations=");
-url.append (this.appendProtocol (applet.jnetFile));
-}if (applet.defaultColour != null) {
-url.append ("&colour=" + this.removeWhiteSpace (applet.defaultColour));
-}if (applet.userDefinedColour != null) {
-url.append ("&colour=" + this.removeWhiteSpace (applet.userDefinedColour));
-}if (applet.treeFile != null) {
-url.append ("&tree=" + this.appendProtocol (applet.treeFile));
-}this.showURL (url.toString (), "FULL_APP");
-});
-Clazz.defineMethod (c$, "removeWhiteSpace",
-function (colour) {
-var sb = new StringBuffer ();
-for (var i = 0; i < colour.length; i++) {
-if (Character.isWhitespace (colour.charAt (i))) {
-sb.append ("%20");
-} else {
-sb.append (colour.charAt (i));
-}}
-return sb.toString ();
-}, "~S");
-Clazz.defineMethod (c$, "appendProtocol",
-function (url) {
-try {
- new java.net.URL (url);
-url = java.net.URLEncoder.encode (url);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, java.net.MalformedURLException)) {
-url = this.viewport.applet.getCodeBase () + url;
-} else {
-throw ex;
-}
-}
-return url;
-}, "~S");
-Clazz.defineMethod (c$, "closeMenuItem_actionPerformed",
-function () {
-jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel);
-if (this.alignPanel.seqPanel != null && this.alignPanel.seqPanel.seqCanvas != null) {
-jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.seqPanel.seqCanvas);
-}if (this.alignPanel.idPanel != null && this.alignPanel.idPanel.idCanvas != null) {
-jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.idPanel.idCanvas);
-}if (jalview.appletgui.PaintRefresher.components.size () == 0 && this.viewport.applet == null) {
-System.exit (0);
-} else {
-}this.viewport = null;
-this.alignPanel = null;
-this.dispose ();
-});
-Clazz.defineMethod (c$, "updateEditMenuBar",
-function () {
-if (this.viewport.getHistoryList ().size () > 0) {
-this.undoMenuItem.setEnabled (true);
-var command = this.viewport.getHistoryList ().peek ();
-this.undoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.undo_command", Clazz.newArray (-1, [command.getDescription ()])));
-} else {
-this.undoMenuItem.setEnabled (false);
-this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
-}if (this.viewport.getRedoList ().size () > 0) {
-this.redoMenuItem.setEnabled (true);
-var command = this.viewport.getRedoList ().peek ();
-this.redoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.redo_command", Clazz.newArray (-1, [command.getDescription ()])));
-} else {
-this.redoMenuItem.setEnabled (false);
-this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
-}});
-Clazz.overrideMethod (c$, "addHistoryItem",
-function (command) {
-if (command.getSize () > 0) {
-this.viewport.addToHistoryList (command);
-this.viewport.clearRedoList ();
-this.updateEditMenuBar ();
-this.viewport.updateHiddenColumns ();
-}}, "jalview.commands.CommandI");
-Clazz.defineMethod (c$, "undoMenuItem_actionPerformed",
-function () {
-if (this.viewport.getHistoryList ().isEmpty ()) {
-return;
-}var command = this.viewport.getHistoryList ().pop ();
-this.viewport.addToRedoList (command);
-command.undoCommand (null);
-var originalSource = this.getOriginatingSource (command);
-if (originalSource !== this.viewport) {
-System.err.println ("Warning: Viewport object mismatch whilst undoing");
-}originalSource.updateHiddenColumns ();
-this.updateEditMenuBar ();
-originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
-});
-Clazz.defineMethod (c$, "redoMenuItem_actionPerformed",
-function () {
-if (this.viewport.getRedoList ().isEmpty ()) {
-return;
-}var command = this.viewport.getRedoList ().pop ();
-this.viewport.addToHistoryList (command);
-command.doCommand (null);
-var originalSource = this.getOriginatingSource (command);
-if (originalSource !== this.viewport) {
-System.err.println ("Warning: Viewport object mismatch whilst re-doing");
-}originalSource.updateHiddenColumns ();
-this.updateEditMenuBar ();
-originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
-});
-Clazz.defineMethod (c$, "getOriginatingSource",
-function (command) {
-var originalSource = null;
-var al = null;
-if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {
-var editCommand = command;
-al = editCommand.getAlignment ();
-var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
-for (var i = 0; i < comps.size (); i++) {
-if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
-if (al === (comps.elementAt (i)).av.getAlignment ()) {
-originalSource = (comps.elementAt (i)).av;
-break;
-}}}
-}if (originalSource == null) {
-if (al != null) {
-jalview.appletgui.PaintRefresher.validateSequences (al, this.viewport.getAlignment ());
-}originalSource = this.viewport;
-}return originalSource;
-}, "jalview.commands.CommandI");
-Clazz.defineMethod (c$, "moveSelectedSequences",
-function (up) {
-var sg = this.viewport.getSelectionGroup ();
-if (sg == null) {
-return;
-}this.viewport.getAlignment ().moveSelectedSequencesByOne (sg, up ? null : this.viewport.getHiddenRepSequences (), up);
-this.alignPanel.paintAlignment (true);
-var complement = this.viewport.getCodingComplement ();
-if (complement != null) {
-var mappedSelection = jalview.util.MappingUtils.mapSequenceGroup (sg, this.viewport, complement);
-complement.getAlignment ().moveSelectedSequencesByOne (mappedSelection, up ? null : complement.getHiddenRepSequences (), up);
-}}, "~B");
-Clazz.defineMethod (c$, "slideSequences",
-function (right, size) {
-var sg = new java.util.Vector ();
-if (this.viewport.cursorMode) {
-sg.add (this.viewport.getAlignment ().getSequenceAt (this.alignPanel.seqPanel.seqCanvas.cursorY));
-} else if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () != this.viewport.getAlignment ().getHeight ()) {
-sg = this.viewport.getSelectionGroup ().getSequences (this.viewport.getHiddenRepSequences ());
-}if (sg.size () < 1) {
-return;
-}var invertGroup = new java.util.Vector ();
-for (var i = 0; i < this.viewport.getAlignment ().getHeight (); i++) {
-if (!sg.contains (this.viewport.getAlignment ().getSequenceAt (i))) {
-invertGroup.addElement (this.viewport.getAlignment ().getSequenceAt (i));
-}}
-var seqs1 = sg.toArray ( new Array (sg.size ()));
-var seqs2 = invertGroup.toArray ( new Array (invertGroup.size ()));
-for (var i = 0; i < invertGroup.size (); i++) {
-seqs2[i] = invertGroup.elementAt (i);
-}
-var ssc;
-if (right) {
-ssc = new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs2, seqs1, size, this.viewport.getGapCharacter ());
-} else {
-ssc = new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs1, seqs2, size, this.viewport.getGapCharacter ());
-}var groupAdjustment = 0;
-if (ssc.getGapsInsertedBegin () && right) {
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.moveCursor (size, 0);
-} else {
-groupAdjustment = size;
-}} else if (!ssc.getGapsInsertedBegin () && !right) {
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.moveCursor (-size, 0);
-} else {
-groupAdjustment = -size;
-}}if (groupAdjustment != 0) {
-this.viewport.getSelectionGroup ().setStartRes (this.viewport.getSelectionGroup ().getStartRes () + groupAdjustment);
-this.viewport.getSelectionGroup ().setEndRes (this.viewport.getSelectionGroup ().getEndRes () + groupAdjustment);
-}var appendHistoryItem = false;
-var historyList = this.viewport.getHistoryList ();
-if (historyList != null && historyList.size () > 0 && Clazz.instanceOf (historyList.peek (), jalview.commands.SlideSequencesCommand)) {
-appendHistoryItem = ssc.appendSlideCommand (historyList.peek ());
-}if (!appendHistoryItem) {
-this.addHistoryItem (ssc);
-}this.repaint ();
-}, "~B,~N");
-Clazz.defineMethod (c$, "copy_actionPerformed",
-function () {
-if (this.viewport.getSelectionGroup () == null) {
-return;
-}var sg = this.viewport.getSelectionGroup ();
-jalview.appletgui.AlignFrame.copiedSequences = new StringBuffer ();
-var orderedSeqs = new java.util.HashMap ();
-for (var i = 0; i < sg.getSize (); i++) {
-var seq = sg.getSequenceAt (i);
-var index = this.viewport.getAlignment ().findIndex (seq);
-orderedSeqs.put (new Integer (index), seq);
-}
-var index = 0;
-var startRes;
-var endRes;
-var ch;
-if (this.viewport.hasHiddenColumns () && this.viewport.getSelectionGroup () != null) {
-jalview.appletgui.AlignFrame.copiedHiddenColumns = new java.util.Vector ();
-var hiddenOffset = this.viewport.getSelectionGroup ().getStartRes ();
-for (var region, $region = this.viewport.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
-jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0] - hiddenOffset, region[1] - hiddenOffset]));
-}
-} else {
-jalview.appletgui.AlignFrame.copiedHiddenColumns = null;
-}for (var i = 0; i < sg.getSize (); i++) {
-var seq = null;
-while (seq == null) {
-if (orderedSeqs.containsKey (new Integer (index))) {
-seq = orderedSeqs.get (new Integer (index));
-index++;
-break;
-} else {
-index++;
-}}
-startRes = seq.findPosition (sg.getStartRes ());
-endRes = 0;
-for (var j = 0; j < sg.getEndRes () + 1 && j < seq.getLength (); j++) {
-ch = seq.getCharAt (j);
-if (!jalview.util.Comparison.isGap ((ch))) {
-endRes++;
-}}
-if (endRes > 0) {
-endRes += seq.getStart () - 1;
-}jalview.appletgui.AlignFrame.copiedSequences.append (seq.getName () + "\t" + startRes + "\t" + endRes + "\t" + seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1) + "\n");
-}
-});
-Clazz.defineMethod (c$, "pasteNew_actionPerformed",
-function () {
-this.paste (true);
-});
-Clazz.defineMethod (c$, "pasteThis_actionPerformed",
-function () {
-this.paste (false);
-});
-Clazz.defineMethod (c$, "paste",
-function (newAlignment) {
-try {
-if (jalview.appletgui.AlignFrame.copiedSequences == null) {
-return;
-}var st = new java.util.StringTokenizer (jalview.appletgui.AlignFrame.copiedSequences.toString ());
-var seqs = new java.util.Vector ();
-while (st.hasMoreElements ()) {
-var name = st.nextToken ();
-var start = Integer.parseInt (st.nextToken ());
-var end = Integer.parseInt (st.nextToken ());
-seqs.addElement ( new jalview.datamodel.Sequence (name, st.nextToken (), start, end));
-}
-var newSeqs = new Array (seqs.size ());
-for (var i = 0; i < seqs.size (); i++) {
-newSeqs[i] = seqs.elementAt (i);
-}
-if (newAlignment) {
-var newtitle = jalview.util.MessageManager.getString ("label.copied_sequences");
-if (this.getTitle ().startsWith (jalview.util.MessageManager.getString ("label.copied_sequences"))) {
-newtitle = this.getTitle ();
-} else {
-newtitle = newtitle.concat (jalview.util.MessageManager.formatMessage ("label.from_msname", Clazz.newArray (-1, [this.getTitle ()])));
-}var af = new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (newSeqs), this.viewport.applet, newtitle, false);
-if (jalview.appletgui.AlignFrame.copiedHiddenColumns != null) {
-for (var i = 0; i < jalview.appletgui.AlignFrame.copiedHiddenColumns.size (); i++) {
-var region = jalview.appletgui.AlignFrame.copiedHiddenColumns.elementAt (i);
-af.viewport.hideColumns (region[0], region[1]);
-}
-}jalview.bin.JalviewLite.addFrame (af, newtitle, this.frameWidth, this.frameHeight);
-} else {
-this.addSequences (newSeqs);
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-}, "~B");
-Clazz.defineMethod (c$, "addSequences",
-function (seqs) {
-for (var i = 0; i < seqs.length; i++) {
-this.viewport.getAlignment ().addSequence (seqs[i]);
-}
-this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.add_sequences"), jalview.commands.EditCommand.Action.PASTE, seqs, 0, this.viewport.getAlignment ().getWidth (), this.viewport.getAlignment ()));
-this.viewport.setEndSeq (this.viewport.getAlignment ().getHeight ());
-this.viewport.getAlignment ().getWidth ();
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
-}, "~A");
-Clazz.defineMethod (c$, "cut_actionPerformed",
-function () {
-this.copy_actionPerformed ();
-this.delete_actionPerformed ();
-});
-Clazz.defineMethod (c$, "delete_actionPerformed",
-function () {
-var sg = this.viewport.getSelectionGroup ();
-if (sg == null) {
-return;
-}var seqs = new java.util.Vector ();
-var seq;
-for (var i = 0; i < sg.getSize (); i++) {
-seq = sg.getSequenceAt (i);
-seqs.addElement (seq);
-}
-if (sg.getSize () == this.viewport.getAlignment ().getHeight ()) {
-this.viewport.getColumnSelection ().removeElements (sg.getStartRes (), sg.getEndRes () + 1);
-}var cut = new Array (seqs.size ());
-for (var i = 0; i < seqs.size (); i++) {
-cut[i] = seqs.elementAt (i);
-}
-this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.cut_sequences"), jalview.commands.EditCommand.Action.CUT, cut, sg.getStartRes (), sg.getEndRes () - sg.getStartRes () + 1, this.viewport.getAlignment ()));
-this.viewport.setSelectionGroup (null);
-this.viewport.getAlignment ().deleteGroup (sg);
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
-if (this.viewport.getAlignment ().getHeight () < 1) {
-this.setVisible (false);
-}this.viewport.sendSelection ();
-});
-Clazz.defineMethod (c$, "showGroupConsensus_actionPerformed",
-function () {
-this.viewport.setShowGroupConsensus (this.showGroupConsensus.getState ());
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
-});
-Clazz.defineMethod (c$, "showGroupConservation_actionPerformed",
-function () {
-this.viewport.setShowGroupConservation (this.showGroupConservation.getState ());
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
-});
-Clazz.defineMethod (c$, "showConsensusHistogram_actionPerformed",
-function () {
-this.viewport.setShowConsensusHistogram (this.showConsensusHistogram.getState ());
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
-});
-Clazz.defineMethod (c$, "showSequenceLogo_actionPerformed",
-function () {
-this.viewport.setShowSequenceLogo (this.showSequenceLogo.getState ());
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
-});
-Clazz.defineMethod (c$, "normSequenceLogo_actionPerformed",
-function () {
-this.showSequenceLogo.setState (true);
-this.viewport.setShowSequenceLogo (true);
-this.viewport.setNormaliseSequenceLogo (this.normSequenceLogo.getState ());
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
-});
-Clazz.defineMethod (c$, "applyAutoAnnotationSettings_actionPerformed",
-function () {
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
-});
-Clazz.defineMethod (c$, "makeGrpsFromSelection_actionPerformed",
-function () {
-if (this.avc.makeGroupsFromSelection ()) {
-jalview.appletgui.PaintRefresher.Refresh (this, this.viewport.getSequenceSetId ());
-this.alignPanel.updateAnnotation ();
-this.alignPanel.paintAlignment (true);
-}});
-Clazz.defineMethod (c$, "createGroup_actionPerformed",
-function () {
-this.avc.createGroup ();
-});
-Clazz.defineMethod (c$, "unGroup_actionPerformed",
-function () {
-if (this.avc.unGroup ()) {
-this.alignPanel.alignmentChanged ();
-}});
-Clazz.defineMethod (c$, "deleteGroups_actionPerformed",
-function () {
-if (this.avc.deleteGroups ()) {
-this.alignPanel.alignmentChanged ();
-}});
-Clazz.defineMethod (c$, "selectAllSequenceMenuItem_actionPerformed",
-function () {
-var sg = new jalview.datamodel.SequenceGroup ();
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
-sg.addSequence (this.viewport.getAlignment ().getSequenceAt (i), false);
-}
-sg.setEndRes (this.viewport.getAlignment ().getWidth () - 1);
-this.viewport.setSelectionGroup (sg);
-this.alignPanel.paintAlignment (true);
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
-this.viewport.sendSelection ();
-});
-Clazz.defineMethod (c$, "deselectAllSequenceMenuItem_actionPerformed",
-function () {
-if (this.viewport.cursorMode) {
-this.alignPanel.seqPanel.keyboardNo1 = null;
-this.alignPanel.seqPanel.keyboardNo2 = null;
-}this.viewport.setSelectionGroup (null);
-this.viewport.getColumnSelection ().clear ();
-this.viewport.setSelectionGroup (null);
-this.alignPanel.idPanel.idCanvas.searchResults = null;
-this.alignPanel.seqPanel.seqCanvas.highlightSearchResults (null);
-this.alignPanel.paintAlignment (true);
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
-this.viewport.sendSelection ();
-});
-Clazz.defineMethod (c$, "invertSequenceMenuItem_actionPerformed",
-function () {
-var sg = this.viewport.getSelectionGroup ();
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
-sg.addOrRemove (this.viewport.getAlignment ().getSequenceAt (i), false);
-}
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
-this.viewport.sendSelection ();
-});
-Clazz.defineMethod (c$, "invertColSel_actionPerformed",
-function () {
-this.viewport.invertColumnSelection ();
-this.alignPanel.paintAlignment (true);
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
-this.viewport.sendSelection ();
-});
-Clazz.defineMethod (c$, "trimAlignment",
-function (trimLeft) {
-var colSel = this.viewport.getColumnSelection ();
-var column;
-if (colSel.size () > 0) {
-if (trimLeft) {
-column = colSel.getMin ();
-} else {
-column = colSel.getMax ();
-}var seqs;
-if (this.viewport.getSelectionGroup () != null) {
-seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
-} else {
-seqs = this.viewport.getAlignment ().getSequencesArray ();
-}var trimRegion;
-if (trimLeft) {
-trimRegion = new jalview.commands.TrimRegionCommand ("Remove Left", jalview.commands.TrimRegionCommand.TRIM_LEFT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
-this.viewport.setStartRes (0);
-} else {
-trimRegion = new jalview.commands.TrimRegionCommand ("Remove Right", jalview.commands.TrimRegionCommand.TRIM_RIGHT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
-}this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_columns", Clazz.newArray (-1, [Integer.$valueOf (trimRegion.getSize ()).toString ()])));
-this.addHistoryItem (trimRegion);
-for (var sg, $sg = this.viewport.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-if ((trimLeft && !sg.adjustForRemoveLeft (column)) || (!trimLeft && !sg.adjustForRemoveRight (column))) {
-this.viewport.getAlignment ().deleteGroup (sg);
-}}
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
-}}, "~B");
-Clazz.defineMethod (c$, "removeGappedColumnMenuItem_actionPerformed",
-function () {
-var start = 0;
-var end = this.viewport.getAlignment ().getWidth () - 1;
-var seqs;
-if (this.viewport.getSelectionGroup () != null) {
-seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
-start = this.viewport.getSelectionGroup ().getStartRes ();
-end = this.viewport.getSelectionGroup ().getEndRes ();
-} else {
-seqs = this.viewport.getAlignment ().getSequencesArray ();
-}var removeGapCols = new jalview.commands.RemoveGapColCommand ("Remove Gapped Columns", seqs, start, end, this.viewport.getAlignment ());
-this.addHistoryItem (removeGapCols);
-this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_empty_columns", Clazz.newArray (-1, [Integer.$valueOf (removeGapCols.getSize ()).toString ()])));
-var seq = this.viewport.getAlignment ().getSequenceAt (0);
-var startRes = seq.findPosition (this.viewport.startRes);
-this.viewport.setStartRes (seq.findIndex (startRes) - 1);
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
-});
-Clazz.defineMethod (c$, "removeAllGapsMenuItem_actionPerformed",
-function () {
-var start = 0;
-var end = this.viewport.getAlignment ().getWidth () - 1;
-var seqs;
-if (this.viewport.getSelectionGroup () != null) {
-seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
-start = this.viewport.getSelectionGroup ().getStartRes ();
-end = this.viewport.getSelectionGroup ().getEndRes ();
-} else {
-seqs = this.viewport.getAlignment ().getSequencesArray ();
-}var seq = this.viewport.getAlignment ().getSequenceAt (0);
-var startRes = seq.findPosition (this.viewport.startRes);
-this.addHistoryItem ( new jalview.commands.RemoveGapsCommand ("Remove Gaps", seqs, start, end, this.viewport.getAlignment ()));
-this.viewport.setStartRes (seq.findIndex (startRes) - 1);
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
-});
-Clazz.defineMethod (c$, "findMenuItem_actionPerformed",
-function () {
- new jalview.appletgui.Finder (this.alignPanel);
-});
-Clazz.defineMethod (c$, "newView",
-function (viewtitle) {
-var newal;
-if (this.viewport.hasHiddenRows ()) {
-newal = new jalview.datamodel.Alignment (this.viewport.getAlignment ().getHiddenSequences ().getFullAlignment ().getSequencesArray ());
-} else {
-newal = new jalview.datamodel.Alignment (this.viewport.getAlignment ().getSequencesArray ());
-}if (this.viewport.getAlignment ().getAlignmentAnnotation () != null) {
-for (var i = 0; i < this.viewport.getAlignment ().getAlignmentAnnotation ().length; i++) {
-if (!this.viewport.getAlignment ().getAlignmentAnnotation ()[i].autoCalculated) {
-newal.addAnnotation (this.viewport.getAlignment ().getAlignmentAnnotation ()[i]);
-}}
-}var newaf = new jalview.appletgui.AlignFrame (newal, this.viewport.applet, "", false);
-newaf.viewport.setSequenceSetId (this.alignPanel.av.getSequenceSetId ());
-jalview.appletgui.PaintRefresher.Register (this.alignPanel, this.alignPanel.av.getSequenceSetId ());
-jalview.appletgui.PaintRefresher.Register (newaf.alignPanel, newaf.alignPanel.av.getSequenceSetId ());
-jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.idPanel.idCanvas, newaf.alignPanel.av.getSequenceSetId ());
-jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.seqPanel.seqCanvas, newaf.alignPanel.av.getSequenceSetId ());
-var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
-var viewSize = -1;
-for (var i = 0; i < comps.size (); i++) {
-if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
-viewSize++;
-}}
-var title = String.instantialize (this.getTitle ());
-if (viewtitle != null) {
-title = viewtitle + " ( " + title + ")";
-} else {
-if (title.indexOf ("(View") > -1) {
-title = title.substring (0, title.indexOf ("(View"));
-}title += "(View " + viewSize + ")";
-}newaf.setTitle (title.toString ());
-newaf.viewport.setHistoryList (this.viewport.getHistoryList ());
-newaf.viewport.setRedoList (this.viewport.getRedoList ());
-return newaf;
-}, "~S");
-Clazz.defineMethod (c$, "getFeatureGroups",
-function () {
-var fr = null;
-if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
-var gps = fr.getFeatureGroups ();
-var _gps = gps.toArray ( new Array (gps.size ()));
-return _gps;
-}return null;
-});
-Clazz.defineMethod (c$, "getFeatureGroupsOfState",
-function (visible) {
-var fr = null;
-if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
-var gps = fr.getGroups (visible);
-var _gps = gps.toArray ( new Array (gps.size ()));
-return _gps;
-}return null;
-}, "~B");
-Clazz.defineMethod (c$, "setFeatureGroupState",
-function (groups, state) {
-var fr = null;
-this.sequenceFeatures.setState (true);
-this.viewport.setShowSequenceFeatures (true);
-if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
-fr.setGroupVisibility (java.util.Arrays.asList (groups), state);
-this.alignPanel.seqPanel.seqCanvas.repaint ();
-if (this.alignPanel.overviewPanel != null) {
-this.alignPanel.overviewPanel.updateOverviewImage ();
-}}}, "~A,~B");
-Clazz.defineMethod (c$, "seqLimits_itemStateChanged",
-function () {
-this.viewport.setShowJVSuffix (this.seqLimits.getState ());
-this.alignPanel.fontChanged ();
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "colourTextMenuItem_actionPerformed",
-function () {
-this.viewport.setColourText (this.colourTextMenuItem.getState ());
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "displayNonconservedMenuItem_actionPerformed",
-function () {
-this.viewport.setShowUnconserved (this.displayNonconservedMenuItem.getState ());
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "wrapMenuItem_actionPerformed",
-function () {
-this.viewport.setWrapAlignment (this.wrapMenuItem.getState ());
-this.alignPanel.setWrapAlignment (this.wrapMenuItem.getState ());
-this.scaleAbove.setEnabled (this.wrapMenuItem.getState ());
-this.scaleLeft.setEnabled (this.wrapMenuItem.getState ());
-this.scaleRight.setEnabled (this.wrapMenuItem.getState ());
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "overviewMenuItem_actionPerformed",
-function () {
-if (this.alignPanel.overviewPanel != null) {
-return;
-}var frame = new awt2swing.Frame ();
-var overview = new jalview.appletgui.OverviewPanel (this.alignPanel);
-frame.add (overview);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.overview_params", Clazz.newArray (-1, [this.getTitle ()])), overview.getPreferredSize ().width, overview.getPreferredSize ().height + 50);
-frame.pack ();
-var ap = this.alignPanel;
-frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1, this, Clazz.cloneFinals ("ap", ap))));
-this.alignPanel.setOverviewPanel (overview);
-});
-Clazz.overrideMethod (c$, "changeColour",
-function (cs) {
-var threshold = 0;
-if (cs != null) {
-if (this.viewport.getAbovePIDThreshold ()) {
-this.viewport.setThreshold (jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, cs, "Background"));
-}if (this.viewport.getConservationSelected ()) {
-cs.setConservationApplied (true);
-this.viewport.setIncrement (jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, cs, "Background"));
-} else {
-cs.setConservationApplied (false);
-}}this.viewport.setGlobalColourScheme (cs);
-if (this.alignPanel.getOverviewPanel () != null) {
-this.alignPanel.getOverviewPanel ().updateOverviewImage ();
-}jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.viewport.applet).sequenceColoursChanged (this.alignPanel);
-this.alignPanel.paintAlignment (true);
-}, "jalview.schemes.ColourSchemeI");
-Clazz.defineMethod (c$, "modifyPID_actionPerformed",
-function () {
-if (this.viewport.getAbovePIDThreshold () && this.viewport.getGlobalColourScheme () != null) {
-jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
-jalview.appletgui.SliderPanel.showPIDSlider ();
-}});
-Clazz.defineMethod (c$, "modifyConservation_actionPerformed",
-function () {
-if (this.viewport.getConservationSelected () && this.viewport.getGlobalColourScheme () != null) {
-jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
-jalview.appletgui.SliderPanel.showConservationSlider ();
-}});
-Clazz.defineMethod (c$, "conservationMenuItem_actionPerformed",
-function () {
-this.viewport.setConservationSelected (this.conservationMenuItem.getState ());
-this.viewport.setAbovePIDThreshold (false);
-this.abovePIDThreshold.setState (false);
-this.changeColour (this.viewport.getGlobalColourScheme ());
-this.modifyConservation_actionPerformed ();
-});
-Clazz.defineMethod (c$, "abovePIDThreshold_actionPerformed",
-function () {
-this.viewport.setAbovePIDThreshold (this.abovePIDThreshold.getState ());
-this.conservationMenuItem.setState (false);
-this.viewport.setConservationSelected (false);
-this.changeColour (this.viewport.getGlobalColourScheme ());
-this.modifyPID_actionPerformed ();
-});
-Clazz.defineMethod (c$, "sortPairwiseMenuItem_actionPerformed",
-function () {
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
-jalview.analysis.AlignmentSorter.sortByPID (this.viewport.getAlignment (), this.viewport.getAlignment ().getSequenceAt (0), null);
-this.addHistoryItem ( new jalview.commands.OrderCommand ("Pairwise Sort", oldOrder, this.viewport.getAlignment ()));
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "sortIDMenuItem_actionPerformed",
-function () {
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
-jalview.analysis.AlignmentSorter.sortByID (this.viewport.getAlignment ());
-this.addHistoryItem ( new jalview.commands.OrderCommand ("ID Sort", oldOrder, this.viewport.getAlignment ()));
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "sortLengthMenuItem_actionPerformed",
-function () {
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
-jalview.analysis.AlignmentSorter.sortByLength (this.viewport.getAlignment ());
-this.addHistoryItem ( new jalview.commands.OrderCommand ("Length Sort", oldOrder, this.viewport.getAlignment ()));
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "sortGroupMenuItem_actionPerformed",
-function () {
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
-jalview.analysis.AlignmentSorter.sortByGroup (this.viewport.getAlignment ());
-this.addHistoryItem ( new jalview.commands.OrderCommand ("Group Sort", oldOrder, this.viewport.getAlignment ()));
-this.alignPanel.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "removeRedundancyMenuItem_actionPerformed",
-function () {
- new jalview.appletgui.RedundancyPanel (this.alignPanel);
-});
-Clazz.defineMethod (c$, "pairwiseAlignmentMenuItem_actionPerformed",
-function () {
-if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) {
-var frame = new awt2swing.Frame ();
-frame.add ( new jalview.appletgui.PairwiseAlignPanel (this.alignPanel));
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.pairwise_alignment"), 600, 500);
-}});
-Clazz.defineMethod (c$, "PCAMenuItem_actionPerformed",
-function () {
-if (!this.viewport.getAlignment ().isAligned (false)) {
-var current;
-var Width = this.viewport.getAlignment ().getWidth ();
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
-current = this.viewport.getAlignment ().getSequenceAt (i);
-if (current.getLength () < Width) {
-current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
-}}
-this.alignPanel.paintAlignment (true);
-}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () < 4 && this.viewport.getSelectionGroup ().getSize () > 0) || this.viewport.getAlignment ().getHeight () < 4) {
-return;
-}try {
- new jalview.appletgui.PCAPanel (this.viewport);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, OutOfMemoryError)) {
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "averageDistanceTreeMenuItem_actionPerformed",
-function () {
-this.NewTreePanel ("AV", "PID", "Average distance tree using PID");
-});
-Clazz.defineMethod (c$, "neighbourTreeMenuItem_actionPerformed",
-function () {
-this.NewTreePanel ("NJ", "PID", "Neighbour joining tree using PID");
-});
-Clazz.defineMethod (c$, "njTreeBlosumMenuItem_actionPerformed",
-function () {
-this.NewTreePanel ("NJ", "BL", "Neighbour joining tree using BLOSUM62");
-});
-Clazz.defineMethod (c$, "avTreeBlosumMenuItem_actionPerformed",
-function () {
-this.NewTreePanel ("AV", "BL", "Average distance tree using BLOSUM62");
-});
-Clazz.defineMethod (c$, "NewTreePanel",
-function (type, pwType, title) {
-if (!this.viewport.getAlignment ().isAligned (false)) {
-var current;
-var Width = this.viewport.getAlignment ().getWidth ();
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
-current = this.viewport.getAlignment ().getSequenceAt (i);
-if (current.getLength () < Width) {
-current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
-}}
-this.alignPanel.paintAlignment (true);
-}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) || (this.viewport.getAlignment ().getHeight () > 1)) {
-var tp = new jalview.appletgui.TreePanel (this.alignPanel, type, pwType);
-this.addTreeMenuItem (tp, title);
-jalview.bin.JalviewLite.addFrame (tp, title, 600, 500);
-}}, "~S,~S,~S");
-Clazz.defineMethod (c$, "loadTree_actionPerformed",
-function () {
-var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
-cap.setText (jalview.util.MessageManager.getString ("label.paste_newick_tree_file"));
-cap.setTreeImport ();
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.paste_newick_file"), 400, 300);
-});
-Clazz.defineMethod (c$, "loadTree",
-function (tree, treeFile) {
-var tp = new jalview.appletgui.TreePanel (this.alignPanel, treeFile, jalview.util.MessageManager.getString ("label.load_tree_from_file"), tree);
-jalview.bin.JalviewLite.addFrame (tp, treeFile, 600, 500);
-this.addTreeMenuItem (tp, treeFile);
-}, "jalview.io.NewickFile,~S");
-Clazz.defineMethod (c$, "sortByTree",
-function (treePanel, title) {
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
-jalview.analysis.AlignmentSorter.sortByTree (this.viewport.getAlignment (), treePanel.getTree ());
-this.addHistoryItem ( new jalview.commands.OrderCommand (jalview.util.MessageManager.formatMessage ("label.order_by_params", Clazz.newArray (-1, [title])), oldOrder, this.viewport.getAlignment ()));
-this.alignPanel.paintAlignment (true);
-}, "jalview.appletgui.TreePanel,~S");
-Clazz.defineMethod (c$, "addTreeMenuItem",
-function (treePanel, title) {
-var item = new awt2swing.MenuItem (title);
-this.sortByTreeMenu.add (item);
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$2") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$2, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title))));
-treePanel.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$3") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$3, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title, "item", item))));
-}, "jalview.appletgui.TreePanel,~S");
-Clazz.defineMethod (c$, "sortBy",
-function (alorder, undoname) {
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
-if ((this.viewport.applet, jalview.bin.JalviewLite).debug) {
-System.err.println ("Sorting " + alorder.getOrder ().size () + " in alignment '" + this.getTitle () + "'");
-}jalview.analysis.AlignmentSorter.sortBy (this.viewport.getAlignment (), alorder);
-if (undoname != null) {
-this.addHistoryItem ( new jalview.commands.OrderCommand (undoname, oldOrder, this.viewport.getAlignment ()));
-}this.alignPanel.paintAlignment (true);
-return true;
-}, "jalview.datamodel.AlignmentOrder,~S");
-Clazz.defineMethod (c$, "documentation_actionPerformed",
-function () {
-this.alignPanel.av.applet.openJalviewHelpUrl ();
-});
-Clazz.defineMethod (c$, "about_actionPerformed",
-function () {
-if (!Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1AboutPanel")) {
-jalview.appletgui.AlignFrame.$AlignFrame$1AboutPanel$ ();
-}
-var frame = new awt2swing.Frame ();
-frame.add (Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1AboutPanel, this, null, jalview.bin.JalviewLite.getVersion (), jalview.bin.JalviewLite.getBuildDate ()));
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.jalview"), 580, 220);
-});
-Clazz.defineMethod (c$, "showURL",
-function (url, target) {
-if (this.viewport.applet == null) {
-System.out.println ("Not running as applet - no browser available.");
-} else {
-this.viewport.applet.showURL (url, target);
-}}, "~S,~S");
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setMenuBar (this.alignFrameMenuBar);
-this.inputText.setLabel (jalview.util.MessageManager.getString ("label.input_from_textbox"));
-this.inputText.addActionListener (this);
-var outputTextboxMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("label.out_to_textbox"));
-for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {
-var item = new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$4") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$4, this, null)));
-outputTextboxMenu.add (item);
-}
-this.closeMenuItem.addActionListener (this);
-this.loadApplication.addActionListener (this);
-this.$loadTree.addActionListener (this);
-this.$loadAnnotations.addActionListener (this);
-this.$outputFeatures.addActionListener (this);
-this.$outputAnnotations.addActionListener (this);
-this.undoMenuItem.setEnabled (false);
-this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
-this.undoMenuItem.addActionListener (this);
-this.redoMenuItem.setEnabled (false);
-this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
-this.redoMenuItem.addActionListener (this);
-this.copy.setLabel (jalview.util.MessageManager.getString ("action.copy"));
-this.copy.addActionListener (this);
-this.cut.setLabel (jalview.util.MessageManager.getString ("action.cut"));
-this.cut.addActionListener (this);
-this.$delete.setLabel (jalview.util.MessageManager.getString ("action.delete"));
-this.$delete.addActionListener (this);
-this.pasteMenu.setLabel (jalview.util.MessageManager.getString ("action.paste"));
-this.pasteNew.setLabel (jalview.util.MessageManager.getString ("label.to_new_alignment"));
-this.pasteNew.addActionListener (this);
-this.pasteThis.setLabel (jalview.util.MessageManager.getString ("label.to_this_alignment"));
-this.pasteThis.addActionListener (this);
-this.remove2LeftMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_left"));
-this.remove2LeftMenuItem.addActionListener (this);
-this.remove2RightMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_right"));
-this.remove2RightMenuItem.addActionListener (this);
-this.removeGappedColumnMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_empty_columns"));
-this.removeGappedColumnMenuItem.addActionListener (this);
-this.removeAllGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_all_gaps"));
-this.removeAllGapsMenuItem.addActionListener (this);
-this.removeRedundancyMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_redundancy").concat ("..."));
-this.removeRedundancyMenuItem.addActionListener (this);
-this.findMenuItem.setLabel (jalview.util.MessageManager.getString ("action.find"));
-this.findMenuItem.addActionListener (this);
-this.selectAllSequenceMenuItem.addActionListener (this);
-this.deselectAllSequenceMenuItem.addActionListener (this);
-this.invertSequenceMenuItem.setLabel (jalview.util.MessageManager.getString ("action.invert_sequence_selection"));
-this.invertSequenceMenuItem.addActionListener (this);
-this.invertColSel.setLabel (jalview.util.MessageManager.getString ("action.invert_column_selection"));
-this.invertColSel.addActionListener (this);
-this.deleteGroups.setLabel (jalview.util.MessageManager.getString ("action.undefine_groups"));
-this.deleteGroups.addActionListener (this);
-this.grpsFromSelection.setLabel (jalview.util.MessageManager.getString ("action.make_groups_selection"));
-this.grpsFromSelection.addActionListener (this);
-this.createGroup.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
-this.unGroup.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
-this.annotationColumnSelection.setLabel ("Select by Annotation");
-this.annotationColumnSelection.addActionListener (this);
-this.$newView.setLabel (jalview.util.MessageManager.getString ("action.new_view"));
-this.$newView.addActionListener (this);
-var showMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.show"));
-this.showColumns.setLabel (jalview.util.MessageManager.getString ("label.all_columns"));
-this.showSeqs.setLabel (jalview.util.MessageManager.getString ("label.all_sequences"));
-var hideMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.hide"));
-this.hideColumns.setLabel (jalview.util.MessageManager.getString ("label.selected_columns"));
-this.hideSequences.setLabel (jalview.util.MessageManager.getString ("label.selected_sequences"));
-this.hideAllButSelection.setLabel (jalview.util.MessageManager.getString ("label.all_but_selected_region"));
-this.hideAllSelection.setLabel (jalview.util.MessageManager.getString ("label.selected_region"));
-this.showAllHidden.setLabel (jalview.util.MessageManager.getString ("label.all_sequences_columns"));
-this.showColumns.addActionListener (this);
-this.showSeqs.addActionListener (this);
-this.hideColumns.addActionListener (this);
-this.hideSequences.addActionListener (this);
-this.hideAllButSelection.addActionListener (this);
-this.hideAllSelection.addActionListener (this);
-this.showAllHidden.addActionListener (this);
-this.featureSettings.setLabel (jalview.util.MessageManager.getString ("label.feature_settings"));
-this.featureSettings.addActionListener (this);
-this.sequenceFeatures.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_features"));
-this.sequenceFeatures.addItemListener (this);
-this.sequenceFeatures.setState (false);
-this.followMouseOverFlag.setLabel (jalview.util.MessageManager.getString ("label.automatic_scrolling"));
-this.followMouseOverFlag.addItemListener (this);
-this.alProperties.addActionListener (this);
-this.overviewMenuItem.setLabel (jalview.util.MessageManager.getString ("label.overview_window"));
-this.overviewMenuItem.addActionListener (this);
-this.annotationPanelMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_annotations"));
-this.annotationPanelMenuItem.addItemListener (this);
-this.showGroupConsensus.setLabel (jalview.util.MessageManager.getString ("label.group_consensus"));
-this.showGroupConservation.setLabel (jalview.util.MessageManager.getString ("label.group_conservation"));
-this.showConsensusHistogram.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_histogram"));
-this.showSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_logo"));
-this.normSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.norm_consensus_logo"));
-this.applyAutoAnnotationSettings.setLabel (jalview.util.MessageManager.getString ("label.apply_all_groups"));
-this.applyAutoAnnotationSettings.setState (true);
-var autoAnnMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("label.autocalculated_annotation"));
-this.showGroupConsensus.addItemListener (this);
-this.showGroupConservation.addItemListener (this);
-this.showConsensusHistogram.addItemListener (this);
-this.showSequenceLogo.addItemListener (this);
-this.normSequenceLogo.addItemListener (this);
-this.applyAutoAnnotationSettings.addItemListener (this);
-this.showAlignmentAnnotations = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_al_annotations"));
-this.showSequenceAnnotations = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_seq_annotations"));
-this.sortAnnBySequence = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_sequence"));
-this.sortAnnByLabel = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_label"));
-this.showAutoFirst = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_first"));
-this.showAutoLast = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_last"));
-this.showAlignmentAnnotations.addItemListener (this);
-this.showSequenceAnnotations.addItemListener (this);
-this.sortAnnBySequence.addItemListener (this);
-this.sortAnnByLabel.addItemListener (this);
-this.showAutoFirst.addItemListener (this);
-this.showAutoLast.addItemListener (this);
-this.$font.setLabel (jalview.util.MessageManager.getString ("action.font"));
-this.$font.addActionListener (this);
-this.scaleAbove.setLabel (jalview.util.MessageManager.getString ("action.scale_above"));
-this.scaleAbove.setState (true);
-this.scaleAbove.setEnabled (false);
-this.scaleAbove.addItemListener (this);
-this.scaleLeft.setEnabled (false);
-this.scaleLeft.setState (true);
-this.scaleLeft.setLabel (jalview.util.MessageManager.getString ("action.scale_left"));
-this.scaleLeft.addItemListener (this);
-this.scaleRight.setEnabled (false);
-this.scaleRight.setState (true);
-this.scaleRight.setLabel (jalview.util.MessageManager.getString ("action.scale_right"));
-this.scaleRight.addItemListener (this);
-this.viewBoxesMenuItem.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
-this.viewBoxesMenuItem.setState (true);
-this.viewBoxesMenuItem.addItemListener (this);
-this.viewTextMenuItem.setLabel (jalview.util.MessageManager.getString ("action.text"));
-this.viewTextMenuItem.setState (true);
-this.viewTextMenuItem.addItemListener (this);
-this.colourTextMenuItem.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
-this.colourTextMenuItem.addItemListener (this);
-this.displayNonconservedMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
-this.displayNonconservedMenuItem.addItemListener (this);
-this.wrapMenuItem.setLabel (jalview.util.MessageManager.getString ("action.wrap"));
-this.wrapMenuItem.addItemListener (this);
-this.renderGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.show_gaps"));
-this.renderGapsMenuItem.setState (true);
-this.renderGapsMenuItem.addItemListener (this);
-this.centreColumnLabelFlag.setLabel (jalview.util.MessageManager.getString ("label.centre_column_labels"));
-this.centreColumnLabelFlag.addItemListener (this);
-this.seqLimits.setState (true);
-this.seqLimits.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_limits"));
-this.seqLimits.addItemListener (this);
-this.applyToAllGroups.setLabel (jalview.util.MessageManager.getString ("label.apply_colour_to_all_groups"));
-this.applyToAllGroups.setState (true);
-this.applyToAllGroups.addItemListener (this);
-this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx"));
-this.clustalColour.addActionListener (this);
-this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
-this.zappoColour.addActionListener (this);
-this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
-this.taylorColour.addActionListener (this);
-this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
-this.hydrophobicityColour.addActionListener (this);
-this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
-this.helixColour.addActionListener (this);
-this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
-this.strandColour.addActionListener (this);
-this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
-this.turnColour.addActionListener (this);
-this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
-this.buriedColour.addActionListener (this);
-this.purinePyrimidineColour.setLabel (jalview.util.MessageManager.getString ("label.purine_pyrimidine"));
-this.purinePyrimidineColour.addActionListener (this);
-this.RNAInteractionColour.setLabel (jalview.util.MessageManager.getString ("label.rna_interaction"));
-this.RNAInteractionColour.addActionListener (this);
-this.RNAHelixColour.setLabel (jalview.util.MessageManager.getString ("action.by_rna_helixes"));
-this.RNAHelixColour.addActionListener (this);
-this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
-this.userDefinedColour.addActionListener (this);
-this.PIDColour.setLabel (jalview.util.MessageManager.getString ("label.percentage_identity"));
-this.PIDColour.addActionListener (this);
-this.BLOSUM62Colour.setLabel (jalview.util.MessageManager.getString ("label.blosum62_score"));
-this.BLOSUM62Colour.addActionListener (this);
-this.tcoffeeColour.setLabel (jalview.util.MessageManager.getString ("label.tcoffee_scores"));
-this.tcoffeeColour.setEnabled (false);
-this.tcoffeeColour.addActionListener (this);
-this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_conservation"));
-this.conservationMenuItem.addItemListener (this);
-this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
-this.noColourmenuItem.addActionListener (this);
-this.abovePIDThreshold.setLabel (jalview.util.MessageManager.getString ("label.above_identity_threshold"));
-this.abovePIDThreshold.addItemListener (this);
-this.nucleotideColour.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
-this.nucleotideColour.addActionListener (this);
-this.modifyPID.setLabel (jalview.util.MessageManager.getString ("label.modify_identity_thereshold"));
-this.modifyPID.addActionListener (this);
-this.modifyConservation.setLabel (jalview.util.MessageManager.getString ("label.modify_conservation_thereshold"));
-this.modifyConservation.addActionListener (this);
-this.annotationColour.setLabel (jalview.util.MessageManager.getString ("action.by_annotation"));
-this.annotationColour.addActionListener (this);
-this.sortPairwiseMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_pairwise_id"));
-this.sortPairwiseMenuItem.addActionListener (this);
-this.sortIDMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_id"));
-this.sortIDMenuItem.addActionListener (this);
-this.sortLengthMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_length"));
-this.sortLengthMenuItem.addActionListener (this);
-this.sortGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_group"));
-this.sortGroupMenuItem.addActionListener (this);
-this.pairwiseAlignmentMenuItem.setLabel (jalview.util.MessageManager.getString ("action.pairwise_alignment"));
-this.pairwiseAlignmentMenuItem.addActionListener (this);
-this.PCAMenuItem.setLabel (jalview.util.MessageManager.getString ("label.principal_component_analysis"));
-this.PCAMenuItem.addActionListener (this);
-this.autoCalculate = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.autocalculate_consensus"), true);
-this.averageDistanceTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_identity"));
-this.averageDistanceTreeMenuItem.addActionListener (this);
-this.neighbourTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_joining_identity"));
-this.neighbourTreeMenuItem.addActionListener (this);
-this.avDistanceTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_bloslum62"));
-this.avDistanceTreeBlosumMenuItem.addActionListener (this);
-this.njTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_blosum62"));
-this.njTreeBlosumMenuItem.addActionListener (this);
-this.sortByTreeMenu.setLabel (jalview.util.MessageManager.getString ("action.by_tree_order"));
-var sortMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.sort"));
-var calculateTreeMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate_tree"));
-this.autoCalculate.addItemListener (this);
-this.$sortByTree.addItemListener (this);
-var helpMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.help"));
-this.documentation.setLabel (jalview.util.MessageManager.getString ("label.documentation"));
-this.documentation.addActionListener (this);
-this.about.setLabel (jalview.util.MessageManager.getString ("label.about"));
-this.about.addActionListener (this);
-this.alignFrameMenuBar.add (this.fileMenu);
-var editMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));
-this.alignFrameMenuBar.add (editMenu);
-var selectMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.select"));
-this.alignFrameMenuBar.add (selectMenu);
-var viewMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.view"));
-this.alignFrameMenuBar.add (viewMenu);
-var annotationsMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.annotations"));
-this.alignFrameMenuBar.add (annotationsMenu);
-var formatMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.format"));
-this.alignFrameMenuBar.add (formatMenu);
-var colourMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.colour"));
-this.alignFrameMenuBar.add (colourMenu);
-var calculateMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate"));
-this.alignFrameMenuBar.add (calculateMenu);
-this.alignFrameMenuBar.add (helpMenu);
-this.fileMenu.add (this.inputText);
-this.fileMenu.add (this.$loadTree);
-this.fileMenu.add (this.$loadAnnotations);
-this.fileMenu.addSeparator ();
-this.fileMenu.add (outputTextboxMenu);
-this.fileMenu.add (this.$outputFeatures);
-this.fileMenu.add (this.$outputAnnotations);
-if (this.jalviewServletURL != null) {
-this.fileMenu.add (this.loadApplication);
-}this.fileMenu.addSeparator ();
-this.fileMenu.add (this.closeMenuItem);
-editMenu.add (this.undoMenuItem);
-editMenu.add (this.redoMenuItem);
-editMenu.add (this.cut);
-editMenu.add (this.copy);
-this.pasteMenu.add (this.pasteNew);
-this.pasteMenu.add (this.pasteThis);
-editMenu.add (this.pasteMenu);
-editMenu.add (this.$delete);
-editMenu.addSeparator ();
-editMenu.add (this.remove2LeftMenuItem);
-editMenu.add (this.remove2RightMenuItem);
-editMenu.add (this.removeGappedColumnMenuItem);
-editMenu.add (this.removeAllGapsMenuItem);
-editMenu.add (this.removeRedundancyMenuItem);
-selectMenu.add (this.findMenuItem);
-selectMenu.addSeparator ();
-selectMenu.add (this.selectAllSequenceMenuItem);
-selectMenu.add (this.deselectAllSequenceMenuItem);
-selectMenu.add (this.invertSequenceMenuItem);
-selectMenu.add (this.invertColSel);
-selectMenu.add (this.createGroup);
-selectMenu.add (this.unGroup);
-selectMenu.add (this.grpsFromSelection);
-selectMenu.add (this.deleteGroups);
-selectMenu.add (this.annotationColumnSelection);
-viewMenu.add (this.$newView);
-viewMenu.addSeparator ();
-showMenu.add (this.showColumns);
-showMenu.add (this.showSeqs);
-showMenu.add (this.showAllHidden);
-viewMenu.add (showMenu);
-hideMenu.add (this.hideColumns);
-hideMenu.add (this.hideSequences);
-hideMenu.add (this.hideAllSelection);
-hideMenu.add (this.hideAllButSelection);
-viewMenu.add (hideMenu);
-viewMenu.addSeparator ();
-viewMenu.add (this.followMouseOverFlag);
-viewMenu.addSeparator ();
-viewMenu.add (this.sequenceFeatures);
-viewMenu.add (this.featureSettings);
-viewMenu.addSeparator ();
-viewMenu.add (this.alProperties);
-viewMenu.addSeparator ();
-viewMenu.add (this.overviewMenuItem);
-annotationsMenu.add (this.annotationPanelMenuItem);
-annotationsMenu.addSeparator ();
-annotationsMenu.add (this.showAlignmentAnnotations);
-annotationsMenu.add (this.showSequenceAnnotations);
-annotationsMenu.add (this.sortAnnBySequence);
-annotationsMenu.add (this.sortAnnByLabel);
-annotationsMenu.addSeparator ();
-autoAnnMenu.add (this.showAutoFirst);
-autoAnnMenu.add (this.showAutoLast);
-autoAnnMenu.addSeparator ();
-autoAnnMenu.add (this.applyAutoAnnotationSettings);
-autoAnnMenu.add (this.showConsensusHistogram);
-autoAnnMenu.add (this.showSequenceLogo);
-autoAnnMenu.add (this.normSequenceLogo);
-autoAnnMenu.addSeparator ();
-autoAnnMenu.add (this.showGroupConservation);
-autoAnnMenu.add (this.showGroupConsensus);
-annotationsMenu.add (autoAnnMenu);
-formatMenu.add (this.$font);
-formatMenu.add (this.seqLimits);
-formatMenu.add (this.wrapMenuItem);
-formatMenu.add (this.scaleAbove);
-formatMenu.add (this.scaleLeft);
-formatMenu.add (this.scaleRight);
-formatMenu.add (this.viewBoxesMenuItem);
-formatMenu.add (this.viewTextMenuItem);
-formatMenu.add (this.colourTextMenuItem);
-formatMenu.add (this.displayNonconservedMenuItem);
-formatMenu.add (this.renderGapsMenuItem);
-formatMenu.add (this.centreColumnLabelFlag);
-colourMenu.add (this.applyToAllGroups);
-colourMenu.addSeparator ();
-colourMenu.add (this.noColourmenuItem);
-colourMenu.add (this.clustalColour);
-colourMenu.add (this.BLOSUM62Colour);
-colourMenu.add (this.PIDColour);
-colourMenu.add (this.zappoColour);
-colourMenu.add (this.taylorColour);
-colourMenu.add (this.hydrophobicityColour);
-colourMenu.add (this.helixColour);
-colourMenu.add (this.strandColour);
-colourMenu.add (this.turnColour);
-colourMenu.add (this.buriedColour);
-colourMenu.add (this.nucleotideColour);
-colourMenu.add (this.purinePyrimidineColour);
-colourMenu.add (this.tcoffeeColour);
-colourMenu.add (this.userDefinedColour);
-colourMenu.addSeparator ();
-colourMenu.add (this.conservationMenuItem);
-colourMenu.add (this.modifyConservation);
-colourMenu.add (this.abovePIDThreshold);
-colourMenu.add (this.modifyPID);
-colourMenu.add (this.annotationColour);
-colourMenu.add (this.RNAHelixColour);
-sortMenu.add (this.sortIDMenuItem);
-sortMenu.add (this.sortLengthMenuItem);
-sortMenu.add (this.sortByTreeMenu);
-sortMenu.add (this.sortGroupMenuItem);
-sortMenu.add (this.sortPairwiseMenuItem);
-calculateMenu.add (sortMenu);
-calculateTreeMenu.add (this.averageDistanceTreeMenuItem);
-calculateTreeMenu.add (this.neighbourTreeMenuItem);
-calculateTreeMenu.add (this.avDistanceTreeBlosumMenuItem);
-calculateTreeMenu.add (this.njTreeBlosumMenuItem);
-calculateMenu.add (calculateTreeMenu);
-calculateMenu.addSeparator ();
-calculateMenu.add (this.pairwiseAlignmentMenuItem);
-calculateMenu.add (this.PCAMenuItem);
-calculateMenu.add (this.autoCalculate);
-calculateMenu.add (this.$sortByTree);
-helpMenu.add (this.documentation);
-helpMenu.add (this.about);
-this.statusBar.setBackground (java.awt.Color.white);
-this.statusBar.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.setStatus (jalview.util.MessageManager.getString ("label.status_bar"));
-this.add (this.statusBar, "South");
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "setStatus",
-function (string) {
-this.statusBar.setText (string);
-}, "~S");
-Clazz.defineMethod (c$, "createAlignFrameWindow",
-function (reallyEmbedded) {
-if (reallyEmbedded) {
-this.embedAlignFrameInApplet (this.viewport.applet);
-} else {
-if (this.embedMenuIfNeeded (this.alignPanel)) {
-this.alignPanel.setSize (this.getSize ().width, this.getSize ().height - this.statusBar.getHeight ());
-}this.add (this.statusBar, "South");
-this.add (this.alignPanel, "Center");
-jalview.bin.JalviewLite.addFrame (this, this.getTitle (), this.frameWidth, this.frameHeight);
-}}, "~B");
-Clazz.defineMethod (c$, "embedAlignFrameInApplet",
-function (theApplet) {
-this.fileMenu.remove (this.closeMenuItem);
-this.fileMenu.remove (3);
-this.embeddedMenu = this.makeEmbeddedPopupMenu (this.alignFrameMenuBar, false, false);
-theApplet.setLayout ( new java.awt.BorderLayout ());
-theApplet.add (this.embeddedMenu, "North");
-theApplet.add (this.statusBar, "South");
-this.alignPanel.setSize (theApplet.getSize ().width, theApplet.getSize ().height - this.embeddedMenu.getHeight () - this.statusBar.getHeight ());
-theApplet.add (this.alignPanel, "Center");
-var me = this;
-theApplet.addFocusListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$5") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$5, this, Clazz.cloneFinals ("theApplet", theApplet, "me", me))));
-theApplet.validate ();
-}, "jalview.bin.JalviewLite");
-Clazz.defineMethod (c$, "addStructureViewInstance",
-function (jmolviewer, sequenceIds) {
-return null;
-}, "~O,~A");
-Clazz.defineMethod (c$, "addPdbFile",
-function (sequenceId, pdbEntryString, pdbFile) {
-var toaddpdb = this.viewport.getAlignment ().findName (sequenceId);
-var needtoadd = false;
-if (toaddpdb != null) {
-var pdbe = toaddpdb.getPDBId ();
-var pdbentry = null;
-if (pdbe != null && pdbe.size () > 0) {
-for (var pe = 0, peSize = pdbe.size (); pe < peSize; pe++) {
-pdbentry = pdbe.elementAt (pe);
-if (!pdbentry.getId ().equals (pdbEntryString) && !pdbentry.getFile ().equals (pdbFile)) {
-pdbentry = null;
-} else {
-continue;
-}}
-}if (pdbentry == null) {
-pdbentry = new jalview.datamodel.PDBEntry ();
-pdbentry.setId (pdbEntryString);
-pdbentry.setFile (pdbFile);
-needtoadd = true;
-}var protocol = jalview.io.AppletFormatAdapter.resolveProtocol (pdbFile, "PDB");
-if (protocol == null) {
-return false;
-}if (needtoadd) {
-if (pdbentry.getProperty () == null) {
-pdbentry.setProperty ( new java.util.Hashtable ());
-}pdbentry.getProperty ().put ("protocol", protocol);
-toaddpdb.addPDBId (pdbentry);
-this.alignPanel.getStructureSelectionManager ().registerPDBEntry (pdbentry);
-}}return true;
-}, "~S,~S,~S");
-Clazz.defineMethod (c$, "cleanSeqChainArrays",
-($fz = function (seqs, chains) {
-if (seqs != null) {
-var sequences = new java.util.Vector ();
-for (var i = 0; i < seqs.length; i++) {
-if (seqs[i] != null) {
-sequences.addElement ( Clazz.newArray (-1, [seqs[i], (chains != null) ? chains[i] : null]));
-}}
-seqs = new Array (sequences.size ());
-chains = new Array (sequences.size ());
-for (var i = 0, isize = sequences.size (); i < isize; i++) {
-var oj = sequences.elementAt (i);
-seqs[i] = oj[0];
-chains[i] = oj[1];
-}
-}return Clazz.newArray (-1, [seqs, chains]);
-}, $fz.isPrivate = true, $fz), "~A,~A");
-Clazz.defineMethod (c$, "newStructureView",
-function (applet, pdb, seqs, chains, protocol) {
-var sqch = this.cleanSeqChainArrays (seqs, chains);
-seqs = sqch[0];
-chains = sqch[1];
-if (seqs == null || seqs.length == 0) {
-System.err.println ("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");
-}if (protocol == null || protocol.trim ().length == 0 || protocol.equals ("null")) {
-protocol = pdb.getProperty ().get ("protocol");
-if (protocol == null) {
-System.err.println ("Couldn't work out protocol to open structure: " + pdb.getId ());
-return;
-}}if (applet.useXtrnalSviewer) {
-if (jalview.structure.StructureSelectionManager.getStructureSelectionManager (applet).setMapping (seqs, chains, pdb.getFile (), protocol) == null) {
-System.err.println ("Failed to map " + pdb.getFile () + " (" + protocol + ") to any sequences");
-}return;
-}if (applet.isAlignPdbStructures () && applet.jmolAvailable) {
-var ajm = null;
-var tajm;
-var jmols = applet.getAppletWindow (jalview.appletgui.AppletJmol);
-for (var i = 0, iSize = jmols.size (); i < iSize; i++) {
-tajm = jmols.elementAt (i);
-if (tajm.ap.alignFrame === this) {
-ajm = tajm;
-break;
-}}
-if (ajm != null) {
-System.err.println ("Incremental adding and aligning structure to existing Jmol view not yet implemented.");
-ajm = null;
-}} new jalview.appletgui.AppletJmol (pdb, seqs, chains, this.alignPanel, protocol);
-jalview.bin.JalviewLite.lastFrameX += 40;
-jalview.bin.JalviewLite.lastFrameY += 40;
-}, "jalview.bin.JalviewLite,jalview.datamodel.PDBEntry,~A,~A,~S");
-Clazz.defineMethod (c$, "alignedStructureView",
-function (applet, pdb, seqs, chains, protocols) {
-System.err.println ("Aligned Structure View: Not yet implemented.");
-}, "jalview.bin.JalviewLite,~A,~A,~A,~A");
-Clazz.defineMethod (c$, "select",
-function (sel, csel) {
-this.alignPanel.seqPanel.selection (sel, csel, null);
-}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection");
-Clazz.defineMethod (c$, "scrollTo",
-function (row, column) {
-this.alignPanel.seqPanel.scrollTo (row, column);
-}, "~N,~N");
-Clazz.defineMethod (c$, "scrollToRow",
-function (row) {
-this.alignPanel.seqPanel.scrollToRow (row);
-}, "~N");
-Clazz.defineMethod (c$, "scrollToColumn",
-function (column) {
-this.alignPanel.seqPanel.scrollToColumn (column);
-}, "~N");
-Clazz.defineMethod (c$, "getSequenceSetId",
-function () {
-return this.viewport.getSequenceSetId ();
-});
-Clazz.defineMethod (c$, "loadScoreFile",
-function (inFile) {
-var file = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [inFile, jalview.io.AppletFormatAdapter.checkProtocol (inFile)]);
-if (!file.isValid ()) {
-System.err.println ("Problems parsing T-Coffee scores: " + file.getWarningMessage ());
-System.err.println ("Origin was:\n" + inFile);
-return false;
-}var aln;
-if ((aln = this.viewport.getAlignment ()) != null && (aln.getHeight () != file.getHeight () || aln.getWidth () != file.getWidth ())) {
-System.err.println ("The scores matrix does not match the alignment dimensions");
-}if (file.annotateAlignment (this.alignPanel.getAlignment (), false)) {
-this.alignPanel.fontChanged ();
-this.tcoffeeColour.setEnabled (true);
-this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
-return true;
-} else {
-System.err.println ("Problems resolving T-Coffee scores:");
-if (file.getWarningMessage () != null) {
-System.err.println (file.getWarningMessage ());
-}}return false;
-}, "~S");
-Clazz.defineMethod (c$, "getSplitFrame",
-function () {
-return this.splitFrame;
-});
-Clazz.defineMethod (c$, "setSplitFrame",
-function (sf) {
-this.splitFrame = sf;
-}, "jalview.appletgui.SplitFrame");
-Clazz.overrideMethod (c$, "setShowSeqFeatures",
-function (b) {
-this.viewport.setShowSequenceFeatures (b);
-}, "~B");
-Clazz.overrideMethod (c$, "setMenusForViewport",
-function () {
-});
-Clazz.overrideMethod (c$, "refreshFeatureUI",
-function (enableIfNecessary) {
-if (enableIfNecessary) {
-this.sequenceFeatures.setState (true);
-this.alignPanel.av.setShowSequenceFeatures (true);
-}}, "~B");
-Clazz.overrideMethod (c$, "getFeatureSettingsUI",
-function () {
-return this.alignPanel.av.featureSettings;
-});
-c$.$AlignFrame$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$1", java.awt.event.WindowAdapter);
-Clazz.overrideMethod (c$, "windowClosing",
-function (e) {
-if (this.f$.ap != null) {
-this.f$.ap.setOverviewPanel (null);
-}}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AlignFrame$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$2", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AlignFrame$3$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$3", java.awt.event.WindowAdapter);
-Clazz.defineMethod (c$, "windowOpened",
-function (e) {
-if (this.b$["jalview.appletgui.AlignFrame"].viewport.sortByTree) {
-this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
-}Clazz.superCall (this, jalview.appletgui.AlignFrame$3, "windowOpened", [e]);
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowClosing",
-function (e) {
-this.b$["jalview.appletgui.AlignFrame"].sortByTreeMenu.remove (this.f$.item);
-}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AlignFrame$1AboutPanel$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.version = null;
-this.builddate = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AlignFrame$1AboutPanel", awt2swing.Canvas);
-Clazz.makeConstructor (c$,
-function (a, b) {
-Clazz.superConstructor (this, jalview.appletgui.AlignFrame$1AboutPanel, []);
-this.version = a;
-this.builddate = b;
-}, "~S,~S");
-Clazz.overrideMethod (c$, "paintComponent",
-function (a) {
-a.setColor (java.awt.Color.white);
-a.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
-var b = a.getFontMetrics ();
-var c = b.getHeight ();
-var d = 5;
-var e = 7;
-a.setColor (java.awt.Color.black);
-a.setFont ( new java.awt.Font ("Helvetica", 1, 14));
-a.drawString (jalview.util.MessageManager.formatMessage ("label.jalviewLite_release", Clazz.newArray (-1, [this.version])), e, d += c);
-a.setFont ( new java.awt.Font ("Helvetica", 1, 12));
-a.drawString (jalview.util.MessageManager.formatMessage ("label.jaview_build_date", Clazz.newArray (-1, [this.builddate])), e, d += c);
-a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_1"), e, d += c * 1.5);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_2"), e + 50, d += c + 8);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_dev_managers"), e, d += c);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_distribution_lists"), e, d += c);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_please_cite"), e, d += c + 8);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_authors"), e, d += c);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_title"), e, d += c);
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_ref"), e, d += c);
-}, "java.awt.Graphics");
-c$ = Clazz.p0p ();
-};
-c$.$AlignFrame$4$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$4", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.b$["jalview.appletgui.AlignFrame"].outputText_actionPerformed (e);
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AlignFrame$5$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$5", null, java.awt.event.FocusListener);
-Clazz.overrideMethod (c$, "focusLost",
-function (e) {
-if (this.f$.theApplet.currentAlignFrame === this.f$.me) {
-this.f$.theApplet.currentAlignFrame = null;
-}}, "java.awt.event.FocusEvent");
-Clazz.overrideMethod (c$, "focusGained",
-function (e) {
-this.f$.theApplet.currentAlignFrame = this.f$.me;
-}, "java.awt.event.FocusEvent");
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"copiedSequences", null,
-"copiedHiddenColumns", null);
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Canvas", "jalview.api.AlignViewControllerGuiI", "jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "$.KeyListener", "awt2swing.CheckboxMenuItem", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "jalview.util.MessageManager", "java.awt.BorderLayout"], "jalview.appletgui.AlignFrame", ["awt2swing.Frame", "jalview.analysis.AlignmentSorter", "$.AnnotationSorter", "jalview.appletgui.AlignViewport", "$.AlignmentPanel", "$.AnnotationColourChooser", "$.AnnotationColumnChooser", "$.AppletJmol", "$.CutAndPasteTransfer", "$.FeatureSettings", "$.Finder", "$.FontChooser", "$.OverviewPanel", "$.PCAPanel", "$.PaintRefresher", "$.PairwiseAlignPanel", "$.RedundancyPanel", "$.SliderPanel", "$.TreePanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "$.OrderCommand", "$.RemoveGapColCommand", "$.RemoveGapsCommand", "$.SlideSequencesCommand", "$.TrimRegionCommand", "jalview.controller.AlignViewController", "jalview.datamodel.Alignment", "$.PDBEntry", "$.Sequence", "$.SequenceGroup", "jalview.io.AlignmentProperties", "$.AnnotationFile", "$.AppletFormatAdapter", "$.FeaturesFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColourChooser", "$.RNAInteractionColourScheme", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "java.awt.Color", "$.Font", "java.awt.event.FocusListener", "$.WindowAdapter", "java.lang.Character", "$.StringBuffer", "java.net.URL", "$.URLEncoder", "java.util.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.avc = null;
+this.alignPanel = null;
+this.viewport = null;
+this.frameWidth = 700;
+this.frameHeight = 500;
+this.jalviewServletURL = null;
+this.showAutoCalculatedAbove = false;
+this.annotationSortOrder = null;
+this.alignFrameMenuBar = null;
+this.fileMenu = null;
+this.loadApplication = null;
+this.$loadTree = null;
+this.$loadAnnotations = null;
+this.$outputFeatures = null;
+this.$outputAnnotations = null;
+this.closeMenuItem = null;
+this.selectAllSequenceMenuItem = null;
+this.deselectAllSequenceMenuItem = null;
+this.invertSequenceMenuItem = null;
+this.remove2LeftMenuItem = null;
+this.remove2RightMenuItem = null;
+this.removeGappedColumnMenuItem = null;
+this.removeAllGapsMenuItem = null;
+this.viewBoxesMenuItem = null;
+this.viewTextMenuItem = null;
+this.sortPairwiseMenuItem = null;
+this.sortIDMenuItem = null;
+this.sortLengthMenuItem = null;
+this.sortGroupMenuItem = null;
+this.removeRedundancyMenuItem = null;
+this.pairwiseAlignmentMenuItem = null;
+this.PCAMenuItem = null;
+this.averageDistanceTreeMenuItem = null;
+this.neighbourTreeMenuItem = null;
+this.borderLayout1 = null;
+this.statusBar = null;
+this.clustalColour = null;
+this.zappoColour = null;
+this.taylorColour = null;
+this.hydrophobicityColour = null;
+this.helixColour = null;
+this.strandColour = null;
+this.turnColour = null;
+this.buriedColour = null;
+this.purinePyrimidineColour = null;
+this.RNAInteractionColour = null;
+this.RNAHelixColour = null;
+this.userDefinedColour = null;
+this.PIDColour = null;
+this.BLOSUM62Colour = null;
+this.tcoffeeColour = null;
+this.njTreeBlosumMenuItem = null;
+this.avDistanceTreeBlosumMenuItem = null;
+this.annotationPanelMenuItem = null;
+this.colourTextMenuItem = null;
+this.displayNonconservedMenuItem = null;
+this.alProperties = null;
+this.overviewMenuItem = null;
+this.undoMenuItem = null;
+this.redoMenuItem = null;
+this.conservationMenuItem = null;
+this.noColourmenuItem = null;
+this.wrapMenuItem = null;
+this.renderGapsMenuItem = null;
+this.findMenuItem = null;
+this.abovePIDThreshold = null;
+this.nucleotideColour = null;
+this.deleteGroups = null;
+this.grpsFromSelection = null;
+this.createGroup = null;
+this.unGroup = null;
+this.$delete = null;
+this.copy = null;
+this.cut = null;
+this.pasteMenu = null;
+this.pasteNew = null;
+this.pasteThis = null;
+this.applyToAllGroups = null;
+this.$font = null;
+this.scaleAbove = null;
+this.scaleLeft = null;
+this.scaleRight = null;
+this.modifyPID = null;
+this.modifyConservation = null;
+this.autoCalculate = null;
+this.$sortByTree = null;
+this.sortByTreeMenu = null;
+this.inputText = null;
+this.documentation = null;
+this.about = null;
+this.seqLimits = null;
+this.centreColumnLabelFlag = null;
+this.followMouseOverFlag = null;
+this.showSequenceLogo = null;
+this.applyAutoAnnotationSettings = null;
+this.showConsensusHistogram = null;
+this.showGroupConsensus = null;
+this.showGroupConservation = null;
+this.normSequenceLogo = null;
+this.featureSettings = null;
+this.sequenceFeatures = null;
+this.annotationColour = null;
+this.annotationColumnSelection = null;
+this.invertColSel = null;
+this.showColumns = null;
+this.showSeqs = null;
+this.hideColumns = null;
+this.hideSequences = null;
+this.hideAllButSelection = null;
+this.hideAllSelection = null;
+this.showAllHidden = null;
+this.$newView = null;
+this.showAlignmentAnnotations = null;
+this.showSequenceAnnotations = null;
+this.sortAnnBySequence = null;
+this.sortAnnByLabel = null;
+this.showAutoFirst = null;
+this.showAutoLast = null;
+this.splitFrame = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignFrame", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.KeyListener, jalview.api.AlignViewControllerGuiI]);
+Clazz.prepareFields (c$, function () {
+this.alignFrameMenuBar = new awt2swing.MenuBar ();
+this.fileMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.file"));
+this.loadApplication = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.view_full_application"));
+this.$loadTree = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_associated_tree"));
+this.$loadAnnotations = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_features_annotations"));
+this.$outputFeatures = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_features").concat ("..."));
+this.$outputAnnotations = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_annotations").concat ("..."));
+this.closeMenuItem = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.close"));
+this.selectAllSequenceMenuItem = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.select_all"));
+this.deselectAllSequenceMenuItem = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.deselect_all"));
+this.invertSequenceMenuItem = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.invert_selection"));
+this.remove2LeftMenuItem = new awt2swing.MenuItem ();
+this.remove2RightMenuItem = new awt2swing.MenuItem ();
+this.removeGappedColumnMenuItem = new awt2swing.MenuItem ();
+this.removeAllGapsMenuItem = new awt2swing.MenuItem ();
+this.viewBoxesMenuItem = new awt2swing.CheckboxMenuItem ();
+this.viewTextMenuItem = new awt2swing.CheckboxMenuItem ();
+this.sortPairwiseMenuItem = new awt2swing.MenuItem ();
+this.sortIDMenuItem = new awt2swing.MenuItem ();
+this.sortLengthMenuItem = new awt2swing.MenuItem ();
+this.sortGroupMenuItem = new awt2swing.MenuItem ();
+this.removeRedundancyMenuItem = new awt2swing.MenuItem ();
+this.pairwiseAlignmentMenuItem = new awt2swing.MenuItem ();
+this.PCAMenuItem = new awt2swing.MenuItem ();
+this.averageDistanceTreeMenuItem = new awt2swing.MenuItem ();
+this.neighbourTreeMenuItem = new awt2swing.MenuItem ();
+this.borderLayout1 = new java.awt.BorderLayout ();
+this.statusBar = new awt2swing.Label ();
+this.clustalColour = new awt2swing.MenuItem ();
+this.zappoColour = new awt2swing.MenuItem ();
+this.taylorColour = new awt2swing.MenuItem ();
+this.hydrophobicityColour = new awt2swing.MenuItem ();
+this.helixColour = new awt2swing.MenuItem ();
+this.strandColour = new awt2swing.MenuItem ();
+this.turnColour = new awt2swing.MenuItem ();
+this.buriedColour = new awt2swing.MenuItem ();
+this.purinePyrimidineColour = new awt2swing.MenuItem ();
+this.RNAInteractionColour = new awt2swing.MenuItem ();
+this.RNAHelixColour = new awt2swing.MenuItem ();
+this.userDefinedColour = new awt2swing.MenuItem ();
+this.PIDColour = new awt2swing.MenuItem ();
+this.BLOSUM62Colour = new awt2swing.MenuItem ();
+this.tcoffeeColour = new awt2swing.MenuItem ();
+this.njTreeBlosumMenuItem = new awt2swing.MenuItem ();
+this.avDistanceTreeBlosumMenuItem = new awt2swing.MenuItem ();
+this.annotationPanelMenuItem = new awt2swing.CheckboxMenuItem ();
+this.colourTextMenuItem = new awt2swing.CheckboxMenuItem ();
+this.displayNonconservedMenuItem = new awt2swing.CheckboxMenuItem ();
+this.alProperties = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.alignment_props"));
+this.overviewMenuItem = new awt2swing.MenuItem ();
+this.undoMenuItem = new awt2swing.MenuItem ();
+this.redoMenuItem = new awt2swing.MenuItem ();
+this.conservationMenuItem = new awt2swing.CheckboxMenuItem ();
+this.noColourmenuItem = new awt2swing.MenuItem ();
+this.wrapMenuItem = new awt2swing.CheckboxMenuItem ();
+this.renderGapsMenuItem = new awt2swing.CheckboxMenuItem ();
+this.findMenuItem = new awt2swing.MenuItem ();
+this.abovePIDThreshold = new awt2swing.CheckboxMenuItem ();
+this.nucleotideColour = new awt2swing.MenuItem ();
+this.deleteGroups = new awt2swing.MenuItem ();
+this.grpsFromSelection = new awt2swing.MenuItem ();
+this.createGroup = new awt2swing.MenuItem ();
+this.unGroup = new awt2swing.MenuItem ();
+this.$delete = new awt2swing.MenuItem ();
+this.copy = new awt2swing.MenuItem ();
+this.cut = new awt2swing.MenuItem ();
+this.pasteMenu = new awt2swing.Menu ();
+this.pasteNew = new awt2swing.MenuItem ();
+this.pasteThis = new awt2swing.MenuItem ();
+this.applyToAllGroups = new awt2swing.CheckboxMenuItem ();
+this.$font = new awt2swing.MenuItem ();
+this.scaleAbove = new awt2swing.CheckboxMenuItem ();
+this.scaleLeft = new awt2swing.CheckboxMenuItem ();
+this.scaleRight = new awt2swing.CheckboxMenuItem ();
+this.modifyPID = new awt2swing.MenuItem ();
+this.modifyConservation = new awt2swing.MenuItem ();
+this.$sortByTree = new awt2swing.CheckboxMenuItem ("Sort Alignment With New Tree", true);
+this.sortByTreeMenu = new awt2swing.Menu ();
+this.inputText = new awt2swing.MenuItem ();
+this.documentation = new awt2swing.MenuItem ();
+this.about = new awt2swing.MenuItem ();
+this.seqLimits = new awt2swing.CheckboxMenuItem ();
+this.centreColumnLabelFlag = new awt2swing.CheckboxMenuItem ();
+this.followMouseOverFlag = new awt2swing.CheckboxMenuItem ();
+this.showSequenceLogo = new awt2swing.CheckboxMenuItem ();
+this.applyAutoAnnotationSettings = new awt2swing.CheckboxMenuItem ();
+this.showConsensusHistogram = new awt2swing.CheckboxMenuItem ();
+this.showGroupConsensus = new awt2swing.CheckboxMenuItem ();
+this.showGroupConservation = new awt2swing.CheckboxMenuItem ();
+this.normSequenceLogo = new awt2swing.CheckboxMenuItem ();
+this.featureSettings = new awt2swing.MenuItem ();
+this.sequenceFeatures = new awt2swing.CheckboxMenuItem ();
+this.annotationColour = new awt2swing.MenuItem ();
+this.annotationColumnSelection = new awt2swing.MenuItem ();
+this.invertColSel = new awt2swing.MenuItem ();
+this.showColumns = new awt2swing.MenuItem ();
+this.showSeqs = new awt2swing.MenuItem ();
+this.hideColumns = new awt2swing.MenuItem ();
+this.hideSequences = new awt2swing.MenuItem ();
+this.hideAllButSelection = new awt2swing.MenuItem ();
+this.hideAllSelection = new awt2swing.MenuItem ();
+this.showAllHidden = new awt2swing.MenuItem ();
+this.$newView = new awt2swing.MenuItem ();
+});
+Clazz.makeConstructor (c$,
+function (al, applet, title, embedded) {
+this.construct (al, applet, title, embedded, true);
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B");
+Clazz.makeConstructor (c$,
+function (al, applet, title, embedded, addToDisplay) {
+this.construct (al, null, null, applet, title, embedded, addToDisplay);
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B,~B");
+Clazz.makeConstructor (c$,
+function (al, hiddenSeqs, columnSelection, applet, title, embedded) {
+this.construct (al, hiddenSeqs, columnSelection, applet, title, embedded, true);
+}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B");
+Clazz.makeConstructor (c$,
+function (al, hiddenSeqs, columnSelection, applet, title, embedded, addToDisplay) {
+Clazz.superConstructor (this, jalview.appletgui.AlignFrame, []);
+if (applet != null) {
+this.jalviewServletURL = applet.jalviewServletURL;
+}try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (applet != null) {
+var param;
+try {
+param = applet.windowWidth;
+if (param != null) {
+var width = Integer.parseInt (param);
+this.frameWidth = width;
+}param = applet.windowHeight;
+if (param != null) {
+var height = Integer.parseInt (param);
+this.frameHeight = height;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}this.viewport = new jalview.appletgui.AlignViewport (al, applet);
+if (hiddenSeqs != null && hiddenSeqs.length > 0) {
+this.viewport.hideSequence (hiddenSeqs);
+}if (columnSelection != null) {
+this.viewport.setColumnSelection (columnSelection);
+}this.alignPanel = new jalview.appletgui.AlignmentPanel (this, this.viewport);
+this.avc = new jalview.controller.AlignViewController (this, this.viewport, this.alignPanel);
+this.viewport.updateConservation (this.alignPanel);
+this.viewport.updateConsensus (this.alignPanel);
+this.displayNonconservedMenuItem.setState (this.viewport.getShowUnconserved ());
+this.followMouseOverFlag.setState (this.viewport.isFollowHighlight ());
+this.showGroupConsensus.setState (this.viewport.isShowGroupConsensus ());
+this.showGroupConservation.setState (this.viewport.isShowGroupConservation ());
+this.showConsensusHistogram.setState (this.viewport.isShowConsensusHistogram ());
+this.showSequenceLogo.setState (this.viewport.isShowSequenceLogo ());
+this.normSequenceLogo.setState (this.viewport.isNormaliseSequenceLogo ());
+this.applyToAllGroups.setState (this.viewport.getColourAppliesToAllGroups ());
+this.annotationPanelMenuItem.setState (this.viewport.isShowAnnotation ());
+this.showAlignmentAnnotations.setState (this.viewport.isShowAnnotation ());
+this.showSequenceAnnotations.setState (this.viewport.isShowAnnotation ());
+this.seqLimits.setState (this.viewport.getShowJVSuffix ());
+if (applet != null) {
+var param = applet.sortBy;
+if (param != null) {
+if (param.equalsIgnoreCase ("Id")) {
+this.sortIDMenuItem_actionPerformed ();
+} else if (param.equalsIgnoreCase ("Pairwise Identity")) {
+this.sortPairwiseMenuItem_actionPerformed ();
+} else if (param.equalsIgnoreCase ("Length")) {
+this.sortLengthMenuItem_actionPerformed ();
+}}param = applet.wrap;
+if (param != null) {
+if (param.equalsIgnoreCase ("true")) {
+this.wrapMenuItem.setState (true);
+this.wrapMenuItem_actionPerformed ();
+}}param = applet.centrecolumnlabels;
+if (param != null) {
+this.centreColumnLabelFlag.setState (true);
+this.centreColumnLabelFlag_stateChanged ();
+}}if (this.viewport.getAlignment ().isNucleotide ()) {
+this.viewport.updateStrucConsensus (this.alignPanel);
+if (this.viewport.getAlignment ().hasRNAStructure ()) {
+this.RNAHelixColour.setEnabled (true);
+} else {
+this.RNAHelixColour.setEnabled (false);
+}} else {
+this.RNAHelixColour.setEnabled (false);
+this.purinePyrimidineColour.setEnabled (false);
+}this.addKeyListener (this);
+this.alignPanel.seqPanel.seqCanvas.addKeyListener (this);
+this.alignPanel.idPanel.idCanvas.addKeyListener (this);
+this.alignPanel.scalePanel.addKeyListener (this);
+this.alignPanel.annotationPanel.addKeyListener (this);
+this.alignPanel.annotationPanelHolder.addKeyListener (this);
+this.alignPanel.annotationSpaceFillerHolder.addKeyListener (this);
+this.alignPanel.alabels.addKeyListener (this);
+if (addToDisplay) {
+this.addToDisplay (embedded);
+}}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B,~B");
+Clazz.defineMethod (c$, "addToDisplay",
+function (embedded) {
+this.createAlignFrameWindow (embedded);
+this.validate ();
+this.alignPanel.adjustAnnotationHeight ();
+this.alignPanel.paintAlignment (true);
+}, "~B");
+Clazz.defineMethod (c$, "getAlignViewport",
+function () {
+return this.viewport;
+});
+Clazz.defineMethod (c$, "getSeqcanvas",
+function () {
+return this.alignPanel.seqPanel.seqCanvas;
+});
+Clazz.defineMethod (c$, "parseFeaturesFile",
+function (file, type) {
+return this.parseFeaturesFile (file, type, true);
+}, "~S,~S");
+Clazz.defineMethod (c$, "parseFeaturesFile",
+function (file, type, autoenabledisplay) {
+var featureLinks = new java.util.Hashtable ();
+var featuresFile = false;
+try {
+featuresFile = new jalview.io.FeaturesFile (file, type).parse (this.viewport.getAlignment (), this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().getFeatureColours (), featureLinks, true, this.viewport.applet.getDefaultParameter ("relaxedidmatch", false));
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (featuresFile) {
+if (featureLinks.size () > 0) {
+this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().featureLinks = featureLinks;
+}if (autoenabledisplay) {
+this.viewport.setShowSequenceFeatures (true);
+this.sequenceFeatures.setState (true);
+}if (this.alignPanel.seqPanel.seqCanvas.fr != null) {
+this.alignPanel.seqPanel.seqCanvas.fr.findAllFeatures (true);
+}if (this.viewport.featureSettings != null) {
+this.viewport.featureSettings.refreshTable ();
+}this.alignPanel.paintAlignment (true);
+this.setStatus (jalview.util.MessageManager.getString ("label.successfully_added_features_alignment"));
+}return featuresFile;
+}, "~S,~S,~B");
+Clazz.overrideMethod (c$, "keyPressed",
+function (evt) {
+if (this.viewport.cursorMode && ((evt.getKeyCode () >= 48 && evt.getKeyCode () <= 57) || (evt.getKeyCode () >= 96 && evt.getKeyCode () <= 105)) && Character.isDigit (evt.getKeyChar ())) {
+this.alignPanel.seqPanel.numberPressed (evt.getKeyChar ());
+}switch (evt.getKeyCode ()) {
+case 27:
+this.deselectAllSequenceMenuItem_actionPerformed ();
+this.alignPanel.alabels.cancelDrag ();
+break;
+case 88:
+if (evt.isControlDown () || evt.isMetaDown ()) {
+this.cut_actionPerformed ();
+}break;
+case 67:
+if (this.viewport.cursorMode && !evt.isControlDown ()) {
+this.alignPanel.seqPanel.setCursorColumn ();
+}if (evt.isControlDown () || evt.isMetaDown ()) {
+this.copy_actionPerformed ();
+}break;
+case 86:
+if (evt.isControlDown ()) {
+this.paste (evt.isShiftDown ());
+}break;
+case 65:
+if (evt.isControlDown () || evt.isMetaDown ()) {
+this.selectAllSequenceMenuItem_actionPerformed ();
+}break;
+case 40:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (0, 1);
+} else {
+this.moveSelectedSequences (false);
+}break;
+case 38:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (0, -1);
+} else {
+this.moveSelectedSequences (true);
+}break;
+case 37:
+if (evt.isAltDown () || !this.viewport.cursorMode) {
+this.slideSequences (false, this.alignPanel.seqPanel.getKeyboardNo1 ());
+} else {
+this.alignPanel.seqPanel.moveCursor (-1, 0);
+}break;
+case 39:
+if (evt.isAltDown () || !this.viewport.cursorMode) {
+this.slideSequences (true, this.alignPanel.seqPanel.getKeyboardNo1 ());
+} else {
+this.alignPanel.seqPanel.moveCursor (1, 0);
+}break;
+case 32:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.insertGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
+}break;
+case 127:
+case 8:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.deleteGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
+} else {
+this.cut_actionPerformed ();
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+}break;
+case 83:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorRow ();
+}break;
+case 80:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorPosition ();
+}break;
+case 10:
+case 44:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorRowAndColumn ();
+}break;
+case 81:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setSelectionAreaAtCursor (true);
+}break;
+case 77:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setSelectionAreaAtCursor (false);
+}break;
+case 113:
+this.viewport.cursorMode = !this.viewport.cursorMode;
+this.setStatus (jalview.util.MessageManager.formatMessage ("label.keyboard_editing_mode", Clazz.newArray (-1, [(this.viewport.cursorMode ? "on" : "off")])));
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.seqCanvas.cursorX = this.viewport.startRes;
+this.alignPanel.seqPanel.seqCanvas.cursorY = this.viewport.startSeq;
+}break;
+case 70:
+if (evt.isControlDown ()) {
+this.findMenuItem_actionPerformed ();
+}break;
+case 72:
+{
+var toggleSeqs = !evt.isControlDown ();
+var toggleCols = !evt.isShiftDown ();
+this.toggleHiddenRegions (toggleSeqs, toggleCols);
+break;
+}case 33:
+if (this.viewport.getWrapAlignment ()) {
+this.alignPanel.scrollUp (true);
+} else {
+this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq - this.viewport.endSeq + this.viewport.startSeq);
+}break;
+case 34:
+if (this.viewport.getWrapAlignment ()) {
+this.alignPanel.scrollUp (false);
+} else {
+this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq + this.viewport.endSeq - this.viewport.startSeq);
+}break;
+case 90:
+if (evt.isControlDown ()) {
+this.undoMenuItem_actionPerformed ();
+}break;
+case 89:
+if (evt.isControlDown ()) {
+this.redoMenuItem_actionPerformed ();
+}break;
+case 76:
+if (evt.isControlDown ()) {
+this.trimAlignment (true);
+}break;
+case 82:
+if (evt.isControlDown ()) {
+this.trimAlignment (false);
+}break;
+case 69:
+if (evt.isControlDown ()) {
+if (evt.isShiftDown ()) {
+this.removeAllGapsMenuItem_actionPerformed ();
+} else {
+this.removeGappedColumnMenuItem_actionPerformed ();
+}}break;
+case 73:
+if (evt.isControlDown ()) {
+if (evt.isAltDown ()) {
+this.invertColSel_actionPerformed ();
+} else {
+this.invertSequenceMenuItem_actionPerformed ();
+}}break;
+case 71:
+if (evt.isControlDown ()) {
+if (evt.isShiftDown ()) {
+this.unGroup_actionPerformed ();
+} else {
+this.createGroup_actionPerformed ();
+}}break;
+case 85:
+if (evt.isControlDown ()) {
+this.deleteGroups_actionPerformed ();
+}break;
+case 84:
+if (evt.isControlDown ()) {
+this.newView (null);
+}break;
+}
+this.alignPanel.paintAlignment (true);
+}, "java.awt.event.KeyEvent");
+Clazz.defineMethod (c$, "toggleHiddenRegions",
+($fz = function (toggleSeqs, toggleCols) {
+var hide = false;
+var sg = this.viewport.getSelectionGroup ();
+if (!toggleSeqs && !toggleCols) {
+if ((this.viewport.getColumnSelection () != null && this.viewport.getColumnSelection ().getSelected () != null && this.viewport.getColumnSelection ().getSelected ().size () > 0) || (sg != null && sg.getSize () > 0 && sg.getStartRes () <= sg.getEndRes ())) {
+if (sg != null) {
+this.invertSequenceMenuItem_actionPerformed ();
+sg = this.viewport.getSelectionGroup ();
+toggleSeqs = true;
+}this.viewport.expandColSelection (sg, true);
+this.invertColSel_actionPerformed ();
+toggleCols = true;
+}}if (toggleSeqs) {
+if (sg != null && sg.getSize () != this.viewport.getAlignment ().getHeight ()) {
+hide = true;
+this.viewport.hideAllSelectedSeqs ();
+} else if (!(toggleCols && this.viewport.getColumnSelection ().getSelected ().size () > 0)) {
+this.viewport.showAllHiddenSeqs ();
+}}if (toggleCols) {
+if (this.viewport.getColumnSelection ().getSelected ().size () > 0) {
+this.viewport.hideSelectedColumns ();
+if (!toggleSeqs) {
+this.viewport.setSelectionGroup (sg);
+}} else if (!hide) {
+this.viewport.showAllHiddenColumns ();
+}}}, $fz.isPrivate = true, $fz), "~B,~B");
+Clazz.overrideMethod (c$, "keyReleased",
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "keyTyped",
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+var source = evt.getSource ();
+if (source === this.displayNonconservedMenuItem) {
+this.displayNonconservedMenuItem_actionPerformed ();
+} else if (source === this.colourTextMenuItem) {
+this.colourTextMenuItem_actionPerformed ();
+} else if (source === this.wrapMenuItem) {
+this.wrapMenuItem_actionPerformed ();
+} else if (source === this.scaleAbove) {
+this.viewport.setScaleAboveWrapped (this.scaleAbove.getState ());
+} else if (source === this.scaleLeft) {
+this.viewport.setScaleLeftWrapped (this.scaleLeft.getState ());
+} else if (source === this.scaleRight) {
+this.viewport.setScaleRightWrapped (this.scaleRight.getState ());
+} else if (source === this.seqLimits) {
+this.seqLimits_itemStateChanged ();
+} else if (source === this.viewBoxesMenuItem) {
+this.viewport.setShowBoxes (this.viewBoxesMenuItem.getState ());
+} else if (source === this.viewTextMenuItem) {
+this.viewport.setShowText (this.viewTextMenuItem.getState ());
+} else if (source === this.renderGapsMenuItem) {
+this.viewport.setRenderGaps (this.renderGapsMenuItem.getState ());
+} else if (source === this.annotationPanelMenuItem) {
+this.viewport.setShowAnnotation (this.annotationPanelMenuItem.getState ());
+this.alignPanel.setAnnotationVisible (this.annotationPanelMenuItem.getState ());
+} else if (source === this.sequenceFeatures) {
+this.viewport.setShowSequenceFeatures (this.sequenceFeatures.getState ());
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+} else if (source === this.showAlignmentAnnotations) {
+this.setAnnotationsVisibility ();
+} else if (source === this.showSequenceAnnotations) {
+this.setAnnotationsVisibility ();
+} else if (source === this.sortAnnBySequence) {
+var newState = this.sortAnnBySequence.getState ();
+this.sortAnnByLabel.setState (false);
+this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
+this.setViewportAnnotationOrder ();
+} else if (source === this.sortAnnByLabel) {
+var newState = this.sortAnnByLabel.getState ();
+this.sortAnnBySequence.setState (false);
+this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
+this.setViewportAnnotationOrder ();
+} else if (source === this.showAutoFirst) {
+this.showAutoLast.setState (!this.showAutoFirst.getState ());
+this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
+this.setViewportAnnotationOrder ();
+} else if (source === this.showAutoLast) {
+this.showAutoFirst.setState (!this.showAutoLast.getState ());
+this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
+this.setViewportAnnotationOrder ();
+} else if (source === this.conservationMenuItem) {
+this.conservationMenuItem_actionPerformed ();
+} else if (source === this.abovePIDThreshold) {
+this.abovePIDThreshold_actionPerformed ();
+} else if (source === this.applyToAllGroups) {
+this.viewport.setColourAppliesToAllGroups (this.applyToAllGroups.getState ());
+} else if (source === this.autoCalculate) {
+this.viewport.autoCalculateConsensus = this.autoCalculate.getState ();
+} else if (source === this.$sortByTree) {
+this.viewport.sortByTree = this.$sortByTree.getState ();
+} else if (source === this.centreColumnLabelFlag) {
+this.centreColumnLabelFlag_stateChanged ();
+} else if (source === this.followMouseOverFlag) {
+this.mouseOverFlag_stateChanged ();
+} else if (source === this.showGroupConsensus) {
+this.showGroupConsensus_actionPerformed ();
+} else if (source === this.showGroupConservation) {
+this.showGroupConservation_actionPerformed ();
+} else if (source === this.showSequenceLogo) {
+this.showSequenceLogo_actionPerformed ();
+} else if (source === this.normSequenceLogo) {
+this.normSequenceLogo_actionPerformed ();
+} else if (source === this.showConsensusHistogram) {
+this.showConsensusHistogram_actionPerformed ();
+} else if (source === this.applyAutoAnnotationSettings) {
+this.applyAutoAnnotationSettings_actionPerformed ();
+}this.alignPanel.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "setAnnotationsVisibility",
+($fz = function () {
+var showForAlignment = this.showAlignmentAnnotations.getState ();
+var showForSequences = this.showSequenceAnnotations.getState ();
+for (var aa, $aa = 0, $$aa = this.alignPanel.getAlignment ().getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+var visible = (aa.sequenceRef == null ? showForAlignment : showForSequences);
+aa.visible = visible;
+}
+this.alignPanel.validateAnnotationDimensions (true);
+this.validate ();
+this.repaint ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "setAnnotationSortOrder",
+($fz = function (order) {
+this.annotationSortOrder = order;
+}, $fz.isPrivate = true, $fz), "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz.defineMethod (c$, "setViewportAnnotationOrder",
+($fz = function () {
+this.alignPanel.av.setSortAnnotationsBy (this.annotationSortOrder);
+this.alignPanel.av.setShowAutocalculatedAbove (this.showAutoCalculatedAbove);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "setShowAutoCalculatedAbove",
+($fz = function (showAbove) {
+this.showAutoCalculatedAbove = showAbove;
+}, $fz.isPrivate = true, $fz), "~B");
+Clazz.defineMethod (c$, "mouseOverFlag_stateChanged",
+($fz = function () {
+this.viewport.setFollowHighlight (this.followMouseOverFlag.getState ());
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "centreColumnLabelFlag_stateChanged",
+($fz = function () {
+this.viewport.centreColumnLabels = this.centreColumnLabelFlag.getState ();
+this.alignPanel.annotationPanel.repaint ();
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+var source = evt.getSource ();
+if (source === this.inputText) {
+this.inputText_actionPerformed ();
+} else if (source === this.$loadTree) {
+this.loadTree_actionPerformed ();
+} else if (source === this.loadApplication) {
+this.launchFullApplication ();
+} else if (source === this.$loadAnnotations) {
+this.loadAnnotations ();
+} else if (source === this.$outputAnnotations) {
+this.outputAnnotations (true);
+} else if (source === this.$outputFeatures) {
+this.outputFeatures (true, "Jalview");
+} else if (source === this.closeMenuItem) {
+this.closeMenuItem_actionPerformed ();
+} else if (source === this.copy) {
+this.copy_actionPerformed ();
+} else if (source === this.undoMenuItem) {
+this.undoMenuItem_actionPerformed ();
+} else if (source === this.redoMenuItem) {
+this.redoMenuItem_actionPerformed ();
+} else if (source === this.inputText) {
+this.inputText_actionPerformed ();
+} else if (source === this.closeMenuItem) {
+this.closeMenuItem_actionPerformed ();
+} else if (source === this.undoMenuItem) {
+this.undoMenuItem_actionPerformed ();
+} else if (source === this.redoMenuItem) {
+this.redoMenuItem_actionPerformed ();
+} else if (source === this.copy) {
+this.copy_actionPerformed ();
+} else if (source === this.pasteNew) {
+this.pasteNew_actionPerformed ();
+} else if (source === this.pasteThis) {
+this.pasteThis_actionPerformed ();
+} else if (source === this.cut) {
+this.cut_actionPerformed ();
+} else if (source === this.$delete) {
+this.delete_actionPerformed ();
+} else if (source === this.grpsFromSelection) {
+this.makeGrpsFromSelection_actionPerformed ();
+} else if (source === this.deleteGroups) {
+this.deleteGroups_actionPerformed ();
+} else if (source === this.selectAllSequenceMenuItem) {
+this.selectAllSequenceMenuItem_actionPerformed ();
+} else if (source === this.deselectAllSequenceMenuItem) {
+this.deselectAllSequenceMenuItem_actionPerformed ();
+} else if (source === this.invertSequenceMenuItem) {
+this.invertSequenceMenuItem_actionPerformed ();
+} else if (source === this.invertColSel) {
+this.viewport.invertColumnSelection ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.remove2LeftMenuItem) {
+this.trimAlignment (true);
+} else if (source === this.remove2RightMenuItem) {
+this.trimAlignment (false);
+} else if (source === this.removeGappedColumnMenuItem) {
+this.removeGappedColumnMenuItem_actionPerformed ();
+} else if (source === this.removeAllGapsMenuItem) {
+this.removeAllGapsMenuItem_actionPerformed ();
+} else if (source === this.findMenuItem) {
+this.findMenuItem_actionPerformed ();
+} else if (source === this.$font) {
+ new jalview.appletgui.FontChooser (this.alignPanel);
+} else if (source === this.$newView) {
+this.newView (null);
+} else if (source === this.showColumns) {
+this.viewport.showAllHiddenColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showSeqs) {
+this.viewport.showAllHiddenSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideColumns) {
+this.viewport.hideSelectedColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideSequences && this.viewport.getSelectionGroup () != null) {
+this.viewport.hideAllSelectedSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideAllButSelection) {
+this.toggleHiddenRegions (false, false);
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideAllSelection) {
+var sg = this.viewport.getSelectionGroup ();
+this.viewport.expandColSelection (sg, false);
+this.viewport.hideAllSelectedSeqs ();
+this.viewport.hideSelectedColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showAllHidden) {
+this.viewport.showAllHiddenColumns ();
+this.viewport.showAllHiddenSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showGroupConsensus) {
+this.showGroupConsensus_actionPerformed ();
+} else if (source === this.showGroupConservation) {
+this.showGroupConservation_actionPerformed ();
+} else if (source === this.showSequenceLogo) {
+this.showSequenceLogo_actionPerformed ();
+} else if (source === this.normSequenceLogo) {
+this.normSequenceLogo_actionPerformed ();
+} else if (source === this.showConsensusHistogram) {
+this.showConsensusHistogram_actionPerformed ();
+} else if (source === this.applyAutoAnnotationSettings) {
+this.applyAutoAnnotationSettings_actionPerformed ();
+} else if (source === this.featureSettings) {
+ new jalview.appletgui.FeatureSettings (this.alignPanel);
+} else if (source === this.alProperties) {
+var contents = new jalview.io.AlignmentProperties (this.viewport.getAlignment ()).formatAsString ();
+var cap = new jalview.appletgui.CutAndPasteTransfer (false, this);
+cap.setText (contents.toString ());
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_properties", Clazz.newArray (-1, [this.getTitle ()])), 400, 250);
+} else if (source === this.overviewMenuItem) {
+this.overviewMenuItem_actionPerformed ();
+} else if (source === this.noColourmenuItem) {
+this.changeColour (null);
+} else if (source === this.clustalColour) {
+this.abovePIDThreshold.setState (false);
+this.changeColour ( new jalview.schemes.ClustalxColourScheme (this.viewport.getAlignment (), null));
+} else if (source === this.zappoColour) {
+this.changeColour ( new jalview.schemes.ZappoColourScheme ());
+} else if (source === this.taylorColour) {
+this.changeColour ( new jalview.schemes.TaylorColourScheme ());
+} else if (source === this.hydrophobicityColour) {
+this.changeColour ( new jalview.schemes.HydrophobicColourScheme ());
+} else if (source === this.helixColour) {
+this.changeColour ( new jalview.schemes.HelixColourScheme ());
+} else if (source === this.strandColour) {
+this.changeColour ( new jalview.schemes.StrandColourScheme ());
+} else if (source === this.turnColour) {
+this.changeColour ( new jalview.schemes.TurnColourScheme ());
+} else if (source === this.buriedColour) {
+this.changeColour ( new jalview.schemes.BuriedColourScheme ());
+} else if (source === this.nucleotideColour) {
+this.changeColour ( new jalview.schemes.NucleotideColourScheme ());
+} else if (source === this.purinePyrimidineColour) {
+this.changeColour ( new jalview.schemes.PurinePyrimidineColourScheme ());
+} else if (source === this.RNAInteractionColour) {
+this.changeColour ( new jalview.schemes.RNAInteractionColourScheme ());
+} else if (source === this.RNAHelixColour) {
+ new jalview.schemes.RNAHelicesColourChooser (this.viewport, this.alignPanel);
+} else if (source === this.modifyPID) {
+this.modifyPID_actionPerformed ();
+} else if (source === this.modifyConservation) {
+this.modifyConservation_actionPerformed ();
+} else if (source === this.userDefinedColour) {
+ new jalview.appletgui.UserDefinedColours (this.alignPanel, null);
+} else if (source === this.PIDColour) {
+this.changeColour ( new jalview.schemes.PIDColourScheme ());
+} else if (source === this.BLOSUM62Colour) {
+this.changeColour ( new jalview.schemes.Blosum62ColourScheme ());
+} else if (source === this.tcoffeeColour) {
+this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
+} else if (source === this.annotationColour) {
+ new jalview.appletgui.AnnotationColourChooser (this.viewport, this.alignPanel);
+} else if (source === this.annotationColumnSelection) {
+ new jalview.appletgui.AnnotationColumnChooser (this.viewport, this.alignPanel);
+} else if (source === this.sortPairwiseMenuItem) {
+this.sortPairwiseMenuItem_actionPerformed ();
+} else if (source === this.sortIDMenuItem) {
+this.sortIDMenuItem_actionPerformed ();
+} else if (source === this.sortLengthMenuItem) {
+this.sortLengthMenuItem_actionPerformed ();
+} else if (source === this.sortGroupMenuItem) {
+this.sortGroupMenuItem_actionPerformed ();
+} else if (source === this.removeRedundancyMenuItem) {
+this.removeRedundancyMenuItem_actionPerformed ();
+} else if (source === this.pairwiseAlignmentMenuItem) {
+this.pairwiseAlignmentMenuItem_actionPerformed ();
+} else if (source === this.PCAMenuItem) {
+this.PCAMenuItem_actionPerformed ();
+} else if (source === this.averageDistanceTreeMenuItem) {
+this.averageDistanceTreeMenuItem_actionPerformed ();
+} else if (source === this.neighbourTreeMenuItem) {
+this.neighbourTreeMenuItem_actionPerformed ();
+} else if (source === this.njTreeBlosumMenuItem) {
+this.njTreeBlosumMenuItem_actionPerformed ();
+} else if (source === this.avDistanceTreeBlosumMenuItem) {
+this.avTreeBlosumMenuItem_actionPerformed ();
+} else if (source === this.documentation) {
+this.documentation_actionPerformed ();
+} else if (source === this.about) {
+this.about_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "inputText_actionPerformed",
+function () {
+var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.input_cut_paste"), 500, 500);
+});
+Clazz.defineMethod (c$, "outputText_actionPerformed",
+function (e) {
+var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_output_command", Clazz.newArray (-1, [e.getActionCommand ()])), 600, 500);
+var fr = this.alignPanel.cloneFeatureRenderer ();
+cap.setText ( new jalview.io.AppletFormatAdapter (this.alignPanel).formatSequences (e.getActionCommand (), this.viewport.getAlignment (), this.viewport.getShowJVSuffix ()));
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "loadAnnotations",
+function () {
+var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_features_annotations_Tcoffee_here"));
+cap.setAnnotationImport ();
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.paste_annotations"), 400, 300);
+});
+Clazz.defineMethod (c$, "outputAnnotations",
+function (displayTextbox) {
+var annotation = new jalview.io.AnnotationFile ().printAnnotationsForView (this.viewport);
+if (displayTextbox) {
+var cap = new jalview.appletgui.CutAndPasteTransfer (false, this);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.annotations"), 600, 500);
+cap.setText (annotation);
+}return annotation;
+}, "~B");
+Clazz.defineMethod (c$, "getDisplayedFeatureCols",
+($fz = function () {
+if (this.alignPanel.getFeatureRenderer () != null && this.viewport.getFeaturesDisplayed () != null) {
+return this.alignPanel.getFeatureRenderer ().getDisplayedFeatureCols ();
+}return null;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "outputFeatures",
+function (displayTextbox, format) {
+var features;
+if (format.equalsIgnoreCase ("Jalview")) {
+features = new jalview.io.FeaturesFile ().printJalviewFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
+} else {
+features = new jalview.io.FeaturesFile ().printGFFFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
+}if (displayTextbox) {
+var frimport = false;
+if (features == null || features.equals ("No Features Visible")) {
+features = "# No features visible - paste some and import them here.";
+frimport = true;
+}var cap = new jalview.appletgui.CutAndPasteTransfer (frimport, this);
+if (frimport) {
+cap.setAnnotationImport ();
+}var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.features"), 600, 500);
+cap.setText (features);
+} else {
+if (features == null) {
+features = "";
+}}return features;
+}, "~B,~S");
+Clazz.defineMethod (c$, "launchFullApplication",
+function () {
+var url = new StringBuffer (this.jalviewServletURL);
+var firstSep = url.lastIndexOf ("?") > url.lastIndexOf ("/") ? "&" : "?";
+url.append (firstSep);
+var applet = this.viewport.applet;
+var s = applet.startupFile;
+url.append ("open=" + this.appendProtocol (s));
+if (this.viewport.applet.features != null) {
+url.append ("&features=");
+url.append (this.appendProtocol (applet.features));
+}if (applet.annotations != null) {
+url.append ("&annotations=");
+url.append (this.appendProtocol (applet.annotations));
+}if (applet.jnetFile != null) {
+url.append ("&annotations=");
+url.append (this.appendProtocol (applet.jnetFile));
+}if (applet.defaultColour != null) {
+url.append ("&colour=" + this.removeWhiteSpace (applet.defaultColour));
+}if (applet.userDefinedColour != null) {
+url.append ("&colour=" + this.removeWhiteSpace (applet.userDefinedColour));
+}if (applet.treeFile != null) {
+url.append ("&tree=" + this.appendProtocol (applet.treeFile));
+}this.showURL (url.toString (), "FULL_APP");
+});
+Clazz.defineMethod (c$, "removeWhiteSpace",
+function (colour) {
+var sb = new StringBuffer ();
+for (var i = 0; i < colour.length; i++) {
+if (Character.isWhitespace (colour.charAt (i))) {
+sb.append ("%20");
+} else {
+sb.append (colour.charAt (i));
+}}
+return sb.toString ();
+}, "~S");
+Clazz.defineMethod (c$, "appendProtocol",
+function (url) {
+try {
+ new java.net.URL (url);
+url = java.net.URLEncoder.encode (url);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, java.net.MalformedURLException)) {
+url = this.viewport.applet.getCodeBase () + url;
+} else {
+throw ex;
+}
+}
+return url;
+}, "~S");
+Clazz.defineMethod (c$, "closeMenuItem_actionPerformed",
+function () {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel);
+if (this.alignPanel.seqPanel != null && this.alignPanel.seqPanel.seqCanvas != null) {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.seqPanel.seqCanvas);
+}if (this.alignPanel.idPanel != null && this.alignPanel.idPanel.idCanvas != null) {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.idPanel.idCanvas);
+}if (jalview.appletgui.PaintRefresher.components.size () == 0 && this.viewport.applet == null) {
+System.exit (0);
+} else {
+}this.viewport = null;
+this.alignPanel = null;
+this.dispose ();
+});
+Clazz.defineMethod (c$, "updateEditMenuBar",
+function () {
+if (this.viewport.getHistoryList ().size () > 0) {
+this.undoMenuItem.setEnabled (true);
+var command = this.viewport.getHistoryList ().peek ();
+this.undoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.undo_command", Clazz.newArray (-1, [command.getDescription ()])));
+} else {
+this.undoMenuItem.setEnabled (false);
+this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+}if (this.viewport.getRedoList ().size () > 0) {
+this.redoMenuItem.setEnabled (true);
+var command = this.viewport.getRedoList ().peek ();
+this.redoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.redo_command", Clazz.newArray (-1, [command.getDescription ()])));
+} else {
+this.redoMenuItem.setEnabled (false);
+this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
+}});
+Clazz.overrideMethod (c$, "addHistoryItem",
+function (command) {
+if (command.getSize () > 0) {
+this.viewport.addToHistoryList (command);
+this.viewport.clearRedoList ();
+this.updateEditMenuBar ();
+this.viewport.updateHiddenColumns ();
+}}, "jalview.commands.CommandI");
+Clazz.defineMethod (c$, "undoMenuItem_actionPerformed",
+function () {
+if (this.viewport.getHistoryList ().isEmpty ()) {
+return;
+}var command = this.viewport.getHistoryList ().pop ();
+this.viewport.addToRedoList (command);
+command.undoCommand (null);
+var originalSource = this.getOriginatingSource (command);
+if (originalSource !== this.viewport) {
+System.err.println ("Warning: Viewport object mismatch whilst undoing");
+}originalSource.updateHiddenColumns ();
+this.updateEditMenuBar ();
+originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "redoMenuItem_actionPerformed",
+function () {
+if (this.viewport.getRedoList ().isEmpty ()) {
+return;
+}var command = this.viewport.getRedoList ().pop ();
+this.viewport.addToHistoryList (command);
+command.doCommand (null);
+var originalSource = this.getOriginatingSource (command);
+if (originalSource !== this.viewport) {
+System.err.println ("Warning: Viewport object mismatch whilst re-doing");
+}originalSource.updateHiddenColumns ();
+this.updateEditMenuBar ();
+originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "getOriginatingSource",
+function (command) {
+var originalSource = null;
+var al = null;
+if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {
+var editCommand = command;
+al = editCommand.getAlignment ();
+var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
+for (var i = 0; i < comps.size (); i++) {
+if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+if (al === (comps.elementAt (i)).av.getAlignment ()) {
+originalSource = (comps.elementAt (i)).av;
+break;
+}}}
+}if (originalSource == null) {
+if (al != null) {
+jalview.appletgui.PaintRefresher.validateSequences (al, this.viewport.getAlignment ());
+}originalSource = this.viewport;
+}return originalSource;
+}, "jalview.commands.CommandI");
+Clazz.defineMethod (c$, "moveSelectedSequences",
+function (up) {
+var sg = this.viewport.getSelectionGroup ();
+if (sg == null) {
+return;
+}this.viewport.getAlignment ().moveSelectedSequencesByOne (sg, up ? null : this.viewport.getHiddenRepSequences (), up);
+this.alignPanel.paintAlignment (true);
+var complement = this.viewport.getCodingComplement ();
+if (complement != null) {
+var mappedSelection = jalview.util.MappingUtils.mapSequenceGroup (sg, this.viewport, complement);
+complement.getAlignment ().moveSelectedSequencesByOne (mappedSelection, up ? null : complement.getHiddenRepSequences (), up);
+}}, "~B");
+Clazz.defineMethod (c$, "slideSequences",
+function (right, size) {
+var sg = new java.util.Vector ();
+if (this.viewport.cursorMode) {
+sg.add (this.viewport.getAlignment ().getSequenceAt (this.alignPanel.seqPanel.seqCanvas.cursorY));
+} else if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () != this.viewport.getAlignment ().getHeight ()) {
+sg = this.viewport.getSelectionGroup ().getSequences (this.viewport.getHiddenRepSequences ());
+}if (sg.size () < 1) {
+return;
+}var invertGroup = new java.util.Vector ();
+for (var i = 0; i < this.viewport.getAlignment ().getHeight (); i++) {
+if (!sg.contains (this.viewport.getAlignment ().getSequenceAt (i))) {
+invertGroup.addElement (this.viewport.getAlignment ().getSequenceAt (i));
+}}
+var seqs1 = sg.toArray ( new Array (sg.size ()));
+var seqs2 = invertGroup.toArray ( new Array (invertGroup.size ()));
+for (var i = 0; i < invertGroup.size (); i++) {
+seqs2[i] = invertGroup.elementAt (i);
+}
+var ssc;
+if (right) {
+ssc = new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs2, seqs1, size, this.viewport.getGapCharacter ());
+} else {
+ssc = new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs1, seqs2, size, this.viewport.getGapCharacter ());
+}var groupAdjustment = 0;
+if (ssc.getGapsInsertedBegin () && right) {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (size, 0);
+} else {
+groupAdjustment = size;
+}} else if (!ssc.getGapsInsertedBegin () && !right) {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (-size, 0);
+} else {
+groupAdjustment = -size;
+}}if (groupAdjustment != 0) {
+this.viewport.getSelectionGroup ().setStartRes (this.viewport.getSelectionGroup ().getStartRes () + groupAdjustment);
+this.viewport.getSelectionGroup ().setEndRes (this.viewport.getSelectionGroup ().getEndRes () + groupAdjustment);
+}var appendHistoryItem = false;
+var historyList = this.viewport.getHistoryList ();
+if (historyList != null && historyList.size () > 0 && Clazz.instanceOf (historyList.peek (), jalview.commands.SlideSequencesCommand)) {
+appendHistoryItem = ssc.appendSlideCommand (historyList.peek ());
+}if (!appendHistoryItem) {
+this.addHistoryItem (ssc);
+}this.repaint ();
+}, "~B,~N");
+Clazz.defineMethod (c$, "copy_actionPerformed",
+function () {
+if (this.viewport.getSelectionGroup () == null) {
+return;
+}var sg = this.viewport.getSelectionGroup ();
+jalview.appletgui.AlignFrame.copiedSequences = new StringBuffer ();
+var orderedSeqs = new java.util.HashMap ();
+for (var i = 0; i < sg.getSize (); i++) {
+var seq = sg.getSequenceAt (i);
+var index = this.viewport.getAlignment ().findIndex (seq);
+orderedSeqs.put (new Integer (index), seq);
+}
+var index = 0;
+var startRes;
+var endRes;
+var ch;
+if (this.viewport.hasHiddenColumns () && this.viewport.getSelectionGroup () != null) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns = new java.util.Vector ();
+var hiddenOffset = this.viewport.getSelectionGroup ().getStartRes ();
+for (var region, $region = this.viewport.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0] - hiddenOffset, region[1] - hiddenOffset]));
+}
+} else {
+jalview.appletgui.AlignFrame.copiedHiddenColumns = null;
+}for (var i = 0; i < sg.getSize (); i++) {
+var seq = null;
+while (seq == null) {
+if (orderedSeqs.containsKey (new Integer (index))) {
+seq = orderedSeqs.get (new Integer (index));
+index++;
+break;
+} else {
+index++;
+}}
+startRes = seq.findPosition (sg.getStartRes ());
+endRes = 0;
+for (var j = 0; j < sg.getEndRes () + 1 && j < seq.getLength (); j++) {
+ch = seq.getCharAt (j);
+if (!jalview.util.Comparison.isGap ((ch))) {
+endRes++;
+}}
+if (endRes > 0) {
+endRes += seq.getStart () - 1;
+}jalview.appletgui.AlignFrame.copiedSequences.append (seq.getName () + "\t" + startRes + "\t" + endRes + "\t" + seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1) + "\n");
+}
+});
+Clazz.defineMethod (c$, "pasteNew_actionPerformed",
+function () {
+this.paste (true);
+});
+Clazz.defineMethod (c$, "pasteThis_actionPerformed",
+function () {
+this.paste (false);
+});
+Clazz.defineMethod (c$, "paste",
+function (newAlignment) {
+try {
+if (jalview.appletgui.AlignFrame.copiedSequences == null) {
+return;
+}var st = new java.util.StringTokenizer (jalview.appletgui.AlignFrame.copiedSequences.toString ());
+var seqs = new java.util.Vector ();
+while (st.hasMoreElements ()) {
+var name = st.nextToken ();
+var start = Integer.parseInt (st.nextToken ());
+var end = Integer.parseInt (st.nextToken ());
+seqs.addElement ( new jalview.datamodel.Sequence (name, st.nextToken (), start, end));
+}
+var newSeqs = new Array (seqs.size ());
+for (var i = 0; i < seqs.size (); i++) {
+newSeqs[i] = seqs.elementAt (i);
+}
+if (newAlignment) {
+var newtitle = jalview.util.MessageManager.getString ("label.copied_sequences");
+if (this.getTitle ().startsWith (jalview.util.MessageManager.getString ("label.copied_sequences"))) {
+newtitle = this.getTitle ();
+} else {
+newtitle = newtitle.concat (jalview.util.MessageManager.formatMessage ("label.from_msname", Clazz.newArray (-1, [this.getTitle ()])));
+}var af = new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (newSeqs), this.viewport.applet, newtitle, false);
+if (jalview.appletgui.AlignFrame.copiedHiddenColumns != null) {
+for (var i = 0; i < jalview.appletgui.AlignFrame.copiedHiddenColumns.size (); i++) {
+var region = jalview.appletgui.AlignFrame.copiedHiddenColumns.elementAt (i);
+af.viewport.hideColumns (region[0], region[1]);
+}
+}jalview.bin.JalviewLite.addFrame (af, newtitle, this.frameWidth, this.frameHeight);
+} else {
+this.addSequences (newSeqs);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}, "~B");
+Clazz.defineMethod (c$, "addSequences",
+function (seqs) {
+for (var i = 0; i < seqs.length; i++) {
+this.viewport.getAlignment ().addSequence (seqs[i]);
+}
+this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.add_sequences"), jalview.commands.EditCommand.Action.PASTE, seqs, 0, this.viewport.getAlignment ().getWidth (), this.viewport.getAlignment ()));
+this.viewport.setEndSeq (this.viewport.getAlignment ().getHeight ());
+this.viewport.getAlignment ().getWidth ();
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+}, "~A");
+Clazz.defineMethod (c$, "cut_actionPerformed",
+function () {
+this.copy_actionPerformed ();
+this.delete_actionPerformed ();
+});
+Clazz.defineMethod (c$, "delete_actionPerformed",
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg == null) {
+return;
+}var seqs = new java.util.Vector ();
+var seq;
+for (var i = 0; i < sg.getSize (); i++) {
+seq = sg.getSequenceAt (i);
+seqs.addElement (seq);
+}
+if (sg.getSize () == this.viewport.getAlignment ().getHeight ()) {
+this.viewport.getColumnSelection ().removeElements (sg.getStartRes (), sg.getEndRes () + 1);
+}var cut = new Array (seqs.size ());
+for (var i = 0; i < seqs.size (); i++) {
+cut[i] = seqs.elementAt (i);
+}
+this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.cut_sequences"), jalview.commands.EditCommand.Action.CUT, cut, sg.getStartRes (), sg.getEndRes () - sg.getStartRes () + 1, this.viewport.getAlignment ()));
+this.viewport.setSelectionGroup (null);
+this.viewport.getAlignment ().deleteGroup (sg);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+if (this.viewport.getAlignment ().getHeight () < 1) {
+this.setVisible (false);
+}this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "showGroupConsensus_actionPerformed",
+function () {
+this.viewport.setShowGroupConsensus (this.showGroupConsensus.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "showGroupConservation_actionPerformed",
+function () {
+this.viewport.setShowGroupConservation (this.showGroupConservation.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "showConsensusHistogram_actionPerformed",
+function () {
+this.viewport.setShowConsensusHistogram (this.showConsensusHistogram.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "showSequenceLogo_actionPerformed",
+function () {
+this.viewport.setShowSequenceLogo (this.showSequenceLogo.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "normSequenceLogo_actionPerformed",
+function () {
+this.showSequenceLogo.setState (true);
+this.viewport.setShowSequenceLogo (true);
+this.viewport.setNormaliseSequenceLogo (this.normSequenceLogo.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "applyAutoAnnotationSettings_actionPerformed",
+function () {
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "makeGrpsFromSelection_actionPerformed",
+function () {
+if (this.avc.makeGroupsFromSelection ()) {
+jalview.appletgui.PaintRefresher.Refresh (this, this.viewport.getSequenceSetId ());
+this.alignPanel.updateAnnotation ();
+this.alignPanel.paintAlignment (true);
+}});
+Clazz.defineMethod (c$, "createGroup_actionPerformed",
+function () {
+this.avc.createGroup ();
+});
+Clazz.defineMethod (c$, "unGroup_actionPerformed",
+function () {
+if (this.avc.unGroup ()) {
+this.alignPanel.alignmentChanged ();
+}});
+Clazz.defineMethod (c$, "deleteGroups_actionPerformed",
+function () {
+if (this.avc.deleteGroups ()) {
+this.alignPanel.alignmentChanged ();
+}});
+Clazz.defineMethod (c$, "selectAllSequenceMenuItem_actionPerformed",
+function () {
+var sg = new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.viewport.getAlignment ().getSequenceAt (i), false);
+}
+sg.setEndRes (this.viewport.getAlignment ().getWidth () - 1);
+this.viewport.setSelectionGroup (sg);
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "deselectAllSequenceMenuItem_actionPerformed",
+function () {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.keyboardNo1 = null;
+this.alignPanel.seqPanel.keyboardNo2 = null;
+}this.viewport.setSelectionGroup (null);
+this.viewport.getColumnSelection ().clear ();
+this.viewport.setSelectionGroup (null);
+this.alignPanel.idPanel.idCanvas.searchResults = null;
+this.alignPanel.seqPanel.seqCanvas.highlightSearchResults (null);
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "invertSequenceMenuItem_actionPerformed",
+function () {
+var sg = this.viewport.getSelectionGroup ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+sg.addOrRemove (this.viewport.getAlignment ().getSequenceAt (i), false);
+}
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "invertColSel_actionPerformed",
+function () {
+this.viewport.invertColumnSelection ();
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "trimAlignment",
+function (trimLeft) {
+var colSel = this.viewport.getColumnSelection ();
+var column;
+if (colSel.size () > 0) {
+if (trimLeft) {
+column = colSel.getMin ();
+} else {
+column = colSel.getMax ();
+}var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var trimRegion;
+if (trimLeft) {
+trimRegion = new jalview.commands.TrimRegionCommand ("Remove Left", jalview.commands.TrimRegionCommand.TRIM_LEFT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
+this.viewport.setStartRes (0);
+} else {
+trimRegion = new jalview.commands.TrimRegionCommand ("Remove Right", jalview.commands.TrimRegionCommand.TRIM_RIGHT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
+}this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_columns", Clazz.newArray (-1, [Integer.$valueOf (trimRegion.getSize ()).toString ()])));
+this.addHistoryItem (trimRegion);
+for (var sg, $sg = this.viewport.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if ((trimLeft && !sg.adjustForRemoveLeft (column)) || (!trimLeft && !sg.adjustForRemoveRight (column))) {
+this.viewport.getAlignment ().deleteGroup (sg);
+}}
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+}}, "~B");
+Clazz.defineMethod (c$, "removeGappedColumnMenuItem_actionPerformed",
+function () {
+var start = 0;
+var end = this.viewport.getAlignment ().getWidth () - 1;
+var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+start = this.viewport.getSelectionGroup ().getStartRes ();
+end = this.viewport.getSelectionGroup ().getEndRes ();
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var removeGapCols = new jalview.commands.RemoveGapColCommand ("Remove Gapped Columns", seqs, start, end, this.viewport.getAlignment ());
+this.addHistoryItem (removeGapCols);
+this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_empty_columns", Clazz.newArray (-1, [Integer.$valueOf (removeGapCols.getSize ()).toString ()])));
+var seq = this.viewport.getAlignment ().getSequenceAt (0);
+var startRes = seq.findPosition (this.viewport.startRes);
+this.viewport.setStartRes (seq.findIndex (startRes) - 1);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "removeAllGapsMenuItem_actionPerformed",
+function () {
+var start = 0;
+var end = this.viewport.getAlignment ().getWidth () - 1;
+var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+start = this.viewport.getSelectionGroup ().getStartRes ();
+end = this.viewport.getSelectionGroup ().getEndRes ();
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var seq = this.viewport.getAlignment ().getSequenceAt (0);
+var startRes = seq.findPosition (this.viewport.startRes);
+this.addHistoryItem ( new jalview.commands.RemoveGapsCommand ("Remove Gaps", seqs, start, end, this.viewport.getAlignment ()));
+this.viewport.setStartRes (seq.findIndex (startRes) - 1);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "findMenuItem_actionPerformed",
+function () {
+ new jalview.appletgui.Finder (this.alignPanel);
+});
+Clazz.defineMethod (c$, "newView",
+function (viewtitle) {
+var newal;
+if (this.viewport.hasHiddenRows ()) {
+newal = new jalview.datamodel.Alignment (this.viewport.getAlignment ().getHiddenSequences ().getFullAlignment ().getSequencesArray ());
+} else {
+newal = new jalview.datamodel.Alignment (this.viewport.getAlignment ().getSequencesArray ());
+}if (this.viewport.getAlignment ().getAlignmentAnnotation () != null) {
+for (var i = 0; i < this.viewport.getAlignment ().getAlignmentAnnotation ().length; i++) {
+if (!this.viewport.getAlignment ().getAlignmentAnnotation ()[i].autoCalculated) {
+newal.addAnnotation (this.viewport.getAlignment ().getAlignmentAnnotation ()[i]);
+}}
+}var newaf = new jalview.appletgui.AlignFrame (newal, this.viewport.applet, "", false);
+newaf.viewport.setSequenceSetId (this.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (this.alignPanel, this.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel, newaf.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.idPanel.idCanvas, newaf.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.seqPanel.seqCanvas, newaf.alignPanel.av.getSequenceSetId ());
+var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
+var viewSize = -1;
+for (var i = 0; i < comps.size (); i++) {
+if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+viewSize++;
+}}
+var title = String.instantialize (this.getTitle ());
+if (viewtitle != null) {
+title = viewtitle + " ( " + title + ")";
+} else {
+if (title.indexOf ("(View") > -1) {
+title = title.substring (0, title.indexOf ("(View"));
+}title += "(View " + viewSize + ")";
+}newaf.setTitle (title.toString ());
+newaf.viewport.setHistoryList (this.viewport.getHistoryList ());
+newaf.viewport.setRedoList (this.viewport.getRedoList ());
+return newaf;
+}, "~S");
+Clazz.defineMethod (c$, "getFeatureGroups",
+function () {
+var fr = null;
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+var gps = fr.getFeatureGroups ();
+var _gps = gps.toArray ( new Array (gps.size ()));
+return _gps;
+}return null;
+});
+Clazz.defineMethod (c$, "getFeatureGroupsOfState",
+function (visible) {
+var fr = null;
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+var gps = fr.getGroups (visible);
+var _gps = gps.toArray ( new Array (gps.size ()));
+return _gps;
+}return null;
+}, "~B");
+Clazz.defineMethod (c$, "setFeatureGroupState",
+function (groups, state) {
+var fr = null;
+this.sequenceFeatures.setState (true);
+this.viewport.setShowSequenceFeatures (true);
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+fr.setGroupVisibility (java.util.Arrays.asList (groups), state);
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+if (this.alignPanel.overviewPanel != null) {
+this.alignPanel.overviewPanel.updateOverviewImage ();
+}}}, "~A,~B");
+Clazz.defineMethod (c$, "seqLimits_itemStateChanged",
+function () {
+this.viewport.setShowJVSuffix (this.seqLimits.getState ());
+this.alignPanel.fontChanged ();
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "colourTextMenuItem_actionPerformed",
+function () {
+this.viewport.setColourText (this.colourTextMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "displayNonconservedMenuItem_actionPerformed",
+function () {
+this.viewport.setShowUnconserved (this.displayNonconservedMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "wrapMenuItem_actionPerformed",
+function () {
+this.viewport.setWrapAlignment (this.wrapMenuItem.getState ());
+this.alignPanel.setWrapAlignment (this.wrapMenuItem.getState ());
+this.scaleAbove.setEnabled (this.wrapMenuItem.getState ());
+this.scaleLeft.setEnabled (this.wrapMenuItem.getState ());
+this.scaleRight.setEnabled (this.wrapMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "overviewMenuItem_actionPerformed",
+function () {
+if (this.alignPanel.overviewPanel != null) {
+return;
+}var frame = new awt2swing.Frame ();
+var overview = new jalview.appletgui.OverviewPanel (this.alignPanel);
+frame.add (overview);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.overview_params", Clazz.newArray (-1, [this.getTitle ()])), overview.getPreferredSize ().width, overview.getPreferredSize ().height + 50);
+frame.pack ();
+var ap = this.alignPanel;
+frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1, this, Clazz.cloneFinals ("ap", ap))));
+this.alignPanel.setOverviewPanel (overview);
+});
+Clazz.overrideMethod (c$, "changeColour",
+function (cs) {
+var threshold = 0;
+if (cs != null) {
+if (this.viewport.getAbovePIDThreshold ()) {
+this.viewport.setThreshold (jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, cs, "Background"));
+}if (this.viewport.getConservationSelected ()) {
+cs.setConservationApplied (true);
+this.viewport.setIncrement (jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, cs, "Background"));
+} else {
+cs.setConservationApplied (false);
+}}this.viewport.setGlobalColourScheme (cs);
+if (this.alignPanel.getOverviewPanel () != null) {
+this.alignPanel.getOverviewPanel ().updateOverviewImage ();
+}jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.viewport.applet).sequenceColoursChanged (this.alignPanel);
+this.alignPanel.paintAlignment (true);
+}, "jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "modifyPID_actionPerformed",
+function () {
+if (this.viewport.getAbovePIDThreshold () && this.viewport.getGlobalColourScheme () != null) {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
+jalview.appletgui.SliderPanel.showPIDSlider ();
+}});
+Clazz.defineMethod (c$, "modifyConservation_actionPerformed",
+function () {
+if (this.viewport.getConservationSelected () && this.viewport.getGlobalColourScheme () != null) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
+jalview.appletgui.SliderPanel.showConservationSlider ();
+}});
+Clazz.defineMethod (c$, "conservationMenuItem_actionPerformed",
+function () {
+this.viewport.setConservationSelected (this.conservationMenuItem.getState ());
+this.viewport.setAbovePIDThreshold (false);
+this.abovePIDThreshold.setState (false);
+this.changeColour (this.viewport.getGlobalColourScheme ());
+this.modifyConservation_actionPerformed ();
+});
+Clazz.defineMethod (c$, "abovePIDThreshold_actionPerformed",
+function () {
+this.viewport.setAbovePIDThreshold (this.abovePIDThreshold.getState ());
+this.conservationMenuItem.setState (false);
+this.viewport.setConservationSelected (false);
+this.changeColour (this.viewport.getGlobalColourScheme ());
+this.modifyPID_actionPerformed ();
+});
+Clazz.defineMethod (c$, "sortPairwiseMenuItem_actionPerformed",
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByPID (this.viewport.getAlignment (), this.viewport.getAlignment ().getSequenceAt (0), null);
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Pairwise Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "sortIDMenuItem_actionPerformed",
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByID (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("ID Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "sortLengthMenuItem_actionPerformed",
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByLength (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Length Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "sortGroupMenuItem_actionPerformed",
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByGroup (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Group Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "removeRedundancyMenuItem_actionPerformed",
+function () {
+ new jalview.appletgui.RedundancyPanel (this.alignPanel);
+});
+Clazz.defineMethod (c$, "pairwiseAlignmentMenuItem_actionPerformed",
+function () {
+if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) {
+var frame = new awt2swing.Frame ();
+frame.add ( new jalview.appletgui.PairwiseAlignPanel (this.alignPanel));
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.pairwise_alignment"), 600, 500);
+}});
+Clazz.defineMethod (c$, "PCAMenuItem_actionPerformed",
+function () {
+if (!this.viewport.getAlignment ().isAligned (false)) {
+var current;
+var Width = this.viewport.getAlignment ().getWidth ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+current = this.viewport.getAlignment ().getSequenceAt (i);
+if (current.getLength () < Width) {
+current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
+}}
+this.alignPanel.paintAlignment (true);
+}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () < 4 && this.viewport.getSelectionGroup ().getSize () > 0) || this.viewport.getAlignment ().getHeight () < 4) {
+return;
+}try {
+ new jalview.appletgui.PCAPanel (this.viewport);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, OutOfMemoryError)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "averageDistanceTreeMenuItem_actionPerformed",
+function () {
+this.NewTreePanel ("AV", "PID", "Average distance tree using PID");
+});
+Clazz.defineMethod (c$, "neighbourTreeMenuItem_actionPerformed",
+function () {
+this.NewTreePanel ("NJ", "PID", "Neighbour joining tree using PID");
+});
+Clazz.defineMethod (c$, "njTreeBlosumMenuItem_actionPerformed",
+function () {
+this.NewTreePanel ("NJ", "BL", "Neighbour joining tree using BLOSUM62");
+});
+Clazz.defineMethod (c$, "avTreeBlosumMenuItem_actionPerformed",
+function () {
+this.NewTreePanel ("AV", "BL", "Average distance tree using BLOSUM62");
+});
+Clazz.defineMethod (c$, "NewTreePanel",
+function (type, pwType, title) {
+if (!this.viewport.getAlignment ().isAligned (false)) {
+var current;
+var Width = this.viewport.getAlignment ().getWidth ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+current = this.viewport.getAlignment ().getSequenceAt (i);
+if (current.getLength () < Width) {
+current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
+}}
+this.alignPanel.paintAlignment (true);
+}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) || (this.viewport.getAlignment ().getHeight () > 1)) {
+var tp = new jalview.appletgui.TreePanel (this.alignPanel, type, pwType);
+this.addTreeMenuItem (tp, title);
+jalview.bin.JalviewLite.addFrame (tp, title, 600, 500);
+}}, "~S,~S,~S");
+Clazz.defineMethod (c$, "loadTree_actionPerformed",
+function () {
+var cap = new jalview.appletgui.CutAndPasteTransfer (true, this);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_newick_tree_file"));
+cap.setTreeImport ();
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.paste_newick_file"), 400, 300);
+});
+Clazz.defineMethod (c$, "loadTree",
+function (tree, treeFile) {
+var tp = new jalview.appletgui.TreePanel (this.alignPanel, treeFile, jalview.util.MessageManager.getString ("label.load_tree_from_file"), tree);
+jalview.bin.JalviewLite.addFrame (tp, treeFile, 600, 500);
+this.addTreeMenuItem (tp, treeFile);
+}, "jalview.io.NewickFile,~S");
+Clazz.defineMethod (c$, "sortByTree",
+function (treePanel, title) {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByTree (this.viewport.getAlignment (), treePanel.getTree ());
+this.addHistoryItem ( new jalview.commands.OrderCommand (jalview.util.MessageManager.formatMessage ("label.order_by_params", Clazz.newArray (-1, [title])), oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+}, "jalview.appletgui.TreePanel,~S");
+Clazz.defineMethod (c$, "addTreeMenuItem",
+function (treePanel, title) {
+var item = new awt2swing.MenuItem (title);
+this.sortByTreeMenu.add (item);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$2") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$2, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title))));
+treePanel.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$3") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$3, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title, "item", item))));
+}, "jalview.appletgui.TreePanel,~S");
+Clazz.defineMethod (c$, "sortBy",
+function (alorder, undoname) {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+if ((this.viewport.applet, jalview.bin.JalviewLite).debug) {
+System.err.println ("Sorting " + alorder.getOrder ().size () + " in alignment '" + this.getTitle () + "'");
+}jalview.analysis.AlignmentSorter.sortBy (this.viewport.getAlignment (), alorder);
+if (undoname != null) {
+this.addHistoryItem ( new jalview.commands.OrderCommand (undoname, oldOrder, this.viewport.getAlignment ()));
+}this.alignPanel.paintAlignment (true);
+return true;
+}, "jalview.datamodel.AlignmentOrder,~S");
+Clazz.defineMethod (c$, "documentation_actionPerformed",
+function () {
+this.alignPanel.av.applet.openJalviewHelpUrl ();
+});
+Clazz.defineMethod (c$, "about_actionPerformed",
+function () {
+if (!Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1AboutPanel")) {
+jalview.appletgui.AlignFrame.$AlignFrame$1AboutPanel$ ();
+}
+var frame = new awt2swing.Frame ();
+frame.add (Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1AboutPanel, this, null, jalview.bin.JalviewLite.getVersion (), jalview.bin.JalviewLite.getBuildDate ()));
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.jalview"), 580, 220);
+});
+Clazz.defineMethod (c$, "showURL",
+function (url, target) {
+if (this.viewport.applet == null) {
+System.out.println ("Not running as applet - no browser available.");
+} else {
+this.viewport.applet.showURL (url, target);
+}}, "~S,~S");
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setMenuBar (this.alignFrameMenuBar);
+this.inputText.setLabel (jalview.util.MessageManager.getString ("label.input_from_textbox"));
+this.inputText.addActionListener (this);
+var outputTextboxMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("label.out_to_textbox"));
+for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {
+var item = new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$4") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$4, this, null)));
+outputTextboxMenu.add (item);
+}
+this.closeMenuItem.addActionListener (this);
+this.loadApplication.addActionListener (this);
+this.$loadTree.addActionListener (this);
+this.$loadAnnotations.addActionListener (this);
+this.$outputFeatures.addActionListener (this);
+this.$outputAnnotations.addActionListener (this);
+this.undoMenuItem.setEnabled (false);
+this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+this.undoMenuItem.addActionListener (this);
+this.redoMenuItem.setEnabled (false);
+this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
+this.redoMenuItem.addActionListener (this);
+this.copy.setLabel (jalview.util.MessageManager.getString ("action.copy"));
+this.copy.addActionListener (this);
+this.cut.setLabel (jalview.util.MessageManager.getString ("action.cut"));
+this.cut.addActionListener (this);
+this.$delete.setLabel (jalview.util.MessageManager.getString ("action.delete"));
+this.$delete.addActionListener (this);
+this.pasteMenu.setLabel (jalview.util.MessageManager.getString ("action.paste"));
+this.pasteNew.setLabel (jalview.util.MessageManager.getString ("label.to_new_alignment"));
+this.pasteNew.addActionListener (this);
+this.pasteThis.setLabel (jalview.util.MessageManager.getString ("label.to_this_alignment"));
+this.pasteThis.addActionListener (this);
+this.remove2LeftMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_left"));
+this.remove2LeftMenuItem.addActionListener (this);
+this.remove2RightMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_right"));
+this.remove2RightMenuItem.addActionListener (this);
+this.removeGappedColumnMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_empty_columns"));
+this.removeGappedColumnMenuItem.addActionListener (this);
+this.removeAllGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_all_gaps"));
+this.removeAllGapsMenuItem.addActionListener (this);
+this.removeRedundancyMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_redundancy").concat ("..."));
+this.removeRedundancyMenuItem.addActionListener (this);
+this.findMenuItem.setLabel (jalview.util.MessageManager.getString ("action.find"));
+this.findMenuItem.addActionListener (this);
+this.selectAllSequenceMenuItem.addActionListener (this);
+this.deselectAllSequenceMenuItem.addActionListener (this);
+this.invertSequenceMenuItem.setLabel (jalview.util.MessageManager.getString ("action.invert_sequence_selection"));
+this.invertSequenceMenuItem.addActionListener (this);
+this.invertColSel.setLabel (jalview.util.MessageManager.getString ("action.invert_column_selection"));
+this.invertColSel.addActionListener (this);
+this.deleteGroups.setLabel (jalview.util.MessageManager.getString ("action.undefine_groups"));
+this.deleteGroups.addActionListener (this);
+this.grpsFromSelection.setLabel (jalview.util.MessageManager.getString ("action.make_groups_selection"));
+this.grpsFromSelection.addActionListener (this);
+this.createGroup.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
+this.unGroup.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
+this.annotationColumnSelection.setLabel ("Select by Annotation");
+this.annotationColumnSelection.addActionListener (this);
+this.$newView.setLabel (jalview.util.MessageManager.getString ("action.new_view"));
+this.$newView.addActionListener (this);
+var showMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.show"));
+this.showColumns.setLabel (jalview.util.MessageManager.getString ("label.all_columns"));
+this.showSeqs.setLabel (jalview.util.MessageManager.getString ("label.all_sequences"));
+var hideMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.hide"));
+this.hideColumns.setLabel (jalview.util.MessageManager.getString ("label.selected_columns"));
+this.hideSequences.setLabel (jalview.util.MessageManager.getString ("label.selected_sequences"));
+this.hideAllButSelection.setLabel (jalview.util.MessageManager.getString ("label.all_but_selected_region"));
+this.hideAllSelection.setLabel (jalview.util.MessageManager.getString ("label.selected_region"));
+this.showAllHidden.setLabel (jalview.util.MessageManager.getString ("label.all_sequences_columns"));
+this.showColumns.addActionListener (this);
+this.showSeqs.addActionListener (this);
+this.hideColumns.addActionListener (this);
+this.hideSequences.addActionListener (this);
+this.hideAllButSelection.addActionListener (this);
+this.hideAllSelection.addActionListener (this);
+this.showAllHidden.addActionListener (this);
+this.featureSettings.setLabel (jalview.util.MessageManager.getString ("label.feature_settings"));
+this.featureSettings.addActionListener (this);
+this.sequenceFeatures.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_features"));
+this.sequenceFeatures.addItemListener (this);
+this.sequenceFeatures.setState (false);
+this.followMouseOverFlag.setLabel (jalview.util.MessageManager.getString ("label.automatic_scrolling"));
+this.followMouseOverFlag.addItemListener (this);
+this.alProperties.addActionListener (this);
+this.overviewMenuItem.setLabel (jalview.util.MessageManager.getString ("label.overview_window"));
+this.overviewMenuItem.addActionListener (this);
+this.annotationPanelMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.annotationPanelMenuItem.addItemListener (this);
+this.showGroupConsensus.setLabel (jalview.util.MessageManager.getString ("label.group_consensus"));
+this.showGroupConservation.setLabel (jalview.util.MessageManager.getString ("label.group_conservation"));
+this.showConsensusHistogram.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_histogram"));
+this.showSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_logo"));
+this.normSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.norm_consensus_logo"));
+this.applyAutoAnnotationSettings.setLabel (jalview.util.MessageManager.getString ("label.apply_all_groups"));
+this.applyAutoAnnotationSettings.setState (true);
+var autoAnnMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("label.autocalculated_annotation"));
+this.showGroupConsensus.addItemListener (this);
+this.showGroupConservation.addItemListener (this);
+this.showConsensusHistogram.addItemListener (this);
+this.showSequenceLogo.addItemListener (this);
+this.normSequenceLogo.addItemListener (this);
+this.applyAutoAnnotationSettings.addItemListener (this);
+this.showAlignmentAnnotations = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_al_annotations"));
+this.showSequenceAnnotations = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_seq_annotations"));
+this.sortAnnBySequence = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_sequence"));
+this.sortAnnByLabel = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_label"));
+this.showAutoFirst = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_first"));
+this.showAutoLast = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_last"));
+this.showAlignmentAnnotations.addItemListener (this);
+this.showSequenceAnnotations.addItemListener (this);
+this.sortAnnBySequence.addItemListener (this);
+this.sortAnnByLabel.addItemListener (this);
+this.showAutoFirst.addItemListener (this);
+this.showAutoLast.addItemListener (this);
+this.$font.setLabel (jalview.util.MessageManager.getString ("action.font"));
+this.$font.addActionListener (this);
+this.scaleAbove.setLabel (jalview.util.MessageManager.getString ("action.scale_above"));
+this.scaleAbove.setState (true);
+this.scaleAbove.setEnabled (false);
+this.scaleAbove.addItemListener (this);
+this.scaleLeft.setEnabled (false);
+this.scaleLeft.setState (true);
+this.scaleLeft.setLabel (jalview.util.MessageManager.getString ("action.scale_left"));
+this.scaleLeft.addItemListener (this);
+this.scaleRight.setEnabled (false);
+this.scaleRight.setState (true);
+this.scaleRight.setLabel (jalview.util.MessageManager.getString ("action.scale_right"));
+this.scaleRight.addItemListener (this);
+this.viewBoxesMenuItem.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
+this.viewBoxesMenuItem.setState (true);
+this.viewBoxesMenuItem.addItemListener (this);
+this.viewTextMenuItem.setLabel (jalview.util.MessageManager.getString ("action.text"));
+this.viewTextMenuItem.setState (true);
+this.viewTextMenuItem.addItemListener (this);
+this.colourTextMenuItem.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
+this.colourTextMenuItem.addItemListener (this);
+this.displayNonconservedMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
+this.displayNonconservedMenuItem.addItemListener (this);
+this.wrapMenuItem.setLabel (jalview.util.MessageManager.getString ("action.wrap"));
+this.wrapMenuItem.addItemListener (this);
+this.renderGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.show_gaps"));
+this.renderGapsMenuItem.setState (true);
+this.renderGapsMenuItem.addItemListener (this);
+this.centreColumnLabelFlag.setLabel (jalview.util.MessageManager.getString ("label.centre_column_labels"));
+this.centreColumnLabelFlag.addItemListener (this);
+this.seqLimits.setState (true);
+this.seqLimits.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_limits"));
+this.seqLimits.addItemListener (this);
+this.applyToAllGroups.setLabel (jalview.util.MessageManager.getString ("label.apply_colour_to_all_groups"));
+this.applyToAllGroups.setState (true);
+this.applyToAllGroups.addItemListener (this);
+this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx"));
+this.clustalColour.addActionListener (this);
+this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
+this.zappoColour.addActionListener (this);
+this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
+this.taylorColour.addActionListener (this);
+this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener (this);
+this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
+this.helixColour.addActionListener (this);
+this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
+this.strandColour.addActionListener (this);
+this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
+this.turnColour.addActionListener (this);
+this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
+this.buriedColour.addActionListener (this);
+this.purinePyrimidineColour.setLabel (jalview.util.MessageManager.getString ("label.purine_pyrimidine"));
+this.purinePyrimidineColour.addActionListener (this);
+this.RNAInteractionColour.setLabel (jalview.util.MessageManager.getString ("label.rna_interaction"));
+this.RNAInteractionColour.addActionListener (this);
+this.RNAHelixColour.setLabel (jalview.util.MessageManager.getString ("action.by_rna_helixes"));
+this.RNAHelixColour.addActionListener (this);
+this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
+this.userDefinedColour.addActionListener (this);
+this.PIDColour.setLabel (jalview.util.MessageManager.getString ("label.percentage_identity"));
+this.PIDColour.addActionListener (this);
+this.BLOSUM62Colour.setLabel (jalview.util.MessageManager.getString ("label.blosum62_score"));
+this.BLOSUM62Colour.addActionListener (this);
+this.tcoffeeColour.setLabel (jalview.util.MessageManager.getString ("label.tcoffee_scores"));
+this.tcoffeeColour.setEnabled (false);
+this.tcoffeeColour.addActionListener (this);
+this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_conservation"));
+this.conservationMenuItem.addItemListener (this);
+this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
+this.noColourmenuItem.addActionListener (this);
+this.abovePIDThreshold.setLabel (jalview.util.MessageManager.getString ("label.above_identity_threshold"));
+this.abovePIDThreshold.addItemListener (this);
+this.nucleotideColour.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
+this.nucleotideColour.addActionListener (this);
+this.modifyPID.setLabel (jalview.util.MessageManager.getString ("label.modify_identity_thereshold"));
+this.modifyPID.addActionListener (this);
+this.modifyConservation.setLabel (jalview.util.MessageManager.getString ("label.modify_conservation_thereshold"));
+this.modifyConservation.addActionListener (this);
+this.annotationColour.setLabel (jalview.util.MessageManager.getString ("action.by_annotation"));
+this.annotationColour.addActionListener (this);
+this.sortPairwiseMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_pairwise_id"));
+this.sortPairwiseMenuItem.addActionListener (this);
+this.sortIDMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_id"));
+this.sortIDMenuItem.addActionListener (this);
+this.sortLengthMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_length"));
+this.sortLengthMenuItem.addActionListener (this);
+this.sortGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_group"));
+this.sortGroupMenuItem.addActionListener (this);
+this.pairwiseAlignmentMenuItem.setLabel (jalview.util.MessageManager.getString ("action.pairwise_alignment"));
+this.pairwiseAlignmentMenuItem.addActionListener (this);
+this.PCAMenuItem.setLabel (jalview.util.MessageManager.getString ("label.principal_component_analysis"));
+this.PCAMenuItem.addActionListener (this);
+this.autoCalculate = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.autocalculate_consensus"), true);
+this.averageDistanceTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_identity"));
+this.averageDistanceTreeMenuItem.addActionListener (this);
+this.neighbourTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_joining_identity"));
+this.neighbourTreeMenuItem.addActionListener (this);
+this.avDistanceTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_bloslum62"));
+this.avDistanceTreeBlosumMenuItem.addActionListener (this);
+this.njTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_blosum62"));
+this.njTreeBlosumMenuItem.addActionListener (this);
+this.sortByTreeMenu.setLabel (jalview.util.MessageManager.getString ("action.by_tree_order"));
+var sortMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.sort"));
+var calculateTreeMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate_tree"));
+this.autoCalculate.addItemListener (this);
+this.$sortByTree.addItemListener (this);
+var helpMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.help"));
+this.documentation.setLabel (jalview.util.MessageManager.getString ("label.documentation"));
+this.documentation.addActionListener (this);
+this.about.setLabel (jalview.util.MessageManager.getString ("label.about"));
+this.about.addActionListener (this);
+this.alignFrameMenuBar.add (this.fileMenu);
+var editMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));
+this.alignFrameMenuBar.add (editMenu);
+var selectMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.select"));
+this.alignFrameMenuBar.add (selectMenu);
+var viewMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.view"));
+this.alignFrameMenuBar.add (viewMenu);
+var annotationsMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.annotations"));
+this.alignFrameMenuBar.add (annotationsMenu);
+var formatMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.format"));
+this.alignFrameMenuBar.add (formatMenu);
+var colourMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.colour"));
+this.alignFrameMenuBar.add (colourMenu);
+var calculateMenu = new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate"));
+this.alignFrameMenuBar.add (calculateMenu);
+this.alignFrameMenuBar.add (helpMenu);
+this.fileMenu.add (this.inputText);
+this.fileMenu.add (this.$loadTree);
+this.fileMenu.add (this.$loadAnnotations);
+this.fileMenu.addSeparator ();
+this.fileMenu.add (outputTextboxMenu);
+this.fileMenu.add (this.$outputFeatures);
+this.fileMenu.add (this.$outputAnnotations);
+if (this.jalviewServletURL != null) {
+this.fileMenu.add (this.loadApplication);
+}this.fileMenu.addSeparator ();
+this.fileMenu.add (this.closeMenuItem);
+editMenu.add (this.undoMenuItem);
+editMenu.add (this.redoMenuItem);
+editMenu.add (this.cut);
+editMenu.add (this.copy);
+this.pasteMenu.add (this.pasteNew);
+this.pasteMenu.add (this.pasteThis);
+editMenu.add (this.pasteMenu);
+editMenu.add (this.$delete);
+editMenu.addSeparator ();
+editMenu.add (this.remove2LeftMenuItem);
+editMenu.add (this.remove2RightMenuItem);
+editMenu.add (this.removeGappedColumnMenuItem);
+editMenu.add (this.removeAllGapsMenuItem);
+editMenu.add (this.removeRedundancyMenuItem);
+selectMenu.add (this.findMenuItem);
+selectMenu.addSeparator ();
+selectMenu.add (this.selectAllSequenceMenuItem);
+selectMenu.add (this.deselectAllSequenceMenuItem);
+selectMenu.add (this.invertSequenceMenuItem);
+selectMenu.add (this.invertColSel);
+selectMenu.add (this.createGroup);
+selectMenu.add (this.unGroup);
+selectMenu.add (this.grpsFromSelection);
+selectMenu.add (this.deleteGroups);
+selectMenu.add (this.annotationColumnSelection);
+viewMenu.add (this.$newView);
+viewMenu.addSeparator ();
+showMenu.add (this.showColumns);
+showMenu.add (this.showSeqs);
+showMenu.add (this.showAllHidden);
+viewMenu.add (showMenu);
+hideMenu.add (this.hideColumns);
+hideMenu.add (this.hideSequences);
+hideMenu.add (this.hideAllSelection);
+hideMenu.add (this.hideAllButSelection);
+viewMenu.add (hideMenu);
+viewMenu.addSeparator ();
+viewMenu.add (this.followMouseOverFlag);
+viewMenu.addSeparator ();
+viewMenu.add (this.sequenceFeatures);
+viewMenu.add (this.featureSettings);
+viewMenu.addSeparator ();
+viewMenu.add (this.alProperties);
+viewMenu.addSeparator ();
+viewMenu.add (this.overviewMenuItem);
+annotationsMenu.add (this.annotationPanelMenuItem);
+annotationsMenu.addSeparator ();
+annotationsMenu.add (this.showAlignmentAnnotations);
+annotationsMenu.add (this.showSequenceAnnotations);
+annotationsMenu.add (this.sortAnnBySequence);
+annotationsMenu.add (this.sortAnnByLabel);
+annotationsMenu.addSeparator ();
+autoAnnMenu.add (this.showAutoFirst);
+autoAnnMenu.add (this.showAutoLast);
+autoAnnMenu.addSeparator ();
+autoAnnMenu.add (this.applyAutoAnnotationSettings);
+autoAnnMenu.add (this.showConsensusHistogram);
+autoAnnMenu.add (this.showSequenceLogo);
+autoAnnMenu.add (this.normSequenceLogo);
+autoAnnMenu.addSeparator ();
+autoAnnMenu.add (this.showGroupConservation);
+autoAnnMenu.add (this.showGroupConsensus);
+annotationsMenu.add (autoAnnMenu);
+formatMenu.add (this.$font);
+formatMenu.add (this.seqLimits);
+formatMenu.add (this.wrapMenuItem);
+formatMenu.add (this.scaleAbove);
+formatMenu.add (this.scaleLeft);
+formatMenu.add (this.scaleRight);
+formatMenu.add (this.viewBoxesMenuItem);
+formatMenu.add (this.viewTextMenuItem);
+formatMenu.add (this.colourTextMenuItem);
+formatMenu.add (this.displayNonconservedMenuItem);
+formatMenu.add (this.renderGapsMenuItem);
+formatMenu.add (this.centreColumnLabelFlag);
+colourMenu.add (this.applyToAllGroups);
+colourMenu.addSeparator ();
+colourMenu.add (this.noColourmenuItem);
+colourMenu.add (this.clustalColour);
+colourMenu.add (this.BLOSUM62Colour);
+colourMenu.add (this.PIDColour);
+colourMenu.add (this.zappoColour);
+colourMenu.add (this.taylorColour);
+colourMenu.add (this.hydrophobicityColour);
+colourMenu.add (this.helixColour);
+colourMenu.add (this.strandColour);
+colourMenu.add (this.turnColour);
+colourMenu.add (this.buriedColour);
+colourMenu.add (this.nucleotideColour);
+colourMenu.add (this.purinePyrimidineColour);
+colourMenu.add (this.tcoffeeColour);
+colourMenu.add (this.userDefinedColour);
+colourMenu.addSeparator ();
+colourMenu.add (this.conservationMenuItem);
+colourMenu.add (this.modifyConservation);
+colourMenu.add (this.abovePIDThreshold);
+colourMenu.add (this.modifyPID);
+colourMenu.add (this.annotationColour);
+colourMenu.add (this.RNAHelixColour);
+sortMenu.add (this.sortIDMenuItem);
+sortMenu.add (this.sortLengthMenuItem);
+sortMenu.add (this.sortByTreeMenu);
+sortMenu.add (this.sortGroupMenuItem);
+sortMenu.add (this.sortPairwiseMenuItem);
+calculateMenu.add (sortMenu);
+calculateTreeMenu.add (this.averageDistanceTreeMenuItem);
+calculateTreeMenu.add (this.neighbourTreeMenuItem);
+calculateTreeMenu.add (this.avDistanceTreeBlosumMenuItem);
+calculateTreeMenu.add (this.njTreeBlosumMenuItem);
+calculateMenu.add (calculateTreeMenu);
+calculateMenu.addSeparator ();
+calculateMenu.add (this.pairwiseAlignmentMenuItem);
+calculateMenu.add (this.PCAMenuItem);
+calculateMenu.add (this.autoCalculate);
+calculateMenu.add (this.$sortByTree);
+helpMenu.add (this.documentation);
+helpMenu.add (this.about);
+this.statusBar.setBackground (java.awt.Color.white);
+this.statusBar.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.setStatus (jalview.util.MessageManager.getString ("label.status_bar"));
+this.add (this.statusBar, "South");
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "setStatus",
+function (string) {
+this.statusBar.setText (string);
+}, "~S");
+Clazz.defineMethod (c$, "createAlignFrameWindow",
+function (reallyEmbedded) {
+if (reallyEmbedded) {
+this.embedAlignFrameInApplet (this.viewport.applet);
+} else {
+if (this.embedMenuIfNeeded (this.alignPanel)) {
+this.alignPanel.setSize (this.getSize ().width, this.getSize ().height - this.statusBar.getHeight ());
+}this.add (this.statusBar, "South");
+this.add (this.alignPanel, "Center");
+jalview.bin.JalviewLite.addFrame (this, this.getTitle (), this.frameWidth, this.frameHeight);
+}}, "~B");
+Clazz.defineMethod (c$, "embedAlignFrameInApplet",
+function (theApplet) {
+this.fileMenu.remove (this.closeMenuItem);
+this.fileMenu.remove (3);
+this.embeddedMenu = this.makeEmbeddedPopupMenu (this.alignFrameMenuBar, false, false);
+theApplet.setLayout ( new java.awt.BorderLayout ());
+theApplet.add (this.embeddedMenu, "North");
+theApplet.add (this.statusBar, "South");
+this.alignPanel.setSize (theApplet.getSize ().width, theApplet.getSize ().height - this.embeddedMenu.getHeight () - this.statusBar.getHeight ());
+theApplet.add (this.alignPanel, "Center");
+var me = this;
+theApplet.addFocusListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$5") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$5, this, Clazz.cloneFinals ("theApplet", theApplet, "me", me))));
+theApplet.validate ();
+}, "jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "addStructureViewInstance",
+function (jmolviewer, sequenceIds) {
+return null;
+}, "~O,~A");
+Clazz.defineMethod (c$, "addPdbFile",
+function (sequenceId, pdbEntryString, pdbFile) {
+var toaddpdb = this.viewport.getAlignment ().findName (sequenceId);
+var needtoadd = false;
+if (toaddpdb != null) {
+var pdbe = toaddpdb.getPDBId ();
+var pdbentry = null;
+if (pdbe != null && pdbe.size () > 0) {
+for (var pe = 0, peSize = pdbe.size (); pe < peSize; pe++) {
+pdbentry = pdbe.elementAt (pe);
+if (!pdbentry.getId ().equals (pdbEntryString) && !pdbentry.getFile ().equals (pdbFile)) {
+pdbentry = null;
+} else {
+continue;
+}}
+}if (pdbentry == null) {
+pdbentry = new jalview.datamodel.PDBEntry ();
+pdbentry.setId (pdbEntryString);
+pdbentry.setFile (pdbFile);
+needtoadd = true;
+}var protocol = jalview.io.AppletFormatAdapter.resolveProtocol (pdbFile, "PDB");
+if (protocol == null) {
+return false;
+}if (needtoadd) {
+if (pdbentry.getProperty () == null) {
+pdbentry.setProperty ( new java.util.Hashtable ());
+}pdbentry.getProperty ().put ("protocol", protocol);
+toaddpdb.addPDBId (pdbentry);
+this.alignPanel.getStructureSelectionManager ().registerPDBEntry (pdbentry);
+}}return true;
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "cleanSeqChainArrays",
+($fz = function (seqs, chains) {
+if (seqs != null) {
+var sequences = new java.util.Vector ();
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i] != null) {
+sequences.addElement ( Clazz.newArray (-1, [seqs[i], (chains != null) ? chains[i] : null]));
+}}
+seqs = new Array (sequences.size ());
+chains = new Array (sequences.size ());
+for (var i = 0, isize = sequences.size (); i < isize; i++) {
+var oj = sequences.elementAt (i);
+seqs[i] = oj[0];
+chains[i] = oj[1];
+}
+}return Clazz.newArray (-1, [seqs, chains]);
+}, $fz.isPrivate = true, $fz), "~A,~A");
+Clazz.defineMethod (c$, "newStructureView",
+function (applet, pdb, seqs, chains, protocol) {
+var sqch = this.cleanSeqChainArrays (seqs, chains);
+seqs = sqch[0];
+chains = sqch[1];
+if (seqs == null || seqs.length == 0) {
+System.err.println ("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");
+}if (protocol == null || protocol.trim ().length == 0 || protocol.equals ("null")) {
+protocol = pdb.getProperty ().get ("protocol");
+if (protocol == null) {
+System.err.println ("Couldn't work out protocol to open structure: " + pdb.getId ());
+return;
+}}if (applet.useXtrnalSviewer) {
+if (jalview.structure.StructureSelectionManager.getStructureSelectionManager (applet).setMapping (seqs, chains, pdb.getFile (), protocol) == null) {
+System.err.println ("Failed to map " + pdb.getFile () + " (" + protocol + ") to any sequences");
+}return;
+}if (applet.isAlignPdbStructures () && applet.jmolAvailable) {
+var ajm = null;
+var tajm;
+var jmols = applet.getAppletWindow (jalview.appletgui.AppletJmol);
+for (var i = 0, iSize = jmols.size (); i < iSize; i++) {
+tajm = jmols.elementAt (i);
+if (tajm.ap.alignFrame === this) {
+ajm = tajm;
+break;
+}}
+if (ajm != null) {
+System.err.println ("Incremental adding and aligning structure to existing Jmol view not yet implemented.");
+ajm = null;
+}} new jalview.appletgui.AppletJmol (pdb, seqs, chains, this.alignPanel, protocol);
+jalview.bin.JalviewLite.lastFrameX += 40;
+jalview.bin.JalviewLite.lastFrameY += 40;
+}, "jalview.bin.JalviewLite,jalview.datamodel.PDBEntry,~A,~A,~S");
+Clazz.defineMethod (c$, "alignedStructureView",
+function (applet, pdb, seqs, chains, protocols) {
+System.err.println ("Aligned Structure View: Not yet implemented.");
+}, "jalview.bin.JalviewLite,~A,~A,~A,~A");
+Clazz.defineMethod (c$, "select",
+function (sel, csel) {
+this.alignPanel.seqPanel.selection (sel, csel, null);
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "scrollTo",
+function (row, column) {
+this.alignPanel.seqPanel.scrollTo (row, column);
+}, "~N,~N");
+Clazz.defineMethod (c$, "scrollToRow",
+function (row) {
+this.alignPanel.seqPanel.scrollToRow (row);
+}, "~N");
+Clazz.defineMethod (c$, "scrollToColumn",
+function (column) {
+this.alignPanel.seqPanel.scrollToColumn (column);
+}, "~N");
+Clazz.defineMethod (c$, "getSequenceSetId",
+function () {
+return this.viewport.getSequenceSetId ();
+});
+Clazz.defineMethod (c$, "loadScoreFile",
+function (inFile) {
+var file = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [inFile, jalview.io.AppletFormatAdapter.checkProtocol (inFile)]);
+if (!file.isValid ()) {
+System.err.println ("Problems parsing T-Coffee scores: " + file.getWarningMessage ());
+System.err.println ("Origin was:\n" + inFile);
+return false;
+}var aln;
+if ((aln = this.viewport.getAlignment ()) != null && (aln.getHeight () != file.getHeight () || aln.getWidth () != file.getWidth ())) {
+System.err.println ("The scores matrix does not match the alignment dimensions");
+}if (file.annotateAlignment (this.alignPanel.getAlignment (), false)) {
+this.alignPanel.fontChanged ();
+this.tcoffeeColour.setEnabled (true);
+this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
+return true;
+} else {
+System.err.println ("Problems resolving T-Coffee scores:");
+if (file.getWarningMessage () != null) {
+System.err.println (file.getWarningMessage ());
+}}return false;
+}, "~S");
+Clazz.defineMethod (c$, "getSplitFrame",
+function () {
+return this.splitFrame;
+});
+Clazz.defineMethod (c$, "setSplitFrame",
+function (sf) {
+this.splitFrame = sf;
+}, "jalview.appletgui.SplitFrame");
+Clazz.overrideMethod (c$, "setShowSeqFeatures",
+function (b) {
+this.viewport.setShowSequenceFeatures (b);
+}, "~B");
+Clazz.overrideMethod (c$, "setMenusForViewport",
+function () {
+});
+Clazz.overrideMethod (c$, "refreshFeatureUI",
+function (enableIfNecessary) {
+if (enableIfNecessary) {
+this.sequenceFeatures.setState (true);
+this.alignPanel.av.setShowSequenceFeatures (true);
+}}, "~B");
+Clazz.overrideMethod (c$, "getFeatureSettingsUI",
+function () {
+return this.alignPanel.av.featureSettings;
+});
+c$.$AlignFrame$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$1", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing",
+function (e) {
+if (this.f$.ap != null) {
+this.f$.ap.setOverviewPanel (null);
+}}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$3", java.awt.event.WindowAdapter);
+Clazz.defineMethod (c$, "windowOpened",
+function (e) {
+if (this.b$["jalview.appletgui.AlignFrame"].viewport.sortByTree) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
+}Clazz.superCall (this, jalview.appletgui.AlignFrame$3, "windowOpened", [e]);
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowClosing",
+function (e) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTreeMenu.remove (this.f$.item);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$1AboutPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.version = null;
+this.builddate = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignFrame$1AboutPanel", awt2swing.Canvas);
+Clazz.makeConstructor (c$,
+function (a, b) {
+Clazz.superConstructor (this, jalview.appletgui.AlignFrame$1AboutPanel, []);
+this.version = a;
+this.builddate = b;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "paintComponent",
+function (a) {
+a.setColor (java.awt.Color.white);
+a.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
+var b = a.getFontMetrics ();
+var c = b.getHeight ();
+var d = 5;
+var e = 7;
+a.setColor (java.awt.Color.black);
+a.setFont ( new java.awt.Font ("Helvetica", 1, 14));
+a.drawString (jalview.util.MessageManager.formatMessage ("label.jalviewLite_release", Clazz.newArray (-1, [this.version])), e, d += c);
+a.setFont ( new java.awt.Font ("Helvetica", 1, 12));
+a.drawString (jalview.util.MessageManager.formatMessage ("label.jaview_build_date", Clazz.newArray (-1, [this.builddate])), e, d += c);
+a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_1"), e, d += c * 1.5);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_2"), e + 50, d += c + 8);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_dev_managers"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_distribution_lists"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_please_cite"), e, d += c + 8);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_authors"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_title"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_ref"), e, d += c);
+}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$4", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.AlignFrame"].outputText_actionPerformed (e);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$5", null, java.awt.event.FocusListener);
+Clazz.overrideMethod (c$, "focusLost",
+function (e) {
+if (this.f$.theApplet.currentAlignFrame === this.f$.me) {
+this.f$.theApplet.currentAlignFrame = null;
+}}, "java.awt.event.FocusEvent");
+Clazz.overrideMethod (c$, "focusGained",
+function (e) {
+this.f$.theApplet.currentAlignFrame = this.f$.me;
+}, "java.awt.event.FocusEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"copiedSequences", null,
+"copiedHiddenColumns", null);
+});
diff --git a/bin/jalview/appletgui/AlignViewport.js b/bin/jalview/appletgui/AlignViewport.js
index 8ea8971..1d890fc 100644
--- a/bin/jalview/appletgui/AlignViewport.js
+++ b/bin/jalview/appletgui/AlignViewport.js
@@ -1,229 +1,229 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.structure.CommandListener", "$.SelectionSource", "$.VamsasSource", "jalview.viewmodel.AlignmentViewport", "java.awt.Font"], "jalview.appletgui.AlignViewport", ["awt2swing.Frame", "jalview.api.AlignViewportI", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.schemes.ColourSchemeProperty", "jalview.structure.StructureSelectionManager", "jalview.util.Platform", "jalview.workers.AlignCalcManager", "java.lang.Float", "$.StringBuilder"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.cursorMode = false;
-this.font = null;
-this.validCharWidth = true;
-this.currentTree = null;
-this.applet = null;
-this.MAC = false;
-this.annotationColumnSelectionState = null;
-this.nullFrame = null;
-this.featureSettings = null;
-this.heightScale = 1;
-this.widthScale = 1;
-this.centreColumnLabels = false;
-this.followSelection = true;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AlignViewport", jalview.viewmodel.AlignmentViewport, [jalview.structure.SelectionSource, jalview.structure.VamsasSource, jalview.structure.CommandListener]);
-Clazz.prepareFields (c$, function () {
-this.font = new java.awt.Font ("SansSerif", 0, 10);
-});
-Clazz.overrideMethod (c$, "finalize",
-function () {
-this.applet = null;
-this.quality = null;
-this.alignment = null;
-this.colSel = null;
-});
-Clazz.makeConstructor (c$,
-function (al, applet) {
-Clazz.superConstructor (this, jalview.appletgui.AlignViewport);
-this.calculator = new jalview.workers.AlignCalcManager ();
-this.applet = applet;
-this.alignment = al;
-this.setPadGaps (true);
-this.startRes = 0;
-this.endRes = al.getWidth () - 1;
-this.startSeq = 0;
-this.endSeq = al.getHeight () - 1;
-if (applet != null) {
-var param = applet.widthScale;
-if (param != null) {
-try {
-this.widthScale = new Float (param).floatValue ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-} else {
-throw e;
-}
-}
-if (this.widthScale <= 1.0) {
-System.err.println ("Invalid alignment character width scaling factor (" + this.widthScale + "). Ignoring.");
-this.widthScale = 1;
-}if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Alignment character width scaling factor is now " + this.widthScale);
-}}param = applet.heightScale;
-if (param != null) {
-try {
-this.heightScale = new Float (param).floatValue ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-} else {
-throw e;
-}
-}
-if (this.heightScale <= 1.0) {
-System.err.println ("Invalid alignment character height scaling factor (" + this.heightScale + "). Ignoring.");
-this.heightScale = 1;
-}if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Alignment character height scaling factor is now " + this.heightScale);
-}}}this.setFont (this.font);
-this.MAC = jalview.util.Platform.isAMac ();
-if (applet != null) {
-this.setShowJVSuffix (applet.getDefaultParameter ("showFullId", this.getShowJVSuffix ()));
-this.setShowAnnotation (applet.getDefaultParameter ("showAnnotation", this.isShowAnnotation ()));
-this.showConservation = applet.getDefaultParameter ("showConservation", this.showConservation);
-this.showQuality = applet.getDefaultParameter ("showQuality", this.showQuality);
-this.showConsensus = applet.getDefaultParameter ("showConsensus", this.showConsensus);
-this.setShowUnconserved (applet.getDefaultParameter ("showUnconserved", this.getShowUnconserved ()));
-this.setScaleProteinAsCdna (applet.getDefaultParameter ("scaleProteinAsCdna", this.isScaleProteinAsCdna ()));
-var param = applet.upperCase;
-if (param != null) {
-if (param.equalsIgnoreCase ("bold")) {
-this.setUpperCasebold (true);
-}}this.sortByTree = applet.getDefaultParameter ("sortByTree", this.sortByTree);
-this.setFollowHighlight (applet.getDefaultParameter ("automaticScrolling", this.isFollowHighlight ()));
-this.followSelection = this.isFollowHighlight ();
-this.showSequenceLogo = applet.getDefaultParameter ("showSequenceLogo", this.showSequenceLogo);
-this.normaliseSequenceLogo = applet.getDefaultParameter ("normaliseSequenceLogo", applet.getDefaultParameter ("normaliseLogo", this.normaliseSequenceLogo));
-this.showGroupConsensus = applet.getDefaultParameter ("showGroupConsensus", this.showGroupConsensus);
-this.showGroupConservation = applet.getDefaultParameter ("showGroupConservation", this.showGroupConservation);
-this.showConsensusHistogram = applet.getDefaultParameter ("showConsensusHistogram", this.showConsensusHistogram);
-}if (applet != null) {
-var colour = applet.defaultColour;
-if (colour == null) {
-colour = applet.userDefinedColour;
-if (colour != null) {
-colour = "User Defined";
-}}if (colour != null) {
-this.globalColourScheme = jalview.schemes.ColourSchemeProperty.getColour (this.alignment, colour);
-if (this.globalColourScheme != null) {
-this.globalColourScheme.setConsensus (this.hconsensus);
-}}if (applet.userDefinedColour != null) {
-(this.globalColourScheme).parseAppletParameter (applet.userDefinedColour);
-}}this.initAutoAnnotation ();
-}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite");
-Clazz.defineMethod (c$, "getConsensusSeq",
-function () {
-if (this.consensus == null) {
-this.updateConsensus (null);
-}if (this.consensus == null) {
-return null;
-}var seqs = new StringBuilder (this.consensus.annotations.length);
-for (var i = 0; i < this.consensus.annotations.length; i++) {
-if (this.consensus.annotations[i] != null) {
-if (this.consensus.annotations[i].description.charAt (0) == '[') {
-seqs.append (this.consensus.annotations[i].description.charAt (1));
-} else {
-seqs.append (this.consensus.annotations[i].displayCharacter);
-}}}
-var sq = new jalview.datamodel.Sequence ("Consensus", seqs.toString ());
-sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
-return sq;
-});
-Clazz.defineMethod (c$, "setFont",
-function (f) {
-this.font = f;
-if (this.nullFrame == null) {
-this.nullFrame = new awt2swing.Frame ();
-this.nullFrame.addNotify ();
-this.nullFrame.setFont (this.font);
-}var fm = this.nullFrame.getGraphics ().getFontMetrics (this.font);
-this.setCharHeight (Clazz.floatToInt (this.heightScale * fm.getHeight ()));
-this.setCharWidth (Clazz.floatToInt (this.widthScale * fm.charWidth ('M')));
-if (this.isUpperCasebold ()) {
-var f2 = new java.awt.Font (f.getName (), 1, f.getSize ());
-fm = this.nullFrame.getGraphics ().getFontMetrics (f2);
-this.setCharWidth (Clazz.floatToInt (this.widthScale * (Clazz.doubleToInt (fm.stringWidth ("MMMMMMMMMMM") / 10))));
-}}, "java.awt.Font");
-Clazz.defineMethod (c$, "getFont",
-function () {
-return this.font;
-});
-Clazz.defineMethod (c$, "resetSeqLimits",
-function (height) {
-this.setEndSeq (Clazz.doubleToInt (height / this.getCharHeight ()));
-}, "~N");
-Clazz.defineMethod (c$, "setCurrentTree",
-function (tree) {
-this.currentTree = tree;
-}, "jalview.analysis.NJTree");
-Clazz.defineMethod (c$, "getCurrentTree",
-function () {
-return this.currentTree;
-});
-Clazz.defineMethod (c$, "getCentreColumnLabels",
-function () {
-return this.centreColumnLabels;
-});
-Clazz.defineMethod (c$, "getFollowSelection",
-function () {
-return this.followSelection;
-});
-Clazz.overrideMethod (c$, "sendSelection",
-function () {
-this.getStructureSelectionManager ().sendSelection ( new jalview.datamodel.SequenceGroup (this.getSelectionGroup ()), new jalview.datamodel.ColumnSelection (this.getColumnSelection ()), this);
-});
-Clazz.overrideMethod (c$, "getStructureSelectionManager",
-function () {
-return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet);
-});
-Clazz.defineMethod (c$, "expandColSelection",
-function (sg, wholewidth) {
-var sgs;
-var sge;
-if (sg != null && (sgs = sg.getStartRes ()) >= 0 && sg.getStartRes () <= (sge = sg.getEndRes ()) && (this.colSel == null || this.colSel.getSelected () == null || this.colSel.getSelected ().size () == 0)) {
-if (!wholewidth && this.alignment.getWidth () == (1 + sge - sgs)) {
-return;
-}if (this.colSel == null) {
-this.colSel = new jalview.datamodel.ColumnSelection ();
-}for (var cspos = sg.getStartRes (); cspos <= sg.getEndRes (); cspos++) {
-this.colSel.addElement (cspos);
-}
-}}, "jalview.datamodel.SequenceGroup,~B");
-Clazz.overrideMethod (c$, "isNormaliseSequenceLogo",
-function () {
-return this.normaliseSequenceLogo;
-});
-Clazz.defineMethod (c$, "setNormaliseSequenceLogo",
-function (state) {
-this.normaliseSequenceLogo = state;
-}, "~B");
-Clazz.overrideMethod (c$, "isValidCharWidth",
-function () {
-return this.validCharWidth;
-});
-Clazz.defineMethod (c$, "getAnnotationColumnSelectionState",
-function () {
-return this.annotationColumnSelectionState;
-});
-Clazz.defineMethod (c$, "setAnnotationColumnSelectionState",
-function (annotationColumnSelectionState) {
-this.annotationColumnSelectionState = annotationColumnSelectionState;
-}, "jalview.appletgui.AnnotationColumnChooser");
-Clazz.overrideMethod (c$, "mirrorCommand",
-function (command, undo, ssm, source) {
-if (Clazz.instanceOf (source, jalview.api.AlignViewportI) && (source).getCodingComplement () === this) {
-} else {
-return;
-}var mappedCommand = ssm.mapCommand (command, undo, this.getAlignment (), this.getGapCharacter ());
-if (mappedCommand != null) {
-mappedCommand.doCommand (null);
-this.firePropertyChange ("alignment", null, this.getAlignment ().getSequences ());
-}}, "jalview.commands.CommandI,~B,jalview.structure.StructureSelectionManager,jalview.structure.VamsasSource");
-Clazz.overrideMethod (c$, "getVamsasSource",
-function () {
-return this;
-});
-Clazz.defineMethod (c$, "scrollComplementaryAlignment",
-function (complementPanel) {
-if (complementPanel == null) {
-return;
-}var sr = new jalview.datamodel.SearchResults ();
-var seqOffset = this.findComplementScrollTarget (sr);
-if (!sr.isEmpty ()) {
-complementPanel.setFollowingComplementScroll (true);
-complementPanel.scrollToCentre (sr, seqOffset);
-}}, "jalview.appletgui.AlignmentPanel");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.structure.CommandListener", "$.SelectionSource", "$.VamsasSource", "jalview.viewmodel.AlignmentViewport", "java.awt.Font"], "jalview.appletgui.AlignViewport", ["awt2swing.Frame", "jalview.api.AlignViewportI", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.schemes.ColourSchemeProperty", "jalview.structure.StructureSelectionManager", "jalview.util.Platform", "jalview.workers.AlignCalcManager", "java.lang.Float", "$.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.cursorMode = false;
+this.font = null;
+this.validCharWidth = true;
+this.currentTree = null;
+this.applet = null;
+this.MAC = false;
+this.annotationColumnSelectionState = null;
+this.nullFrame = null;
+this.featureSettings = null;
+this.heightScale = 1;
+this.widthScale = 1;
+this.centreColumnLabels = false;
+this.followSelection = true;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignViewport", jalview.viewmodel.AlignmentViewport, [jalview.structure.SelectionSource, jalview.structure.VamsasSource, jalview.structure.CommandListener]);
+Clazz.prepareFields (c$, function () {
+this.font = new java.awt.Font ("SansSerif", 0, 10);
+});
+Clazz.overrideMethod (c$, "finalize",
+function () {
+this.applet = null;
+this.quality = null;
+this.alignment = null;
+this.colSel = null;
+});
+Clazz.makeConstructor (c$,
+function (al, applet) {
+Clazz.superConstructor (this, jalview.appletgui.AlignViewport);
+this.calculator = new jalview.workers.AlignCalcManager ();
+this.applet = applet;
+this.alignment = al;
+this.setPadGaps (true);
+this.startRes = 0;
+this.endRes = al.getWidth () - 1;
+this.startSeq = 0;
+this.endSeq = al.getHeight () - 1;
+if (applet != null) {
+var param = applet.widthScale;
+if (param != null) {
+try {
+this.widthScale = new Float (param).floatValue ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.widthScale <= 1.0) {
+System.err.println ("Invalid alignment character width scaling factor (" + this.widthScale + "). Ignoring.");
+this.widthScale = 1;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Alignment character width scaling factor is now " + this.widthScale);
+}}param = applet.heightScale;
+if (param != null) {
+try {
+this.heightScale = new Float (param).floatValue ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.heightScale <= 1.0) {
+System.err.println ("Invalid alignment character height scaling factor (" + this.heightScale + "). Ignoring.");
+this.heightScale = 1;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Alignment character height scaling factor is now " + this.heightScale);
+}}}this.setFont (this.font);
+this.MAC = jalview.util.Platform.isAMac ();
+if (applet != null) {
+this.setShowJVSuffix (applet.getDefaultParameter ("showFullId", this.getShowJVSuffix ()));
+this.setShowAnnotation (applet.getDefaultParameter ("showAnnotation", this.isShowAnnotation ()));
+this.showConservation = applet.getDefaultParameter ("showConservation", this.showConservation);
+this.showQuality = applet.getDefaultParameter ("showQuality", this.showQuality);
+this.showConsensus = applet.getDefaultParameter ("showConsensus", this.showConsensus);
+this.setShowUnconserved (applet.getDefaultParameter ("showUnconserved", this.getShowUnconserved ()));
+this.setScaleProteinAsCdna (applet.getDefaultParameter ("scaleProteinAsCdna", this.isScaleProteinAsCdna ()));
+var param = applet.upperCase;
+if (param != null) {
+if (param.equalsIgnoreCase ("bold")) {
+this.setUpperCasebold (true);
+}}this.sortByTree = applet.getDefaultParameter ("sortByTree", this.sortByTree);
+this.setFollowHighlight (applet.getDefaultParameter ("automaticScrolling", this.isFollowHighlight ()));
+this.followSelection = this.isFollowHighlight ();
+this.showSequenceLogo = applet.getDefaultParameter ("showSequenceLogo", this.showSequenceLogo);
+this.normaliseSequenceLogo = applet.getDefaultParameter ("normaliseSequenceLogo", applet.getDefaultParameter ("normaliseLogo", this.normaliseSequenceLogo));
+this.showGroupConsensus = applet.getDefaultParameter ("showGroupConsensus", this.showGroupConsensus);
+this.showGroupConservation = applet.getDefaultParameter ("showGroupConservation", this.showGroupConservation);
+this.showConsensusHistogram = applet.getDefaultParameter ("showConsensusHistogram", this.showConsensusHistogram);
+}if (applet != null) {
+var colour = applet.defaultColour;
+if (colour == null) {
+colour = applet.userDefinedColour;
+if (colour != null) {
+colour = "User Defined";
+}}if (colour != null) {
+this.globalColourScheme = jalview.schemes.ColourSchemeProperty.getColour (this.alignment, colour);
+if (this.globalColourScheme != null) {
+this.globalColourScheme.setConsensus (this.hconsensus);
+}}if (applet.userDefinedColour != null) {
+(this.globalColourScheme).parseAppletParameter (applet.userDefinedColour);
+}}this.initAutoAnnotation ();
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "getConsensusSeq",
+function () {
+if (this.consensus == null) {
+this.updateConsensus (null);
+}if (this.consensus == null) {
+return null;
+}var seqs = new StringBuilder (this.consensus.annotations.length);
+for (var i = 0; i < this.consensus.annotations.length; i++) {
+if (this.consensus.annotations[i] != null) {
+if (this.consensus.annotations[i].description.charAt (0) == '[') {
+seqs.append (this.consensus.annotations[i].description.charAt (1));
+} else {
+seqs.append (this.consensus.annotations[i].displayCharacter);
+}}}
+var sq = new jalview.datamodel.Sequence ("Consensus", seqs.toString ());
+sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
+return sq;
+});
+Clazz.defineMethod (c$, "setFont",
+function (f) {
+this.font = f;
+if (this.nullFrame == null) {
+this.nullFrame = new awt2swing.Frame ();
+this.nullFrame.addNotify ();
+this.nullFrame.setFont (this.font);
+}var fm = this.nullFrame.getGraphics ().getFontMetrics (this.font);
+this.setCharHeight (Clazz.floatToInt (this.heightScale * fm.getHeight ()));
+this.setCharWidth (Clazz.floatToInt (this.widthScale * fm.charWidth ('M')));
+if (this.isUpperCasebold ()) {
+var f2 = new java.awt.Font (f.getName (), 1, f.getSize ());
+fm = this.nullFrame.getGraphics ().getFontMetrics (f2);
+this.setCharWidth (Clazz.floatToInt (this.widthScale * (Clazz.doubleToInt (fm.stringWidth ("MMMMMMMMMMM") / 10))));
+}}, "java.awt.Font");
+Clazz.defineMethod (c$, "getFont",
+function () {
+return this.font;
+});
+Clazz.defineMethod (c$, "resetSeqLimits",
+function (height) {
+this.setEndSeq (Clazz.doubleToInt (height / this.getCharHeight ()));
+}, "~N");
+Clazz.defineMethod (c$, "setCurrentTree",
+function (tree) {
+this.currentTree = tree;
+}, "jalview.analysis.NJTree");
+Clazz.defineMethod (c$, "getCurrentTree",
+function () {
+return this.currentTree;
+});
+Clazz.defineMethod (c$, "getCentreColumnLabels",
+function () {
+return this.centreColumnLabels;
+});
+Clazz.defineMethod (c$, "getFollowSelection",
+function () {
+return this.followSelection;
+});
+Clazz.overrideMethod (c$, "sendSelection",
+function () {
+this.getStructureSelectionManager ().sendSelection ( new jalview.datamodel.SequenceGroup (this.getSelectionGroup ()), new jalview.datamodel.ColumnSelection (this.getColumnSelection ()), this);
+});
+Clazz.overrideMethod (c$, "getStructureSelectionManager",
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet);
+});
+Clazz.defineMethod (c$, "expandColSelection",
+function (sg, wholewidth) {
+var sgs;
+var sge;
+if (sg != null && (sgs = sg.getStartRes ()) >= 0 && sg.getStartRes () <= (sge = sg.getEndRes ()) && (this.colSel == null || this.colSel.getSelected () == null || this.colSel.getSelected ().size () == 0)) {
+if (!wholewidth && this.alignment.getWidth () == (1 + sge - sgs)) {
+return;
+}if (this.colSel == null) {
+this.colSel = new jalview.datamodel.ColumnSelection ();
+}for (var cspos = sg.getStartRes (); cspos <= sg.getEndRes (); cspos++) {
+this.colSel.addElement (cspos);
+}
+}}, "jalview.datamodel.SequenceGroup,~B");
+Clazz.overrideMethod (c$, "isNormaliseSequenceLogo",
+function () {
+return this.normaliseSequenceLogo;
+});
+Clazz.defineMethod (c$, "setNormaliseSequenceLogo",
+function (state) {
+this.normaliseSequenceLogo = state;
+}, "~B");
+Clazz.overrideMethod (c$, "isValidCharWidth",
+function () {
+return this.validCharWidth;
+});
+Clazz.defineMethod (c$, "getAnnotationColumnSelectionState",
+function () {
+return this.annotationColumnSelectionState;
+});
+Clazz.defineMethod (c$, "setAnnotationColumnSelectionState",
+function (annotationColumnSelectionState) {
+this.annotationColumnSelectionState = annotationColumnSelectionState;
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz.overrideMethod (c$, "mirrorCommand",
+function (command, undo, ssm, source) {
+if (Clazz.instanceOf (source, jalview.api.AlignViewportI) && (source).getCodingComplement () === this) {
+} else {
+return;
+}var mappedCommand = ssm.mapCommand (command, undo, this.getAlignment (), this.getGapCharacter ());
+if (mappedCommand != null) {
+mappedCommand.doCommand (null);
+this.firePropertyChange ("alignment", null, this.getAlignment ().getSequences ());
+}}, "jalview.commands.CommandI,~B,jalview.structure.StructureSelectionManager,jalview.structure.VamsasSource");
+Clazz.overrideMethod (c$, "getVamsasSource",
+function () {
+return this;
+});
+Clazz.defineMethod (c$, "scrollComplementaryAlignment",
+function (complementPanel) {
+if (complementPanel == null) {
+return;
+}var sr = new jalview.datamodel.SearchResults ();
+var seqOffset = this.findComplementScrollTarget (sr);
+if (!sr.isEmpty ()) {
+complementPanel.setFollowingComplementScroll (true);
+complementPanel.scrollToCentre (sr, seqOffset);
+}}, "jalview.appletgui.AlignmentPanel");
+});
diff --git a/bin/jalview/appletgui/AlignmentPanel.class b/bin/jalview/appletgui/AlignmentPanel.class
index 49b001d8f0394147933691667a0897a5f37cdcd4..873616b98337e323f953eef0387f01b71f2ac02e 100644
GIT binary patch
delta 96
zcmdnFjB(L2#tk+WjDeeNEgms4=P__hR{tpl1q|N0%4UB?<3@m>cY(Wx#7z`PIF*t4J^fO=u0R1}|6951J
delta 119
zcmZ3qjB)2O#tk+WjA@%~Egms4H#2ZfR+|Z>Fr-4yOh=KJlgDptr4}&4&F9v(2
J&7XV?SOG1a8w3CV
diff --git a/bin/jalview/appletgui/AlignmentPanel.js b/bin/jalview/appletgui/AlignmentPanel.js
index 8989731..1d6069d 100644
--- a/bin/jalview/appletgui/AlignmentPanel.js
+++ b/bin/jalview/appletgui/AlignmentPanel.js
@@ -1,610 +1,610 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "jalview.api.AlignmentViewPanel", "java.awt.event.AdjustmentListener", "awt2swing.Scrollbar"], "jalview.appletgui.AlignmentPanel", ["awt2swing.Frame", "jalview.analysis.AnnotationSorter", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.FeatureRenderer", "$.IdPanel", "$.IdwidthAdjuster", "$.PaintRefresher", "$.ScalePanel", "$.SeqPanel", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.beans.PropertyChangeListener"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.av = null;
-this.overviewPanel = null;
-this.seqPanel = null;
-this.idPanel = null;
-this.idwidthAdjuster = null;
-this.alignFrame = null;
-this.scalePanel = null;
-this.annotationPanel = null;
-this.alabels = null;
-this.fastPaint = true;
-this.hextent = 0;
-this.vextent = 0;
-this.sequenceHolderPanel = null;
-this.vscroll = null;
-this.hscroll = null;
-this.seqPanelHolder = null;
-this.scalePanelHolder = null;
-this.idPanelHolder = null;
-this.idSpaceFillerPanel1 = null;
-this.annotationSpaceFillerHolder = null;
-this.hscrollFillerPanel = null;
-this.annotationPanelHolder = null;
-this.apvscroll = null;
-this.followingComplementScroll = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]);
-Clazz.prepareFields (c$, function () {
-this.sequenceHolderPanel = new awt2swing.Panel ();
-this.vscroll = new awt2swing.Scrollbar ();
-this.hscroll = new awt2swing.Scrollbar ();
-this.seqPanelHolder = new awt2swing.Panel ();
-this.scalePanelHolder = new awt2swing.Panel ();
-this.idPanelHolder = new awt2swing.Panel ();
-this.idSpaceFillerPanel1 = new awt2swing.Panel ();
-this.annotationSpaceFillerHolder = new awt2swing.Panel ();
-this.hscrollFillerPanel = new awt2swing.Panel ();
-this.annotationPanelHolder = new awt2swing.Panel ();
-this.apvscroll = new awt2swing.Scrollbar ();
-});
-Clazz.overrideMethod (c$, "finalize",
-function () {
-this.alignFrame = null;
-this.av = null;
-this.seqPanel = null;
-this.seqPanelHolder = null;
-this.sequenceHolderPanel = null;
-this.scalePanel = null;
-this.scalePanelHolder = null;
-this.annotationPanel = null;
-this.annotationPanelHolder = null;
-this.annotationSpaceFillerHolder = null;
-});
-Clazz.makeConstructor (c$,
-function (af, av) {
-Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []);
-this.setName ("alignmentPanel");
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.alignFrame = af;
-this.av = av;
-this.seqPanel = new jalview.appletgui.SeqPanel (av, this);
-this.idPanel = new jalview.appletgui.IdPanel (av, this);
-this.scalePanel = new jalview.appletgui.ScalePanel (av, this);
-this.idwidthAdjuster = new jalview.appletgui.IdwidthAdjuster (this);
-this.annotationPanel = new jalview.appletgui.AnnotationPanel (this);
-this.annotationPanelHolder.add (this.annotationPanel, "Center");
-this.sequenceHolderPanel.add (this.annotationPanelHolder, "South");
-this.alabels = new jalview.appletgui.AnnotationLabels (this);
-this.setAnnotationVisible (av.isShowAnnotation ());
-this.idPanelHolder.add (this.idPanel, "Center");
-this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center");
-this.annotationSpaceFillerHolder.add (this.alabels, "Center");
-this.scalePanelHolder.add (this.scalePanel, "Center");
-this.seqPanelHolder.add (this.seqPanel, "Center");
-this.fontChanged ();
-this.setScrollValues (0, 0);
-this.apvscroll.addAdjustmentListener (this);
-this.hscroll.addAdjustmentListener (this);
-this.vscroll.addAdjustmentListener (this);
-this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$1") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$1, this, Clazz.cloneFinals ("av", av))));
-var d = this.calculateIdWidth ();
-this.idPanel.idCanvas.setSize (d);
-this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height);
-this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
-this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height);
-this.alabels.setSize (d.width, this.annotationPanel.getSize ().height);
-var ap = this;
-av.addPropertyChangeListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$2") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$2, this, Clazz.cloneFinals ("ap", ap, "av", av))));
-}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");
-Clazz.overrideMethod (c$, "getAlignViewport",
-function () {
-return this.av;
-});
-Clazz.defineMethod (c$, "getSequenceRenderer",
-function () {
-return this.seqPanel.seqCanvas.sr;
-});
-Clazz.overrideMethod (c$, "getFeatureRenderer",
-function () {
-return this.seqPanel.seqCanvas.fr;
-});
-Clazz.overrideMethod (c$, "cloneFeatureRenderer",
-function () {
-var nfr = new jalview.appletgui.FeatureRenderer (this.av);
-nfr.transferSettings (this.seqPanel.seqCanvas.fr);
-return nfr;
-});
-Clazz.defineMethod (c$, "alignmentChanged",
-function () {
-this.av.alignmentChanged (this);
-if (this.overviewPanel != null) {
-this.overviewPanel.updateOverviewImage ();
-}this.alignFrame.updateEditMenuBar ();
-this.repaint ();
-});
-Clazz.defineMethod (c$, "fontChanged",
-function () {
-this.idPanel.idCanvas.image = null;
-var fm = this.getFontMetrics (this.av.getFont ());
-this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
-this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
-this.av.updateSequenceIdColours ();
-this.annotationPanel.image = null;
-var ap = this.annotationPanel.adjustPanelHeight (false);
-var d = this.calculateIdWidth ();
-d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height);
-this.alabels.setSize (d.width + 4, ap);
-this.idPanel.idCanvas.setSize (d);
-this.hscrollFillerPanel.setSize (d);
-this.validateAnnotationDimensions (false);
-this.annotationPanel.repaint ();
-this.validate ();
-this.repaint ();
-if (this.overviewPanel != null) {
-this.overviewPanel.updateOverviewImage ();
-}});
-Clazz.defineMethod (c$, "setIdWidth",
-function (w, h) {
-this.idPanel.idCanvas.setSize (w, h);
-this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height);
-this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height);
-this.alabels.setSize (w, this.alabels.getSize ().height);
-this.validate ();
-}, "~N,~N");
-Clazz.defineMethod (c$, "calculateIdWidth",
-function () {
-if (this.av.nullFrame == null) {
-this.av.nullFrame = new awt2swing.Frame ();
-this.av.nullFrame.addNotify ();
-this.av.nullFrame.setFont (this.av.font);
-}var g = this.av.nullFrame.getGraphics ();
-var fm = g.getFontMetrics (this.av.font);
-var al = this.av.getAlignment ();
-var i = 0;
-var idWidth = 0;
-var id;
-while (i < al.getHeight () && al.getSequenceAt (i) != null) {
-var s = al.getSequenceAt (i);
-id = s.getDisplayId (this.av.getShowJVSuffix ());
-if (fm.stringWidth (id) > idWidth) {
-idWidth = fm.stringWidth (id);
-}i++;
-}
-i = 0;
-if (al.getAlignmentAnnotation () != null) {
-fm = g.getFontMetrics (this.av.nullFrame.getFont ());
-while (i < al.getAlignmentAnnotation ().length) {
-var label = al.getAlignmentAnnotation ()[i].label;
-if (fm.stringWidth (label) > idWidth) {
-idWidth = fm.stringWidth (label);
-}i++;
-}
-}return new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height);
-});
-Clazz.defineMethod (c$, "highlightSearchResults",
-function (results) {
-this.scrollToPosition (results);
-this.seqPanel.seqCanvas.highlightSearchResults (results);
-}, "jalview.datamodel.SearchResults");
-Clazz.defineMethod (c$, "scrollToPosition",
-function (results) {
-return this.scrollToPosition (results, true);
-}, "jalview.datamodel.SearchResults");
-Clazz.defineMethod (c$, "scrollToPosition",
-function (results, redrawOverview) {
-return this.scrollToPosition (results, redrawOverview, false);
-}, "jalview.datamodel.SearchResults,~B");
-Clazz.defineMethod (c$, "scrollToPosition",
-function (results, redrawOverview, centre) {
-if (results != null && results.getSize () > 0) {
-var alignment = this.av.getAlignment ();
-var seqIndex = alignment.findIndex (results);
-if (seqIndex == -1) {
-return false;
-}var seq = alignment.getSequenceAt (seqIndex);
-var r = results.getResults (seq, 0, alignment.getWidth ());
-if (r == null) {
-if (jalview.bin.JalviewLite.debug) {
-System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ());
-}return false;
-}if (jalview.bin.JalviewLite.debug) {
-}var start = r[0];
-var end = r[1];
-if (centre) {
-var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1;
-start = Math.max (start - offset, 0);
-end = Math.min (end + offset, seq.getEnd () - 1);
-}if (start < 0) {
-return false;
-}if (end == seq.getEnd ()) {
-return false;
-}return this.scrollTo (start, end, seqIndex, false, redrawOverview);
-}return true;
-}, "jalview.datamodel.SearchResults,~B,~B");
-Clazz.defineMethod (c$, "scrollTo",
-function (ostart, end, seqIndex, scrollToNearest, redrawOverview) {
-var startv;
-var endv;
-var starts;
-var ends;
-var width;
-var start = -1;
-if (this.av.hasHiddenColumns ()) {
-start = this.av.getColumnSelection ().findColumnPosition (ostart);
-end = this.av.getColumnSelection ().findColumnPosition (end);
-if (start == end) {
-if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) {
-return false;
-}}} else {
-start = ostart;
-}if (!this.av.getWrapAlignment ()) {
-if ((startv = this.av.getStartRes ()) >= start) {
-this.setScrollValues (start - 1, seqIndex);
-} else if ((endv = this.av.getEndRes ()) <= end) {
-this.setScrollValues (startv + 1 + end - endv, seqIndex);
-} else if ((starts = this.av.getStartSeq ()) > seqIndex) {
-this.setScrollValues (this.av.getStartRes (), seqIndex);
-} else if ((ends = this.av.getEndSeq ()) <= seqIndex) {
-this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1);
-}} else {
-this.scrollToWrappedVisible (start);
-}if (redrawOverview && this.overviewPanel != null) {
-this.overviewPanel.setBoxPosition ();
-}this.paintAlignment (redrawOverview);
-return true;
-}, "~N,~N,~N,~B,~B");
-Clazz.defineMethod (c$, "scrollToWrappedVisible",
-function (res) {
-var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
-if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) {
-this.vscroll.setValue (Clazz.doubleToInt (res / cwidth));
-this.av.startRes = this.vscroll.getValue () * cwidth;
-}}, "~N");
-Clazz.defineMethod (c$, "getOverviewPanel",
-function () {
-return this.overviewPanel;
-});
-Clazz.defineMethod (c$, "setOverviewPanel",
-function (op) {
-this.overviewPanel = op;
-}, "jalview.appletgui.OverviewPanel");
-Clazz.defineMethod (c$, "setAnnotationVisible",
-function (b) {
-if (!this.av.getWrapAlignment ()) {
-this.annotationSpaceFillerHolder.setVisible (b);
-this.annotationPanelHolder.setVisible (b);
-} else {
-this.annotationSpaceFillerHolder.setVisible (false);
-this.annotationPanelHolder.setVisible (false);
-}this.validate ();
-this.repaint ();
-}, "~B");
-Clazz.overrideMethod (c$, "adjustAnnotationHeight",
-function () {
-if (this.alignFrame.getSize ().height == 0) {
-System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING");
-}this.fontChanged ();
-this.validateAnnotationDimensions (true);
-this.apvscroll.addNotify ();
-this.hscroll.addNotify ();
-this.validate ();
-this.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "validateAnnotationDimensions",
-function (adjustPanelHeight) {
-var rowHeight = this.av.getCharHeight ();
-var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight ();
-var annotationHeight = this.av.calcPanelHeight ();
-var mheight = annotationHeight;
-var d = this.sequenceHolderPanel.getSize ();
-var availableHeight = d.height - this.scalePanelHolder.getHeight ();
-if (adjustPanelHeight) {
-if (annotationHeight + alignmentHeight > availableHeight) {
-annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight);
-}} else {
-annotationHeight = this.annotationPanelHolder.getSize ().height;
-}if (availableHeight - annotationHeight < 5) {
-annotationHeight = availableHeight;
-}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight));
-this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight));
-this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
-var e = this.idPanel.getSize ();
-this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight));
-this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight));
-var s = this.apvscroll.getValue ();
-if (s > mheight - annotationHeight) {
-s = 0;
-}this.apvscroll.setValues (s, annotationHeight, 0, mheight);
-this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
-this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
-}, "~B");
-Clazz.defineMethod (c$, "setWrapAlignment",
-function (wrap) {
-this.av.startSeq = 0;
-this.av.startRes = 0;
-this.scalePanelHolder.setVisible (!wrap);
-this.hscroll.setVisible (!wrap);
-this.idwidthAdjuster.setVisible (!wrap);
-if (wrap) {
-this.annotationPanelHolder.setVisible (false);
-this.annotationSpaceFillerHolder.setVisible (false);
-} else if (this.av.isShowAnnotation ()) {
-this.annotationPanelHolder.setVisible (true);
-this.annotationSpaceFillerHolder.setVisible (true);
-}this.idSpaceFillerPanel1.setVisible (!wrap);
-this.fontChanged ();
-this.validate ();
-this.sequenceHolderPanel.validate ();
-this.repaint ();
-}, "~B");
-Clazz.defineMethod (c$, "scrollUp",
-function (up) {
-if (up) {
-if (this.vscroll.getValue () < 1) {
-return false;
-}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1);
-} else {
-if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) {
-return false;
-}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1);
-}this.repaint ();
-return true;
-}, "~B");
-Clazz.defineMethod (c$, "scrollRight",
-function (right) {
-if (!right) {
-if (this.hscroll.getValue () < 1) {
-return false;
-}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ());
-} else {
-if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) {
-return false;
-}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ());
-}this.repaint ();
-return true;
-}, "~B");
-Clazz.defineMethod (c$, "setScrollValues",
-function (x, y) {
-var width = this.av.getAlignment ().getWidth ();
-var height = this.av.getAlignment ().getHeight ();
-if (this.av.hasHiddenColumns ()) {
-width = this.av.getColumnSelection ().findColumnPosition (width);
-}if (x < 0) {
-x = 0;
-};this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ());
-this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ());
-if (this.hextent > width) {
-this.hextent = width;
-}if (this.vextent > height) {
-this.vextent = height;
-}if ((this.hextent + x) > width) {
-System.err.println ("hextent was " + this.hextent + " and x was " + x);
-x = width - this.hextent;
-}if ((this.vextent + y) > height) {
-y = height - this.vextent;
-}if (y < 0) {
-y = 0;
-}if (x < 0) {
-System.err.println ("x was " + x);
-x = 0;
-}this.av.setStartSeq (y);
-var endSeq = y + this.vextent;
-if (endSeq > this.av.getAlignment ().getHeight ()) {
-endSeq = this.av.getAlignment ().getHeight ();
-}this.av.setEndSeq (endSeq);
-this.av.setStartRes (x);
-this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1);
-this.hscroll.setValues (x, this.hextent, 0, width);
-this.vscroll.setValues (y, this.vextent, 0, height);
-if (this.overviewPanel != null) {
-this.overviewPanel.setBoxPosition ();
-}this.sendViewPosition ();
-}, "~N,~N");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-if (this.annotationPanel == null) return;
-var oldX = this.av.getStartRes ();
-var oldY = this.av.getStartSeq ();
-if (evt == null || evt.getSource () === this.apvscroll) {
-this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
-this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
-}if (evt == null || evt.getSource () === this.hscroll) {
-var x = this.hscroll.getValue ();
-this.av.setStartRes (x);
-this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1);
-}if (evt == null || evt.getSource () === this.vscroll) {
-var offy = this.vscroll.getValue ();
-if (this.av.getWrapAlignment ()) {
-var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
-this.av.setStartRes (this.vscroll.getValue () * rowSize);
-this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize);
-} else {
-this.av.setStartSeq (offy);
-this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()));
-}}if (this.overviewPanel != null) {
-this.overviewPanel.setBoxPosition ();
-}var scrollX = this.av.startRes - oldX;
-var scrollY = this.av.startSeq - oldY;
-if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) {
-this.repaint ();
-} else {
-if (scrollX > this.av.endRes - this.av.startRes) {
-scrollX = this.av.endRes - this.av.startRes;
-} else if (scrollX < this.av.startRes - this.av.endRes) {
-scrollX = this.av.startRes - this.av.endRes;
-}this.idPanel.idCanvas.fastPaint (scrollY);
-this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY);
-this.scalePanel.repaint ();
-if (this.av.isShowAnnotation ()) {
-this.annotationPanel.fastPaint (this.av.getStartRes () - oldX);
-}}this.sendViewPosition ();
-if (this.isFollowingComplementScroll ()) {
-this.setFollowingComplementScroll (false);
-} else {
-var ap = this.getComplementPanel ();
-this.av.scrollComplementaryAlignment (ap);
-}}, "java.awt.event.AdjustmentEvent");
-Clazz.defineMethod (c$, "getComplementPanel",
-($fz = function () {
-var ap = null;
-if (this.alignFrame != null) {
-var sf = this.alignFrame.getSplitFrame ();
-if (sf != null) {
-var other = sf.getComplement (this.alignFrame);
-if (other != null) {
-ap = other.alignPanel;
-}}}return ap;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "scrollToCentre",
-function (sr, seqOffset) {
-var mappedTo = sr.getResultSequence (0);
-var seqs = this.av.getAlignment ().getSequences ();
-var sequenceIndex = 0;
-var matched = false;
-for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-if (mappedTo === seq.getDatasetSequence ()) {
-matched = true;
-break;
-}sequenceIndex++;
-}
-if (!matched) {
-return;
-}sequenceIndex = Math.max (0, sequenceIndex - seqOffset);
-sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex));
-this.setFollowingComplementScroll (true);
-this.scrollToPosition (sr, true, true);
-}, "jalview.datamodel.SearchResults,~N");
-Clazz.defineMethod (c$, "sendViewPosition",
-($fz = function () {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq);
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "paintAlignment",
-function (updateOverview) {
-var sorter = new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ());
-sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ());
-this.repaint ();
-if (updateOverview) {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this);
-if (this.overviewPanel != null) {
-this.overviewPanel.updateOverviewImage ();
-}}}, "~B");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-System.out.println ("alignframe paintcomp");
-this.invalidate ();
-var d = this.idPanel.idCanvas.getSize ();
-var canvasHeight = this.seqPanel.seqCanvas.getSize ().height;
-if (canvasHeight != d.height) {
-this.idPanel.idCanvas.setSize (d.width, canvasHeight);
-}if (this.av.getWrapAlignment ()) {
-var maxwidth = this.av.getAlignment ().getWidth ();
-if (this.av.hasHiddenColumns ()) {
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
-}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
-if (canvasWidth > 0) {
-var max = Clazz.doubleToInt (maxwidth / canvasWidth);
-this.vscroll.setMaximum (1 + max);
-this.vscroll.setUnitIncrement (1);
-this.vscroll.setVisibleAmount (1);
-}} else {
-this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
-}}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setLayout ( new java.awt.BorderLayout ());
-this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ());
-this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ());
-this.scalePanelHolder.setBackground (java.awt.Color.white);
-this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ());
-this.idPanelHolder.setLayout ( new java.awt.BorderLayout ());
-this.idSpaceFillerPanel1.setBackground (java.awt.Color.white);
-this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ());
-this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white);
-this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ());
-this.hscroll.setOrientation (0);
-var hscrollHolder = new awt2swing.Panel ();
-hscrollHolder.setLayout ( new java.awt.BorderLayout ());
-this.hscrollFillerPanel.setBackground (java.awt.Color.white);
-this.apvscroll.setOrientation (1);
-this.apvscroll.setVisible (true);
-this.apvscroll.addAdjustmentListener (this);
-this.annotationPanelHolder.setBackground (java.awt.Color.white);
-this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ());
-this.annotationPanelHolder.add (this.apvscroll, "East");
-hscrollHolder.setBackground (java.awt.Color.white);
-this.seqPanelHolder.setBackground (java.awt.Color.white);
-this.idPanelHolder.setBackground (java.awt.Color.white);
-this.sequenceHolderPanel.add (this.scalePanelHolder, "North");
-this.sequenceHolderPanel.add (this.seqPanelHolder, "Center");
-this.seqPanelHolder.add (this.vscroll, "East");
-this.add (this.idPanelHolder, "West");
-this.idPanelHolder.add (this.idSpaceFillerPanel1, "North");
-this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South");
-this.add (hscrollHolder, "South");
-hscrollHolder.add (this.hscroll, "Center");
-hscrollHolder.add (this.hscrollFillerPanel, "West");
-this.add (this.sequenceHolderPanel, "Center");
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "updateAnnotation",
-function () {
-this.updateAnnotation (false);
-});
-Clazz.defineMethod (c$, "updateAnnotation",
-function (applyGlobalSettings) {
-this.updateAnnotation (applyGlobalSettings, false);
-}, "~B");
-Clazz.defineMethod (c$, "updateAnnotation",
-function (applyGlobalSettings, preserveNewGroupSettings) {
-this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings);
-this.adjustAnnotationHeight ();
-}, "~B,~B");
-Clazz.overrideMethod (c$, "getAlignment",
-function () {
-return this.av.getAlignment ();
-});
-Clazz.overrideMethod (c$, "getViewName",
-function () {
-return this.getName ();
-});
-Clazz.overrideMethod (c$, "getStructureSelectionManager",
-function () {
-return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
-});
-Clazz.overrideMethod (c$, "raiseOOMWarning",
-function (string, error) {
-System.err.println ("Out of memory whilst '" + string + "'");
-error.printStackTrace ();
-}, "~S,OutOfMemoryError");
-Clazz.defineMethod (c$, "setFollowingComplementScroll",
-function (b) {
-this.followingComplementScroll = b;
-}, "~B");
-Clazz.defineMethod (c$, "isFollowingComplementScroll",
-function () {
-return this.followingComplementScroll;
-});
-c$.$AlignmentPanel$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter);
-Clazz.overrideMethod (c$, "componentResized",
-function (evt) {
-this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ());
-if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) {
-this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false);
-}this.b$["jalview.appletgui.AlignmentPanel"].repaint ();
-}, "java.awt.event.ComponentEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AlignmentPanel$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener);
-Clazz.overrideMethod (c$, "propertyChange",
-function (evt) {
-if (evt.getPropertyName ().equals ("alignment")) {
-jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true);
-this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged ();
-}}, "java.beans.PropertyChangeEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.api.AlignmentViewPanel", "java.awt.event.AdjustmentListener", "awt2swing.Scrollbar"], "jalview.appletgui.AlignmentPanel", ["awt2swing.Frame", "jalview.analysis.AnnotationSorter", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.FeatureRenderer", "$.IdPanel", "$.IdwidthAdjuster", "$.PaintRefresher", "$.ScalePanel", "$.SeqPanel", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.beans.PropertyChangeListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.overviewPanel = null;
+this.seqPanel = null;
+this.idPanel = null;
+this.idwidthAdjuster = null;
+this.alignFrame = null;
+this.scalePanel = null;
+this.annotationPanel = null;
+this.alabels = null;
+this.fastPaint = true;
+this.hextent = 0;
+this.vextent = 0;
+this.sequenceHolderPanel = null;
+this.vscroll = null;
+this.hscroll = null;
+this.seqPanelHolder = null;
+this.scalePanelHolder = null;
+this.idPanelHolder = null;
+this.idSpaceFillerPanel1 = null;
+this.annotationSpaceFillerHolder = null;
+this.hscrollFillerPanel = null;
+this.annotationPanelHolder = null;
+this.apvscroll = null;
+this.followingComplementScroll = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]);
+Clazz.prepareFields (c$, function () {
+this.sequenceHolderPanel = new awt2swing.Panel ();
+this.vscroll = new awt2swing.Scrollbar ();
+this.hscroll = new awt2swing.Scrollbar ();
+this.seqPanelHolder = new awt2swing.Panel ();
+this.scalePanelHolder = new awt2swing.Panel ();
+this.idPanelHolder = new awt2swing.Panel ();
+this.idSpaceFillerPanel1 = new awt2swing.Panel ();
+this.annotationSpaceFillerHolder = new awt2swing.Panel ();
+this.hscrollFillerPanel = new awt2swing.Panel ();
+this.annotationPanelHolder = new awt2swing.Panel ();
+this.apvscroll = new awt2swing.Scrollbar ();
+});
+Clazz.overrideMethod (c$, "finalize",
+function () {
+this.alignFrame = null;
+this.av = null;
+this.seqPanel = null;
+this.seqPanelHolder = null;
+this.sequenceHolderPanel = null;
+this.scalePanel = null;
+this.scalePanelHolder = null;
+this.annotationPanel = null;
+this.annotationPanelHolder = null;
+this.annotationSpaceFillerHolder = null;
+});
+Clazz.makeConstructor (c$,
+function (af, av) {
+Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []);
+this.setName ("alignmentPanel");
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.alignFrame = af;
+this.av = av;
+this.seqPanel = new jalview.appletgui.SeqPanel (av, this);
+this.idPanel = new jalview.appletgui.IdPanel (av, this);
+this.scalePanel = new jalview.appletgui.ScalePanel (av, this);
+this.idwidthAdjuster = new jalview.appletgui.IdwidthAdjuster (this);
+this.annotationPanel = new jalview.appletgui.AnnotationPanel (this);
+this.annotationPanelHolder.add (this.annotationPanel, "Center");
+this.sequenceHolderPanel.add (this.annotationPanelHolder, "South");
+this.alabels = new jalview.appletgui.AnnotationLabels (this);
+this.setAnnotationVisible (av.isShowAnnotation ());
+this.idPanelHolder.add (this.idPanel, "Center");
+this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center");
+this.annotationSpaceFillerHolder.add (this.alabels, "Center");
+this.scalePanelHolder.add (this.scalePanel, "Center");
+this.seqPanelHolder.add (this.seqPanel, "Center");
+this.fontChanged ();
+this.setScrollValues (0, 0);
+this.apvscroll.addAdjustmentListener (this);
+this.hscroll.addAdjustmentListener (this);
+this.vscroll.addAdjustmentListener (this);
+this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$1") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$1, this, Clazz.cloneFinals ("av", av))));
+var d = this.calculateIdWidth ();
+this.idPanel.idCanvas.setSize (d);
+this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height);
+this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
+this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height);
+this.alabels.setSize (d.width, this.annotationPanel.getSize ().height);
+var ap = this;
+av.addPropertyChangeListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$2") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$2, this, Clazz.cloneFinals ("ap", ap, "av", av))));
+}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");
+Clazz.overrideMethod (c$, "getAlignViewport",
+function () {
+return this.av;
+});
+Clazz.defineMethod (c$, "getSequenceRenderer",
+function () {
+return this.seqPanel.seqCanvas.sr;
+});
+Clazz.overrideMethod (c$, "getFeatureRenderer",
+function () {
+return this.seqPanel.seqCanvas.fr;
+});
+Clazz.overrideMethod (c$, "cloneFeatureRenderer",
+function () {
+var nfr = new jalview.appletgui.FeatureRenderer (this.av);
+nfr.transferSettings (this.seqPanel.seqCanvas.fr);
+return nfr;
+});
+Clazz.defineMethod (c$, "alignmentChanged",
+function () {
+this.av.alignmentChanged (this);
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}this.alignFrame.updateEditMenuBar ();
+this.repaint ();
+});
+Clazz.defineMethod (c$, "fontChanged",
+function () {
+this.idPanel.idCanvas.image = null;
+var fm = this.getFontMetrics (this.av.getFont ());
+this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
+this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
+this.av.updateSequenceIdColours ();
+this.annotationPanel.image = null;
+var ap = this.annotationPanel.adjustPanelHeight (false);
+var d = this.calculateIdWidth ();
+d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height);
+this.alabels.setSize (d.width + 4, ap);
+this.idPanel.idCanvas.setSize (d);
+this.hscrollFillerPanel.setSize (d);
+this.validateAnnotationDimensions (false);
+this.annotationPanel.repaint ();
+this.validate ();
+this.repaint ();
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}});
+Clazz.defineMethod (c$, "setIdWidth",
+function (w, h) {
+this.idPanel.idCanvas.setSize (w, h);
+this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height);
+this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height);
+this.alabels.setSize (w, this.alabels.getSize ().height);
+this.validate ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "calculateIdWidth",
+function () {
+if (this.av.nullFrame == null) {
+this.av.nullFrame = new awt2swing.Frame ();
+this.av.nullFrame.addNotify ();
+this.av.nullFrame.setFont (this.av.font);
+}var g = this.av.nullFrame.getGraphics ();
+var fm = g.getFontMetrics (this.av.font);
+var al = this.av.getAlignment ();
+var i = 0;
+var idWidth = 0;
+var id;
+while (i < al.getHeight () && al.getSequenceAt (i) != null) {
+var s = al.getSequenceAt (i);
+id = s.getDisplayId (this.av.getShowJVSuffix ());
+if (fm.stringWidth (id) > idWidth) {
+idWidth = fm.stringWidth (id);
+}i++;
+}
+i = 0;
+if (al.getAlignmentAnnotation () != null) {
+fm = g.getFontMetrics (this.av.nullFrame.getFont ());
+while (i < al.getAlignmentAnnotation ().length) {
+var label = al.getAlignmentAnnotation ()[i].label;
+if (fm.stringWidth (label) > idWidth) {
+idWidth = fm.stringWidth (label);
+}i++;
+}
+}return new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height);
+});
+Clazz.defineMethod (c$, "highlightSearchResults",
+function (results) {
+this.scrollToPosition (results);
+this.seqPanel.seqCanvas.highlightSearchResults (results);
+}, "jalview.datamodel.SearchResults");
+Clazz.defineMethod (c$, "scrollToPosition",
+function (results) {
+return this.scrollToPosition (results, true);
+}, "jalview.datamodel.SearchResults");
+Clazz.defineMethod (c$, "scrollToPosition",
+function (results, redrawOverview) {
+return this.scrollToPosition (results, redrawOverview, false);
+}, "jalview.datamodel.SearchResults,~B");
+Clazz.defineMethod (c$, "scrollToPosition",
+function (results, redrawOverview, centre) {
+if (results != null && results.getSize () > 0) {
+var alignment = this.av.getAlignment ();
+var seqIndex = alignment.findIndex (results);
+if (seqIndex == -1) {
+return false;
+}var seq = alignment.getSequenceAt (seqIndex);
+var r = results.getResults (seq, 0, alignment.getWidth ());
+if (r == null) {
+if (jalview.bin.JalviewLite.debug) {
+System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ());
+}return false;
+}if (jalview.bin.JalviewLite.debug) {
+}var start = r[0];
+var end = r[1];
+if (centre) {
+var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1;
+start = Math.max (start - offset, 0);
+end = Math.min (end + offset, seq.getEnd () - 1);
+}if (start < 0) {
+return false;
+}if (end == seq.getEnd ()) {
+return false;
+}return this.scrollTo (start, end, seqIndex, false, redrawOverview);
+}return true;
+}, "jalview.datamodel.SearchResults,~B,~B");
+Clazz.defineMethod (c$, "scrollTo",
+function (ostart, end, seqIndex, scrollToNearest, redrawOverview) {
+var startv;
+var endv;
+var starts;
+var ends;
+var width;
+var start = -1;
+if (this.av.hasHiddenColumns ()) {
+start = this.av.getColumnSelection ().findColumnPosition (ostart);
+end = this.av.getColumnSelection ().findColumnPosition (end);
+if (start == end) {
+if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) {
+return false;
+}}} else {
+start = ostart;
+}if (!this.av.getWrapAlignment ()) {
+if ((startv = this.av.getStartRes ()) >= start) {
+this.setScrollValues (start - 1, seqIndex);
+} else if ((endv = this.av.getEndRes ()) <= end) {
+this.setScrollValues (startv + 1 + end - endv, seqIndex);
+} else if ((starts = this.av.getStartSeq ()) > seqIndex) {
+this.setScrollValues (this.av.getStartRes (), seqIndex);
+} else if ((ends = this.av.getEndSeq ()) <= seqIndex) {
+this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1);
+}} else {
+this.scrollToWrappedVisible (start);
+}if (redrawOverview && this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}this.paintAlignment (redrawOverview);
+return true;
+}, "~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "scrollToWrappedVisible",
+function (res) {
+var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) {
+this.vscroll.setValue (Clazz.doubleToInt (res / cwidth));
+this.av.startRes = this.vscroll.getValue () * cwidth;
+}}, "~N");
+Clazz.defineMethod (c$, "getOverviewPanel",
+function () {
+return this.overviewPanel;
+});
+Clazz.defineMethod (c$, "setOverviewPanel",
+function (op) {
+this.overviewPanel = op;
+}, "jalview.appletgui.OverviewPanel");
+Clazz.defineMethod (c$, "setAnnotationVisible",
+function (b) {
+if (!this.av.getWrapAlignment ()) {
+this.annotationSpaceFillerHolder.setVisible (b);
+this.annotationPanelHolder.setVisible (b);
+} else {
+this.annotationSpaceFillerHolder.setVisible (false);
+this.annotationPanelHolder.setVisible (false);
+}this.validate ();
+this.repaint ();
+}, "~B");
+Clazz.overrideMethod (c$, "adjustAnnotationHeight",
+function () {
+if (this.alignFrame.getSize ().height == 0) {
+System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING");
+}this.fontChanged ();
+this.validateAnnotationDimensions (true);
+this.apvscroll.addNotify ();
+this.hscroll.addNotify ();
+this.validate ();
+this.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "validateAnnotationDimensions",
+function (adjustPanelHeight) {
+var rowHeight = this.av.getCharHeight ();
+var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight ();
+var annotationHeight = this.av.calcPanelHeight ();
+var mheight = annotationHeight;
+var d = this.sequenceHolderPanel.getSize ();
+var availableHeight = d.height - this.scalePanelHolder.getHeight ();
+if (adjustPanelHeight) {
+if (annotationHeight + alignmentHeight > availableHeight) {
+annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight);
+}} else {
+annotationHeight = this.annotationPanelHolder.getSize ().height;
+}if (availableHeight - annotationHeight < 5) {
+annotationHeight = availableHeight;
+}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight));
+this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight));
+this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
+var e = this.idPanel.getSize ();
+this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight));
+this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight));
+var s = this.apvscroll.getValue ();
+if (s > mheight - annotationHeight) {
+s = 0;
+}this.apvscroll.setValues (s, annotationHeight, 0, mheight);
+this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
+this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
+}, "~B");
+Clazz.defineMethod (c$, "setWrapAlignment",
+function (wrap) {
+this.av.startSeq = 0;
+this.av.startRes = 0;
+this.scalePanelHolder.setVisible (!wrap);
+this.hscroll.setVisible (!wrap);
+this.idwidthAdjuster.setVisible (!wrap);
+if (wrap) {
+this.annotationPanelHolder.setVisible (false);
+this.annotationSpaceFillerHolder.setVisible (false);
+} else if (this.av.isShowAnnotation ()) {
+this.annotationPanelHolder.setVisible (true);
+this.annotationSpaceFillerHolder.setVisible (true);
+}this.idSpaceFillerPanel1.setVisible (!wrap);
+this.fontChanged ();
+this.validate ();
+this.sequenceHolderPanel.validate ();
+this.repaint ();
+}, "~B");
+Clazz.defineMethod (c$, "scrollUp",
+function (up) {
+if (up) {
+if (this.vscroll.getValue () < 1) {
+return false;
+}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1);
+} else {
+if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) {
+return false;
+}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1);
+}this.repaint ();
+return true;
+}, "~B");
+Clazz.defineMethod (c$, "scrollRight",
+function (right) {
+if (!right) {
+if (this.hscroll.getValue () < 1) {
+return false;
+}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ());
+} else {
+if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) {
+return false;
+}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ());
+}this.repaint ();
+return true;
+}, "~B");
+Clazz.defineMethod (c$, "setScrollValues",
+function (x, y) {
+var width = this.av.getAlignment ().getWidth ();
+var height = this.av.getAlignment ().getHeight ();
+if (this.av.hasHiddenColumns ()) {
+width = this.av.getColumnSelection ().findColumnPosition (width);
+}if (x < 0) {
+x = 0;
+};this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ());
+this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ());
+if (this.hextent > width) {
+this.hextent = width;
+}if (this.vextent > height) {
+this.vextent = height;
+}if ((this.hextent + x) > width) {
+System.err.println ("hextent was " + this.hextent + " and x was " + x);
+x = width - this.hextent;
+}if ((this.vextent + y) > height) {
+y = height - this.vextent;
+}if (y < 0) {
+y = 0;
+}if (x < 0) {
+System.err.println ("x was " + x);
+x = 0;
+}this.av.setStartSeq (y);
+var endSeq = y + this.vextent;
+if (endSeq > this.av.getAlignment ().getHeight ()) {
+endSeq = this.av.getAlignment ().getHeight ();
+}this.av.setEndSeq (endSeq);
+this.av.setStartRes (x);
+this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1);
+this.hscroll.setValues (x, this.hextent, 0, width);
+this.vscroll.setValues (y, this.vextent, 0, height);
+if (this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}this.sendViewPosition ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+if (this.annotationPanel == null) return;
+var oldX = this.av.getStartRes ();
+var oldY = this.av.getStartSeq ();
+if (evt == null || evt.getSource () === this.apvscroll) {
+this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
+this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
+}if (evt == null || evt.getSource () === this.hscroll) {
+var x = this.hscroll.getValue ();
+this.av.setStartRes (x);
+this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1);
+}if (evt == null || evt.getSource () === this.vscroll) {
+var offy = this.vscroll.getValue ();
+if (this.av.getWrapAlignment ()) {
+var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+this.av.setStartRes (this.vscroll.getValue () * rowSize);
+this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize);
+} else {
+this.av.setStartSeq (offy);
+this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()));
+}}if (this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}var scrollX = this.av.startRes - oldX;
+var scrollY = this.av.startSeq - oldY;
+if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) {
+this.repaint ();
+} else {
+if (scrollX > this.av.endRes - this.av.startRes) {
+scrollX = this.av.endRes - this.av.startRes;
+} else if (scrollX < this.av.startRes - this.av.endRes) {
+scrollX = this.av.startRes - this.av.endRes;
+}this.idPanel.idCanvas.fastPaint (scrollY);
+this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY);
+this.scalePanel.repaint ();
+if (this.av.isShowAnnotation ()) {
+this.annotationPanel.fastPaint (this.av.getStartRes () - oldX);
+}}this.sendViewPosition ();
+if (this.isFollowingComplementScroll ()) {
+this.setFollowingComplementScroll (false);
+} else {
+var ap = this.getComplementPanel ();
+this.av.scrollComplementaryAlignment (ap);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "getComplementPanel",
+($fz = function () {
+var ap = null;
+if (this.alignFrame != null) {
+var sf = this.alignFrame.getSplitFrame ();
+if (sf != null) {
+var other = sf.getComplement (this.alignFrame);
+if (other != null) {
+ap = other.alignPanel;
+}}}return ap;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "scrollToCentre",
+function (sr, seqOffset) {
+var mappedTo = sr.getResultSequence (0);
+var seqs = this.av.getAlignment ().getSequences ();
+var sequenceIndex = 0;
+var matched = false;
+for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (mappedTo === seq.getDatasetSequence ()) {
+matched = true;
+break;
+}sequenceIndex++;
+}
+if (!matched) {
+return;
+}sequenceIndex = Math.max (0, sequenceIndex - seqOffset);
+sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex));
+this.setFollowingComplementScroll (true);
+this.scrollToPosition (sr, true, true);
+}, "jalview.datamodel.SearchResults,~N");
+Clazz.defineMethod (c$, "sendViewPosition",
+($fz = function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "paintAlignment",
+function (updateOverview) {
+var sorter = new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ());
+sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ());
+this.repaint ();
+if (updateOverview) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this);
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}}}, "~B");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+System.out.println ("alignframe paintcomp");
+this.invalidate ();
+var d = this.idPanel.idCanvas.getSize ();
+var canvasHeight = this.seqPanel.seqCanvas.getSize ().height;
+if (canvasHeight != d.height) {
+this.idPanel.idCanvas.setSize (d.width, canvasHeight);
+}if (this.av.getWrapAlignment ()) {
+var maxwidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+if (canvasWidth > 0) {
+var max = Clazz.doubleToInt (maxwidth / canvasWidth);
+this.vscroll.setMaximum (1 + max);
+this.vscroll.setUnitIncrement (1);
+this.vscroll.setVisibleAmount (1);
+}} else {
+this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout ( new java.awt.BorderLayout ());
+this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ());
+this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.scalePanelHolder.setBackground (java.awt.Color.white);
+this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.idPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.idSpaceFillerPanel1.setBackground (java.awt.Color.white);
+this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ());
+this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white);
+this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ());
+this.hscroll.setOrientation (0);
+var hscrollHolder = new awt2swing.Panel ();
+hscrollHolder.setLayout ( new java.awt.BorderLayout ());
+this.hscrollFillerPanel.setBackground (java.awt.Color.white);
+this.apvscroll.setOrientation (1);
+this.apvscroll.setVisible (true);
+this.apvscroll.addAdjustmentListener (this);
+this.annotationPanelHolder.setBackground (java.awt.Color.white);
+this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.annotationPanelHolder.add (this.apvscroll, "East");
+hscrollHolder.setBackground (java.awt.Color.white);
+this.seqPanelHolder.setBackground (java.awt.Color.white);
+this.idPanelHolder.setBackground (java.awt.Color.white);
+this.sequenceHolderPanel.add (this.scalePanelHolder, "North");
+this.sequenceHolderPanel.add (this.seqPanelHolder, "Center");
+this.seqPanelHolder.add (this.vscroll, "East");
+this.add (this.idPanelHolder, "West");
+this.idPanelHolder.add (this.idSpaceFillerPanel1, "North");
+this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South");
+this.add (hscrollHolder, "South");
+hscrollHolder.add (this.hscroll, "Center");
+hscrollHolder.add (this.hscrollFillerPanel, "West");
+this.add (this.sequenceHolderPanel, "Center");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "updateAnnotation",
+function () {
+this.updateAnnotation (false);
+});
+Clazz.defineMethod (c$, "updateAnnotation",
+function (applyGlobalSettings) {
+this.updateAnnotation (applyGlobalSettings, false);
+}, "~B");
+Clazz.defineMethod (c$, "updateAnnotation",
+function (applyGlobalSettings, preserveNewGroupSettings) {
+this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings);
+this.adjustAnnotationHeight ();
+}, "~B,~B");
+Clazz.overrideMethod (c$, "getAlignment",
+function () {
+return this.av.getAlignment ();
+});
+Clazz.overrideMethod (c$, "getViewName",
+function () {
+return this.getName ();
+});
+Clazz.overrideMethod (c$, "getStructureSelectionManager",
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
+});
+Clazz.overrideMethod (c$, "raiseOOMWarning",
+function (string, error) {
+System.err.println ("Out of memory whilst '" + string + "'");
+error.printStackTrace ();
+}, "~S,OutOfMemoryError");
+Clazz.defineMethod (c$, "setFollowingComplementScroll",
+function (b) {
+this.followingComplementScroll = b;
+}, "~B");
+Clazz.defineMethod (c$, "isFollowingComplementScroll",
+function () {
+return this.followingComplementScroll;
+});
+c$.$AlignmentPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter);
+Clazz.overrideMethod (c$, "componentResized",
+function (evt) {
+this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ());
+if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) {
+this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false);
+}this.b$["jalview.appletgui.AlignmentPanel"].repaint ();
+}, "java.awt.event.ComponentEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignmentPanel$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener);
+Clazz.overrideMethod (c$, "propertyChange",
+function (evt) {
+if (evt.getPropertyName ().equals ("alignment")) {
+jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true);
+this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged ();
+}}, "java.beans.PropertyChangeEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/AnnotationColourChooser.class b/bin/jalview/appletgui/AnnotationColourChooser.class
index 15ef66280647bcb8de7a4bdcfa2a3c357a16ea73..e2ee2966f03c0394acdcc6d1d5e58247aad17ad2 100644
GIT binary patch
delta 28
jcmeCl?9SX!qsf@FxmGidk%O0kqllgHC-defS}QmKk2?uz
delta 29
kcmeCq?8)3vqsf@NxmGidk&};svxuGXCj-;w$66~m0hVD2YXATM
diff --git a/bin/jalview/appletgui/AnnotationColourChooser.js b/bin/jalview/appletgui/AnnotationColourChooser.js
index fce2267..668d9cd 100644
--- a/bin/jalview/appletgui/AnnotationColourChooser.js
+++ b/bin/jalview/appletgui/AnnotationColourChooser.js
@@ -1,348 +1,348 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.AnnotationColourChooser", ["awt2swing.Frame", "jalview.appletgui.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.datamodel.GraphLine", "jalview.schemes.AnnotationColourGradient", "$.ColourSchemeI", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.Font", "java.lang.Error", "$.Float", "java.util.Hashtable", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.frame = null;
-this.av = null;
-this.ap = null;
-this.oldcs = null;
-this.oldgroupColours = null;
-this.currentAnnotation = null;
-this.adjusting = false;
-this.annotations = null;
-this.minColour = null;
-this.maxColour = null;
-this.ok = null;
-this.cancel = null;
-this.defColours = null;
-this.jPanel1 = null;
-this.jPanel2 = null;
-this.threshold = null;
-this.flowLayout1 = null;
-this.jPanel3 = null;
-this.slider = null;
-this.thresholdValue = null;
-this.currentColours = null;
-this.borderLayout1 = null;
-this.thresholdIsMin = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AnnotationColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
-Clazz.prepareFields (c$, function () {
-this.annotations = new awt2swing.Choice ();
-this.minColour = new awt2swing.Button ();
-this.maxColour = new awt2swing.Button ();
-this.ok = new awt2swing.Button ();
-this.cancel = new awt2swing.Button ();
-this.defColours = new awt2swing.Button ();
-this.jPanel1 = new awt2swing.Panel ();
-this.jPanel2 = new awt2swing.Panel ();
-this.threshold = new awt2swing.Choice ();
-this.flowLayout1 = new java.awt.FlowLayout ();
-this.jPanel3 = new awt2swing.Panel ();
-this.slider = new awt2swing.Scrollbar (0);
-this.thresholdValue = new awt2swing.TextField (20);
-this.currentColours = new awt2swing.Checkbox ();
-this.borderLayout1 = new java.awt.BorderLayout ();
-this.thresholdIsMin = new awt2swing.Checkbox ();
-});
-Clazz.makeConstructor (c$,
-function (av, ap) {
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
-try {
-this.jbInit ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-this.oldcs = av.getGlobalColourScheme ();
-if (av.getAlignment ().getGroups () != null) {
-this.oldgroupColours = new java.util.Hashtable ();
-for (var sg, $sg = ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-if (sg.cs != null) {
-this.oldgroupColours.put (sg, sg.cs);
-} else {
-this.oldgroupColours.put (sg, "null");
-}}
-}this.av = av;
-this.ap = ap;
-this.slider.addAdjustmentListener (this);
-this.slider.addMouseListener (this);
-if (av.getAlignment ().getAlignmentAnnotation () == null) {
-return;
-}this.setDefaultMinMax ();
-this.adjusting = true;
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
-var acg = this.oldcs;
-this.currentColours.setState (acg.isPredefinedColours () || acg.getBaseColour () != null);
-if (!acg.isPredefinedColours () && acg.getBaseColour () == null) {
-this.minColour.setBackground (acg.getMinColour ());
-this.maxColour.setBackground (acg.getMaxColour ());
-}}var list = new java.util.Vector ();
-var index = 1;
-for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
-var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
-if (!list.contains (label)) {
-list.addElement (label);
-} else {
-list.addElement (label + "_" + (index++));
-}}
-for (var i = 0; i < list.size (); i++) {
-this.annotations.addItem (list.elementAt (i).toString ());
-}
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
-var acg = this.oldcs;
-this.annotations.select (acg.getAnnotation ());
-switch (acg.getAboveThreshold ()) {
-case -1:
-this.threshold.select (new Integer (0));
-break;
-case 1:
-this.threshold.select (new Integer (1));
-break;
-case 0:
-this.threshold.select (new Integer (1));
-break;
-default:
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_dont_know_thereshold_annotationcolourgradient"));
-}
-this.thresholdIsMin.setState (acg.thresholdIsMinMax);
-this.thresholdValue.setText ("" + acg.getAnnotationThreshold ());
-}this.adjusting = false;
-this.changeColour ();
-this.frame = new awt2swing.Frame ();
-this.frame.add (this);
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.colour_by_annotation"), 560, 175);
-this.validate ();
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
-Clazz.defineMethod (c$, "setDefaultMinMax",
-($fz = function () {
-this.minColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MIN", java.awt.Color.orange));
-this.maxColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MAX", java.awt.Color.red));
-}, $fz.isPrivate = true, $fz));
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
-try {
-this.jbInit ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.minColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.minColour.setLabel (jalview.util.MessageManager.getString ("label.min_colour"));
-this.minColour.addActionListener (this);
-this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.maxColour.setLabel (jalview.util.MessageManager.getString ("label.max_colour"));
-this.maxColour.addActionListener (this);
-this.thresholdIsMin.addItemListener (this);
-this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
-this.ok.addActionListener (this);
-this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
-this.cancel.addActionListener (this);
-this.defColours.setLabel (jalview.util.MessageManager.getString ("action.set_defaults"));
-this.defColours.addActionListener (this);
-this.annotations.addItemListener (this);
-this.thresholdValue.addActionListener (this);
-this.slider.setBackground (java.awt.Color.white);
-this.slider.setPreferredSize ( new java.awt.Dimension (193, 21));
-this.slider.setEnabled (false);
-this.thresholdValue.setPreferredSize ( new java.awt.Dimension (79, 22));
-this.thresholdValue.setEnabled (false);
-this.thresholdValue.setColumns (5);
-this.currentColours.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.currentColours.setLabel (jalview.util.MessageManager.getString ("label.use_original_colours"));
-this.currentColours.addItemListener (this);
-this.thresholdIsMin.setBackground (java.awt.Color.white);
-this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
-this.setLayout (this.borderLayout1);
-this.jPanel1.setBackground (java.awt.Color.white);
-this.jPanel2.setLayout ( new java.awt.FlowLayout ());
-this.jPanel2.setBackground (java.awt.Color.white);
-this.threshold.addItemListener (this);
-this.jPanel3.setLayout ( new java.awt.FlowLayout ());
-this.jPanel3.setBackground (java.awt.Color.white);
-var jPanel4 = new awt2swing.Panel ();
-jPanel4.setLayout ( new java.awt.BorderLayout ());
-jPanel4.setBackground (java.awt.Color.white);
-this.jPanel1.add (this.ok);
-this.jPanel1.add (this.cancel);
-this.jPanel2.add (this.annotations);
-this.jPanel2.add (this.currentColours);
-this.jPanel2.add (this.minColour);
-this.jPanel2.add (this.maxColour);
-jPanel4.add (this.thresholdIsMin, "West");
-jPanel4.add (this.slider, "Center");
-jPanel4.add (this.thresholdValue, "East");
-var jPanel34 = new awt2swing.Panel ();
-jPanel34.setLayout ( new java.awt.BorderLayout ());
-jPanel34.setBackground (java.awt.Color.white);
-jPanel34.add (this.jPanel2, "North");
-jPanel34.add (this.threshold, "West");
-this.jPanel3.add (this.defColours);
-jPanel34.add (this.jPanel3, "East");
-jPanel34.add (jPanel4, "South");
-this.add (jPanel34, "Center");
-this.add (this.jPanel1, "South");
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.thresholdValue) {
-try {
-var f = new Float (this.thresholdValue.getText ()).floatValue ();
-this.slider.setValue (Clazz.floatToInt (f * 1000));
-this.adjustmentValueChanged (null);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-} else if (evt.getSource () === this.minColour) {
-this.minColour_actionPerformed (null);
-} else if (evt.getSource () === this.maxColour) {
-this.maxColour_actionPerformed (null);
-} else if (evt.getSource () === this.defColours) {
-this.defColour_actionPerformed ();
-} else if (evt.getSource () === this.ok) {
-this.changeColour ();
-this.frame.setVisible (false);
-} else if (evt.getSource () === this.cancel) {
-this.reset ();
-this.ap.paintAlignment (true);
-this.frame.setVisible (false);
-} else {
-this.changeColour ();
-}}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-if (evt.getSource () === this.currentColours) {
-if (this.currentColours.getState ()) {
-this.reset ();
-}this.maxColour.setEnabled (!this.currentColours.getState ());
-this.minColour.setEnabled (!this.currentColours.getState ());
-}this.changeColour ();
-}, "java.awt.event.ItemEvent");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-if (!this.adjusting) {
-this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
-if (this.currentColours.getState () && !(Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.AnnotationColourGradient))) {
-this.changeColour ();
-}this.currentAnnotation.threshold.value = this.slider.getValue () / 1000;
-this.ap.paintAlignment (false);
-}}, "java.awt.event.AdjustmentEvent");
-Clazz.defineMethod (c$, "minColour_actionPerformed",
-function (newCol) {
-if (newCol != null) {
-this.minColour.setBackground (newCol);
-this.minColour.repaint ();
-this.changeColour ();
-} else {
- new jalview.appletgui.UserDefinedColours (this, "Min Colour", this.minColour.getBackground ());
-}}, "java.awt.Color");
-Clazz.defineMethod (c$, "maxColour_actionPerformed",
-function (newCol) {
-if (newCol != null) {
-this.maxColour.setBackground (newCol);
-this.maxColour.repaint ();
-this.changeColour ();
-} else {
- new jalview.appletgui.UserDefinedColours (this, "Max Colour", this.maxColour.getBackground ());
-}}, "java.awt.Color");
-Clazz.defineMethod (c$, "defColour_actionPerformed",
-function () {
-this.setDefaultMinMax ();
-this.minColour.repaint ();
-this.maxColour.repaint ();
-this.changeColour ();
-});
-Clazz.defineMethod (c$, "changeColour",
-function () {
-if (this.adjusting) {
-return;
-}this.currentAnnotation = this.av.getAlignment ().getAlignmentAnnotation ()[this.annotations.getSelectedIndex ()];
-var aboveThreshold = -1;
-if (this.threshold.getSelectedIndex () == 1) {
-aboveThreshold = 1;
-} else if (this.threshold.getSelectedIndex () == 2) {
-aboveThreshold = 0;
-}this.slider.setEnabled (true);
-this.thresholdValue.setEnabled (true);
-this.thresholdIsMin.setEnabled (true);
-if (aboveThreshold == -1) {
-this.slider.setEnabled (false);
-this.thresholdValue.setEnabled (false);
-this.thresholdIsMin.setEnabled (false);
-this.thresholdValue.setText ("");
-} else if (aboveThreshold != -1 && this.currentAnnotation.threshold == null) {
-this.currentAnnotation.setThreshold ( new jalview.datamodel.GraphLine ((this.currentAnnotation.graphMax - this.currentAnnotation.graphMin) / 2, "Threshold", java.awt.Color.black));
-}if (aboveThreshold != -1) {
-this.adjusting = true;
-this.slider.setMinimum (Clazz.floatToInt (this.currentAnnotation.graphMin * 1000));
-this.slider.setMaximum (Clazz.floatToInt (this.currentAnnotation.graphMax * 1000));
-this.slider.setValue (Clazz.floatToInt (this.currentAnnotation.threshold.value * 1000));
-this.thresholdValue.setText (this.currentAnnotation.threshold.value + "");
-this.slider.setEnabled (true);
-this.thresholdValue.setEnabled (true);
-this.adjusting = false;
-}var acg = null;
-if (this.currentColours.getState ()) {
-acg = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.av.getGlobalColourScheme (), aboveThreshold);
-} else {
-acg = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
-}if (this.currentAnnotation.graphMin == 0 && this.currentAnnotation.graphMax == 0) {
-acg.setPredefinedColours (true);
-}acg.thresholdIsMinMax = this.thresholdIsMin.getState ();
-this.av.setGlobalColourScheme (acg);
-if (this.av.getAlignment ().getGroups () != null) {
-for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-if (sg.cs == null) {
-continue;
-}if (this.currentColours.getState ()) {
-sg.cs = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, sg.cs, aboveThreshold);
-} else {
-sg.cs = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
-}}
-}this.ap.alignmentChanged ();
-this.ap.paintAlignment (true);
-});
-Clazz.defineMethod (c$, "reset",
-function () {
-this.av.setGlobalColourScheme (this.oldcs);
-if (this.av.getAlignment ().getGroups () != null) {
-for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-var cs = this.oldgroupColours.get (sg);
-if (Clazz.instanceOf (cs, jalview.schemes.ColourSchemeI)) {
-sg.cs = cs;
-} else {
-sg.cs = null;
-}}
-}this.ap.paintAlignment (true);
-});
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-this.ap.paintAlignment (true);
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.AnnotationColourChooser", ["awt2swing.Frame", "jalview.appletgui.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.datamodel.GraphLine", "jalview.schemes.AnnotationColourGradient", "$.ColourSchemeI", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.Font", "java.lang.Error", "$.Float", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.frame = null;
+this.av = null;
+this.ap = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.currentAnnotation = null;
+this.adjusting = false;
+this.annotations = null;
+this.minColour = null;
+this.maxColour = null;
+this.ok = null;
+this.cancel = null;
+this.defColours = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.threshold = null;
+this.flowLayout1 = null;
+this.jPanel3 = null;
+this.slider = null;
+this.thresholdValue = null;
+this.currentColours = null;
+this.borderLayout1 = null;
+this.thresholdIsMin = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.annotations = new awt2swing.Choice ();
+this.minColour = new awt2swing.Button ();
+this.maxColour = new awt2swing.Button ();
+this.ok = new awt2swing.Button ();
+this.cancel = new awt2swing.Button ();
+this.defColours = new awt2swing.Button ();
+this.jPanel1 = new awt2swing.Panel ();
+this.jPanel2 = new awt2swing.Panel ();
+this.threshold = new awt2swing.Choice ();
+this.flowLayout1 = new java.awt.FlowLayout ();
+this.jPanel3 = new awt2swing.Panel ();
+this.slider = new awt2swing.Scrollbar (0);
+this.thresholdValue = new awt2swing.TextField (20);
+this.currentColours = new awt2swing.Checkbox ();
+this.borderLayout1 = new java.awt.BorderLayout ();
+this.thresholdIsMin = new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$,
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.oldcs = av.getGlobalColourScheme ();
+if (av.getAlignment ().getGroups () != null) {
+this.oldgroupColours = new java.util.Hashtable ();
+for (var sg, $sg = ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+this.oldgroupColours.put (sg, sg.cs);
+} else {
+this.oldgroupColours.put (sg, "null");
+}}
+}this.av = av;
+this.ap = ap;
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+if (av.getAlignment ().getAlignmentAnnotation () == null) {
+return;
+}this.setDefaultMinMax ();
+this.adjusting = true;
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
+var acg = this.oldcs;
+this.currentColours.setState (acg.isPredefinedColours () || acg.getBaseColour () != null);
+if (!acg.isPredefinedColours () && acg.getBaseColour () == null) {
+this.minColour.setBackground (acg.getMinColour ());
+this.maxColour.setBackground (acg.getMaxColour ());
+}}var list = new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+list.addElement (label);
+} else {
+list.addElement (label + "_" + (index++));
+}}
+for (var i = 0; i < list.size (); i++) {
+this.annotations.addItem (list.elementAt (i).toString ());
+}
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
+var acg = this.oldcs;
+this.annotations.select (acg.getAnnotation ());
+switch (acg.getAboveThreshold ()) {
+case -1:
+this.threshold.select (new Integer (0));
+break;
+case 1:
+this.threshold.select (new Integer (1));
+break;
+case 0:
+this.threshold.select (new Integer (1));
+break;
+default:
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_dont_know_thereshold_annotationcolourgradient"));
+}
+this.thresholdIsMin.setState (acg.thresholdIsMinMax);
+this.thresholdValue.setText ("" + acg.getAnnotationThreshold ());
+}this.adjusting = false;
+this.changeColour ();
+this.frame = new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.colour_by_annotation"), 560, 175);
+this.validate ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "setDefaultMinMax",
+($fz = function () {
+this.minColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MIN", java.awt.Color.orange));
+this.maxColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MAX", java.awt.Color.red));
+}, $fz.isPrivate = true, $fz));
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.minColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.minColour.setLabel (jalview.util.MessageManager.getString ("label.min_colour"));
+this.minColour.addActionListener (this);
+this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.maxColour.setLabel (jalview.util.MessageManager.getString ("label.max_colour"));
+this.maxColour.addActionListener (this);
+this.thresholdIsMin.addItemListener (this);
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.ok.addActionListener (this);
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancel.addActionListener (this);
+this.defColours.setLabel (jalview.util.MessageManager.getString ("action.set_defaults"));
+this.defColours.addActionListener (this);
+this.annotations.addItemListener (this);
+this.thresholdValue.addActionListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setPreferredSize ( new java.awt.Dimension (193, 21));
+this.slider.setEnabled (false);
+this.thresholdValue.setPreferredSize ( new java.awt.Dimension (79, 22));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setColumns (5);
+this.currentColours.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.currentColours.setLabel (jalview.util.MessageManager.getString ("label.use_original_colours"));
+this.currentColours.addItemListener (this);
+this.thresholdIsMin.setBackground (java.awt.Color.white);
+this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
+this.setLayout (this.borderLayout1);
+this.jPanel1.setBackground (java.awt.Color.white);
+this.jPanel2.setLayout ( new java.awt.FlowLayout ());
+this.jPanel2.setBackground (java.awt.Color.white);
+this.threshold.addItemListener (this);
+this.jPanel3.setLayout ( new java.awt.FlowLayout ());
+this.jPanel3.setBackground (java.awt.Color.white);
+var jPanel4 = new awt2swing.Panel ();
+jPanel4.setLayout ( new java.awt.BorderLayout ());
+jPanel4.setBackground (java.awt.Color.white);
+this.jPanel1.add (this.ok);
+this.jPanel1.add (this.cancel);
+this.jPanel2.add (this.annotations);
+this.jPanel2.add (this.currentColours);
+this.jPanel2.add (this.minColour);
+this.jPanel2.add (this.maxColour);
+jPanel4.add (this.thresholdIsMin, "West");
+jPanel4.add (this.slider, "Center");
+jPanel4.add (this.thresholdValue, "East");
+var jPanel34 = new awt2swing.Panel ();
+jPanel34.setLayout ( new java.awt.BorderLayout ());
+jPanel34.setBackground (java.awt.Color.white);
+jPanel34.add (this.jPanel2, "North");
+jPanel34.add (this.threshold, "West");
+this.jPanel3.add (this.defColours);
+jPanel34.add (this.jPanel3, "East");
+jPanel34.add (jPanel4, "South");
+this.add (jPanel34, "Center");
+this.add (this.jPanel1, "South");
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f = new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.minColour) {
+this.minColour_actionPerformed (null);
+} else if (evt.getSource () === this.maxColour) {
+this.maxColour_actionPerformed (null);
+} else if (evt.getSource () === this.defColours) {
+this.defColour_actionPerformed ();
+} else if (evt.getSource () === this.ok) {
+this.changeColour ();
+this.frame.setVisible (false);
+} else if (evt.getSource () === this.cancel) {
+this.reset ();
+this.ap.paintAlignment (true);
+this.frame.setVisible (false);
+} else {
+this.changeColour ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+if (evt.getSource () === this.currentColours) {
+if (this.currentColours.getState ()) {
+this.reset ();
+}this.maxColour.setEnabled (!this.currentColours.getState ());
+this.minColour.setEnabled (!this.currentColours.getState ());
+}this.changeColour ();
+}, "java.awt.event.ItemEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+if (this.currentColours.getState () && !(Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.AnnotationColourGradient))) {
+this.changeColour ();
+}this.currentAnnotation.threshold.value = this.slider.getValue () / 1000;
+this.ap.paintAlignment (false);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "minColour_actionPerformed",
+function (newCol) {
+if (newCol != null) {
+this.minColour.setBackground (newCol);
+this.minColour.repaint ();
+this.changeColour ();
+} else {
+ new jalview.appletgui.UserDefinedColours (this, "Min Colour", this.minColour.getBackground ());
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "maxColour_actionPerformed",
+function (newCol) {
+if (newCol != null) {
+this.maxColour.setBackground (newCol);
+this.maxColour.repaint ();
+this.changeColour ();
+} else {
+ new jalview.appletgui.UserDefinedColours (this, "Max Colour", this.maxColour.getBackground ());
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "defColour_actionPerformed",
+function () {
+this.setDefaultMinMax ();
+this.minColour.repaint ();
+this.maxColour.repaint ();
+this.changeColour ();
+});
+Clazz.defineMethod (c$, "changeColour",
+function () {
+if (this.adjusting) {
+return;
+}this.currentAnnotation = this.av.getAlignment ().getAlignmentAnnotation ()[this.annotations.getSelectedIndex ()];
+var aboveThreshold = -1;
+if (this.threshold.getSelectedIndex () == 1) {
+aboveThreshold = 1;
+} else if (this.threshold.getSelectedIndex () == 2) {
+aboveThreshold = 0;
+}this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.thresholdIsMin.setEnabled (true);
+if (aboveThreshold == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdIsMin.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (aboveThreshold != -1 && this.currentAnnotation.threshold == null) {
+this.currentAnnotation.setThreshold ( new jalview.datamodel.GraphLine ((this.currentAnnotation.graphMax - this.currentAnnotation.graphMin) / 2, "Threshold", java.awt.Color.black));
+}if (aboveThreshold != -1) {
+this.adjusting = true;
+this.slider.setMinimum (Clazz.floatToInt (this.currentAnnotation.graphMin * 1000));
+this.slider.setMaximum (Clazz.floatToInt (this.currentAnnotation.graphMax * 1000));
+this.slider.setValue (Clazz.floatToInt (this.currentAnnotation.threshold.value * 1000));
+this.thresholdValue.setText (this.currentAnnotation.threshold.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+}var acg = null;
+if (this.currentColours.getState ()) {
+acg = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.av.getGlobalColourScheme (), aboveThreshold);
+} else {
+acg = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
+}if (this.currentAnnotation.graphMin == 0 && this.currentAnnotation.graphMax == 0) {
+acg.setPredefinedColours (true);
+}acg.thresholdIsMinMax = this.thresholdIsMin.getState ();
+this.av.setGlobalColourScheme (acg);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs == null) {
+continue;
+}if (this.currentColours.getState ()) {
+sg.cs = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, sg.cs, aboveThreshold);
+} else {
+sg.cs = new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
+}}
+}this.ap.alignmentChanged ();
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "reset",
+function () {
+this.av.setGlobalColourScheme (this.oldcs);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+var cs = this.oldgroupColours.get (sg);
+if (Clazz.instanceOf (cs, jalview.schemes.ColourSchemeI)) {
+sg.cs = cs;
+} else {
+sg.cs = null;
+}}
+}this.ap.paintAlignment (true);
+});
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
diff --git a/bin/jalview/appletgui/AnnotationColumnChooser.class b/bin/jalview/appletgui/AnnotationColumnChooser.class
index 4cce256f400b09411d0b0cceccc04f73375bc00f..27e6c60b031aff295897299c6d889231bdeca549 100644
GIT binary patch
delta 68
zcmV-K0K5OZf&sdM0kG>e0rRu$HP-_g8vqOl{QzAD0u})?`~bNE`Tze0ra!%HP-_h8~_an{QzAD0u})?`~bNE`TzSsu
ev)(n%0s&pKtvKZe19t!vla)Yl0T8nXL68MLh8Bwe
delta 75
zcmV-R0JQ&M7UbCw> -1) {
-var phb = new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");
-if (this.tooltip == null) {
-this.tooltip = new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);
-} else {
-this.tooltip.setTip (phb.getNonHtmlContent ());
-}} else if (this.tooltip != null) {
-this.tooltip.setTip ("");
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "cancelDrag",
-function () {
-this.dragEvent = null;
-this.dragCancelled = true;
-});
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-if (this.dragCancelled) {
-return;
-};this.dragEvent = evt;
-if (this.resizePanel) {
-var d = this.ap.annotationPanelHolder.getSize ();
-var e = this.ap.annotationSpaceFillerHolder.getSize ();
-var f = this.ap.seqPanelHolder.getSize ();
-var dif = evt.getY () - this.oldY;
-dif /= this.ap.av.getCharHeight ();
-dif *= this.ap.av.getCharHeight ();
-if ((d.height - dif) > 20 && (f.height + dif) > 20) {
-this.ap.annotationPanel.setSize (d.width, d.height - dif);
-this.setSize ( new java.awt.Dimension (e.width, d.height - dif));
-this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));
-this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));
-this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());
-f.height += dif;
-this.ap.seqPanelHolder.setPreferredSize (f);
-this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
-this.ap.validate ();
-this.ap.addNotify ();
-}} else {
-var diff;
-if ((diff = 6 - evt.getY ()) > 0) {
-this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);
-this.ap.adjustmentValueChanged (null);
-} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {
-this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);
-this.ap.adjustmentValueChanged (null);
-}this.repaint ();
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-if (!this.resizePanel && !this.dragCancelled) {
-var start = this.selectedRow;
-var end = this.getSelectedRow (evt.getY () + this.scrollOffset);
-if (start > -1 && start != end) {
-var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];
-if (end == -1) {
-end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;
-}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];
-this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;
-this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;
-}}this.resizePanel = false;
-this.dragEvent = null;
-this.dragCancelled = false;
-this.repaint ();
-this.ap.annotationPanel.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-if (evt.getY () < 10 && evt.getX () < 14) {
-this.resizePanel = true;
-this.repaint ();
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-this.dragCancelled = false;
-if (this.dragEvent == null) {
-this.resizePanel = false;
-} else {
-if (!this.resizePanel) {
-this.dragEvent = null;
-}}this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-this.oldY = evt.getY ();
-if (this.resizePanel) {
-return;
-}this.dragCancelled = false;
-this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);
-var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
-if ((evt.getModifiers () & 4) == 4) {
-var popup = new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));
-var item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);
-item.addActionListener (this);
-popup.add (item);
-if (this.selectedRow < 0) {
-if (this.hasHiddenRows) {
-item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
-item.addActionListener (this);
-popup.add (item);
-}this.add (popup);
-popup.show (this, evt.getX (), evt.getY ());
-return;
-}item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);
-item.addActionListener (this);
-popup.add (item);
-item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);
-item.addActionListener (this);
-popup.add (item);
-if (this.selectedRow < aa.length) {
-if (aa[this.selectedRow].sequenceRef != null) {
-var label = aa[this.selectedRow].label;
-var hideType = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);
-hideType.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz.cloneFinals ("label", label))));
-popup.add (hideType);
-}}if (this.hasHiddenRows) {
-item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
-item.addActionListener (this);
-popup.add (item);
-}this.add (popup);
-item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);
-item.addActionListener (this);
-popup.add (item);
-if (this.selectedRow < aa.length) {
-if (aa[this.selectedRow].autoCalculated) {
-if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {
-popup.addSeparator ();
-var cbmi = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());
-var aaa = aa[this.selectedRow];
-cbmi.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz.cloneFinals ("aaa", aaa, "cbmi", cbmi))));
-popup.add (cbmi);
-if (aaa.groupRef != null) {
-var chist = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());
-chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz.cloneFinals ("aaa", aaa, "chist", chist))));
-popup.add (chist);
-var cprofl = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());
-cprofl.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz.cloneFinals ("aaa", aaa, "cprofl", cprofl))));
-popup.add (cprofl);
-var cprofn = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());
-cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz.cloneFinals ("aaa", aaa, "cprofn", cprofn))));
-popup.add (cprofn);
-} else {
-var chist = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());
-chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz.cloneFinals ("chist", chist))));
-popup.add (chist);
-var cprof = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());
-cprof.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz.cloneFinals ("cprof", cprof))));
-popup.add (cprof);
-var cprofn = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());
-cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz.cloneFinals ("cprofn", cprofn))));
-popup.add (cprofn);
-}item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);
-item.addActionListener (this);
-popup.add (item);
-}}}popup.show (this, evt.getX (), evt.getY ());
-} else {
-if (this.selectedRow > -1 && this.selectedRow < aa.length) {
-if (aa[this.selectedRow].groupRef != null) {
-if (evt.getClickCount () >= 2) {
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
-this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);
-this.ap.av.sendSelection ();
-this.ap.paintAlignment (false);
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
-} else {
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));
-}return;
-} else if (aa[this.selectedRow].sequenceRef != null) {
-if (evt.getClickCount () == 1) {
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz.newArray (-1, [aa[this.selectedRow].sequenceRef])));
-} else if (evt.getClickCount () >= 2) {
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
-var sg = this.ap.av.getSelectionGroup ();
-if (sg != null) {
-if (!(evt.isControlDown () || evt.isShiftDown ())) {
-sg = new jalview.datamodel.SequenceGroup (sg);
-sg.clear ();
-sg.addSequence (aa[this.selectedRow].sequenceRef, false);
-} else {
-if (evt.isControlDown ()) {
-sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);
-} else {
-sg.addSequence (aa[this.selectedRow].sequenceRef, true);
-}}} else {
-sg = new jalview.datamodel.SequenceGroup ();
-sg.setStartRes (0);
-sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);
-sg.addSequence (aa[this.selectedRow].sequenceRef, false);
-}this.ap.av.setSelectionGroup (sg);
-this.ap.paintAlignment (false);
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
-this.ap.av.sendSelection ();
-}}}}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "copy_annotseqtoclipboard",
-function (sq) {
-if (sq == null || sq.getLength () < 1) {
-return;
-}jalview.appletgui.AlignFrame.copiedSequences = new StringBuffer ();
-jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");
-if (this.av.hasHiddenColumns ()) {
-jalview.appletgui.AlignFrame.copiedHiddenColumns = new java.util.Vector ();
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
-jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0], region[1]]));
-}
-}}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
-var w = this.getSize ().width;
-var h = this.getSize ().height;
-if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {
-this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);
-}this.drawComponent (this.image.getGraphics (), w);
-g.drawImage (this.image, 0, 0, this);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "drawComponent",
-function (g, width) {
-g.setFont (this.av.getFont ());
-var fm = g.getFontMetrics (this.av.getFont ());
-g.setColor (java.awt.Color.white);
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-g.translate (0, -this.scrollOffset);
-g.setColor (java.awt.Color.black);
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();
-var y = 0;
-var fy = g.getFont ().getSize ();
-var x = 0;
-var offset;
-if (aa != null) {
-this.hasHiddenRows = false;
-for (var i = 0; i < aa.length; i++) {
-if (!aa[i].visible) {
-this.hasHiddenRows = true;
-continue;
-}x = width - fm.stringWidth (aa[i].label) - 3;
-y += aa[i].height;
-offset = Clazz.doubleToInt (-(aa[i].height - fy) / 2);
-g.drawString (aa[i].label, x, y + offset);
-}
-}g.translate (0, +this.scrollOffset);
-if (this.resizePanel) {
-g.setColor (java.awt.Color.red);
-g.setPaintMode ();
-g.drawLine (2, 8, 5, 2);
-g.drawLine (5, 2, 8, 8);
-} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {
-g.setColor (java.awt.Color.lightGray);
-g.drawString (aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());
-}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {
-g.setColor (java.awt.Color.black);
-g.drawString (jalview.util.MessageManager.getString ("label.right_click"), 2, 8);
-g.drawString (jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);
-}}, "java.awt.Graphics,~N");
-c$.$AnnotationLabels$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);
-this.b$["jalview.appletgui.AnnotationLabels"].refresh ();
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-if (this.f$.aaa.groupRef != null) {
-this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());
-} else {
-this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);
-}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$3$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$4$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$5$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-this.f$.aaa.groupRef.setshowSequenceLogo (true);
-this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$6$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$7$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$AnnotationLabels$8$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"ADDNEW", "Add New Row",
-"EDITNAME", "Edit Label/Description",
-"HIDE", "Hide This Row",
-"SHOWALL", "Show All Hidden Rows",
-"OUTPUT_TEXT", "Show Values In Textbox",
-"COPYCONS_SEQ", "Copy Consensus Sequence");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.AnnotationLabels", ["awt2swing.Checkbox", "$.CheckboxMenuItem", "$.Frame", "$.MenuItem", "$.PopupMenu", "jalview.analysis.AlignmentUtils", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.PaintRefresher", "$.Tooltip", "jalview.bin.JalviewLite", "jalview.datamodel.AlignmentAnnotation", "$.SequenceGroup", "jalview.util.MessageManager", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "$.Dimension", "$.FlowLayout", "java.awt.event.ItemListener", "java.lang.StringBuffer", "java.util.Arrays", "$.Collections", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.image = null;
+this.active = false;
+this.ap = null;
+this.av = null;
+this.resizing = false;
+this.oldY = 0;
+this.mouseX = 0;
+this.scrollOffset = 0;
+this.selectedRow = -1;
+this.tooltip = null;
+this.hasHiddenRows = false;
+this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationLabels", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "setScrollOffset",
+function (y, repaint) {
+this.scrollOffset = y;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz.defineMethod (c$, "getSelectedRow",
+function (y) {
+var row = -2;
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return row;
+}var height = 0;
+for (var i = 0; i < aa.length; i++) {
+row = -1;
+if (!aa[i].visible) {
+continue;
+}height += aa[i].height;
+if (y < height) {
+row = i;
+break;
+}}
+return row;
+}, "~N");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.ADDNEW)) {
+var newAnnotation = new jalview.datamodel.AlignmentAnnotation ("", null, new Array (this.ap.av.getAlignment ().getWidth ()));
+if (!this.editLabelDescription (newAnnotation)) {
+return;
+}this.ap.av.getAlignment ().addAnnotation (newAnnotation);
+this.ap.av.getAlignment ().setAnnotationIndex (newAnnotation, 0);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.EDITNAME)) {
+this.editLabelDescription (aa[this.selectedRow]);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.HIDE)) {
+aa[this.selectedRow].visible = false;
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.SHOWALL)) {
+for (var i = 0; i < aa.length; i++) {
+aa[i].visible = (aa[i].annotations == null) ? false : true;
+}
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)) {
+var cap = new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.ap.alignFrame.getTitle () + " - " + aa[this.selectedRow].label, 500, 100);
+cap.setText (aa[this.selectedRow].toString ());
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)) {
+var cons = this.av.getConsensusSeq ();
+if (cons != null) {
+this.copy_annotseqtoclipboard (cons);
+}}this.refresh ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "refresh",
+function () {
+this.ap.annotationPanel.adjustPanelHeight ();
+this.setSize (this.getSize ().width, this.ap.annotationPanel.getSize ().height);
+this.ap.validate ();
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "editLabelDescription",
+function (annotation) {
+var padGaps = new awt2swing.Checkbox ("Fill Empty Gaps With \"" + this.ap.av.getGapCharacter () + "\"", annotation.padGaps);
+var dialog = new jalview.appletgui.EditNameDialog (annotation.label, annotation.description, " Annotation Label", "Annotation Description", this.ap.alignFrame, "Edit Annotation Name / Description", 500, 180, false);
+var empty = new awt2swing.Panel ( new java.awt.FlowLayout ());
+empty.add (padGaps);
+dialog.add (empty);
+dialog.pack ();
+dialog.setVisible (true);
+if (dialog.accept) {
+annotation.label = dialog.getName ();
+annotation.description = dialog.getDescription ();
+annotation.setPadGaps (padGaps.getState (), this.av.getGapCharacter ());
+this.repaint ();
+return true;
+} else {
+return false;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+this.resizePanel = evt.getY () < 10 && evt.getX () < 14;
+var row = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (row > -1) {
+var phb = new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");
+if (this.tooltip == null) {
+this.tooltip = new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);
+} else {
+this.tooltip.setTip (phb.getNonHtmlContent ());
+}} else if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "cancelDrag",
+function () {
+this.dragEvent = null;
+this.dragCancelled = true;
+});
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+if (this.dragCancelled) {
+return;
+};this.dragEvent = evt;
+if (this.resizePanel) {
+var d = this.ap.annotationPanelHolder.getSize ();
+var e = this.ap.annotationSpaceFillerHolder.getSize ();
+var f = this.ap.seqPanelHolder.getSize ();
+var dif = evt.getY () - this.oldY;
+dif /= this.ap.av.getCharHeight ();
+dif *= this.ap.av.getCharHeight ();
+if ((d.height - dif) > 20 && (f.height + dif) > 20) {
+this.ap.annotationPanel.setSize (d.width, d.height - dif);
+this.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));
+this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());
+f.height += dif;
+this.ap.seqPanelHolder.setPreferredSize (f);
+this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+this.ap.validate ();
+this.ap.addNotify ();
+}} else {
+var diff;
+if ((diff = 6 - evt.getY ()) > 0) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);
+this.ap.adjustmentValueChanged (null);
+} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);
+this.ap.adjustmentValueChanged (null);
+}this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+if (!this.resizePanel && !this.dragCancelled) {
+var start = this.selectedRow;
+var end = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (start > -1 && start != end) {
+var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];
+if (end == -1) {
+end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;
+}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;
+}}this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+this.repaint ();
+this.ap.annotationPanel.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+if (evt.getY () < 10 && evt.getX () < 14) {
+this.resizePanel = true;
+this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+this.dragCancelled = false;
+if (this.dragEvent == null) {
+this.resizePanel = false;
+} else {
+if (!this.resizePanel) {
+this.dragEvent = null;
+}}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+this.oldY = evt.getY ();
+if (this.resizePanel) {
+return;
+}this.dragCancelled = false;
+this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if ((evt.getModifiers () & 4) == 4) {
+var popup = new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));
+var item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < 0) {
+if (this.hasHiddenRows) {
+item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);
+item.addActionListener (this);
+popup.add (item);
+item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].sequenceRef != null) {
+var label = aa[this.selectedRow].label;
+var hideType = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);
+hideType.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz.cloneFinals ("label", label))));
+popup.add (hideType);
+}}if (this.hasHiddenRows) {
+item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].autoCalculated) {
+if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {
+popup.addSeparator ();
+var cbmi = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());
+var aaa = aa[this.selectedRow];
+cbmi.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz.cloneFinals ("aaa", aaa, "cbmi", cbmi))));
+popup.add (cbmi);
+if (aaa.groupRef != null) {
+var chist = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz.cloneFinals ("aaa", aaa, "chist", chist))));
+popup.add (chist);
+var cprofl = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());
+cprofl.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz.cloneFinals ("aaa", aaa, "cprofl", cprofl))));
+popup.add (cprofl);
+var cprofn = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz.cloneFinals ("aaa", aaa, "cprofn", cprofn))));
+popup.add (cprofn);
+} else {
+var chist = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz.cloneFinals ("chist", chist))));
+popup.add (chist);
+var cprof = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());
+cprof.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz.cloneFinals ("cprof", cprof))));
+popup.add (cprof);
+var cprofn = new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz.cloneFinals ("cprofn", cprofn))));
+popup.add (cprofn);
+}item = new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);
+item.addActionListener (this);
+popup.add (item);
+}}}popup.show (this, evt.getX (), evt.getY ());
+} else {
+if (this.selectedRow > -1 && this.selectedRow < aa.length) {
+if (aa[this.selectedRow].groupRef != null) {
+if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);
+this.ap.av.sendSelection ();
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+} else {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));
+}return;
+} else if (aa[this.selectedRow].sequenceRef != null) {
+if (evt.getClickCount () == 1) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz.newArray (-1, [aa[this.selectedRow].sequenceRef])));
+} else if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+if (!(evt.isControlDown () || evt.isShiftDown ())) {
+sg = new jalview.datamodel.SequenceGroup (sg);
+sg.clear ();
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+} else {
+if (evt.isControlDown ()) {
+sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);
+} else {
+sg.addSequence (aa[this.selectedRow].sequenceRef, true);
+}}} else {
+sg = new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (0);
+sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+}this.ap.av.setSelectionGroup (sg);
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+this.ap.av.sendSelection ();
+}}}}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "copy_annotseqtoclipboard",
+function (sq) {
+if (sq == null || sq.getLength () < 1) {
+return;
+}jalview.appletgui.AlignFrame.copiedSequences = new StringBuffer ();
+jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");
+if (this.av.hasHiddenColumns ()) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns = new java.util.Vector ();
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0], region[1]]));
+}
+}}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var w = this.getSize ().width;
+var h = this.getSize ().height;
+if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {
+this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);
+}this.drawComponent (this.image.getGraphics (), w);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawComponent",
+function (g, width) {
+g.setFont (this.av.getFont ());
+var fm = g.getFontMetrics (this.av.getFont ());
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.translate (0, -this.scrollOffset);
+g.setColor (java.awt.Color.black);
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+var y = 0;
+var fy = g.getFont ().getSize ();
+var x = 0;
+var offset;
+if (aa != null) {
+this.hasHiddenRows = false;
+for (var i = 0; i < aa.length; i++) {
+if (!aa[i].visible) {
+this.hasHiddenRows = true;
+continue;
+}x = width - fm.stringWidth (aa[i].label) - 3;
+y += aa[i].height;
+offset = Clazz.doubleToInt (-(aa[i].height - fy) / 2);
+g.drawString (aa[i].label, x, y + offset);
+}
+}g.translate (0, +this.scrollOffset);
+if (this.resizePanel) {
+g.setColor (java.awt.Color.red);
+g.setPaintMode ();
+g.drawLine (2, 8, 5, 2);
+g.drawLine (5, 2, 8, 8);
+} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {
+g.setColor (java.awt.Color.lightGray);
+g.drawString (aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());
+}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {
+g.setColor (java.awt.Color.black);
+g.drawString (jalview.util.MessageManager.getString ("label.right_click"), 2, 8);
+g.drawString (jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);
+}}, "java.awt.Graphics,~N");
+c$.$AnnotationLabels$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);
+this.b$["jalview.appletgui.AnnotationLabels"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+if (this.f$.aaa.groupRef != null) {
+this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());
+} else {
+this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);
+}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (true);
+this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$6$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$7$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$8$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ADDNEW", "Add New Row",
+"EDITNAME", "Edit Label/Description",
+"HIDE", "Hide This Row",
+"SHOWALL", "Show All Hidden Rows",
+"OUTPUT_TEXT", "Show Values In Textbox",
+"COPYCONS_SEQ", "Copy Consensus Sequence");
+});
diff --git a/bin/jalview/appletgui/AnnotationPanel.class b/bin/jalview/appletgui/AnnotationPanel.class
index ec1d4ce4544ce48b7fdf624f331f19f2a9a28db2..8d48e905c927a7ab5f0c56c46847a025e0519e22 100644
GIT binary patch
delta 37
tcmX?{b0}v6qdMc+%}nYmm;_ZAxc@K+u`_!7We{Lw6qb_OyhpR02LR;s3aJ19
delta 38
ucmX?XX5u`_!7We{Lw6qXWa+Pqt{od*Ez#R{tc
diff --git a/bin/jalview/appletgui/AnnotationPanel.js b/bin/jalview/appletgui/AnnotationPanel.js
index 33f7259..6234bd3 100644
--- a/bin/jalview/appletgui/AnnotationPanel.js
+++ b/bin/jalview/appletgui/AnnotationPanel.js
@@ -1,364 +1,364 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "jalview.renderer.AwtRenderPanelI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "$.MouseMotionListener", "java.awt.Color"], "jalview.appletgui.AnnotationPanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.appletgui.EditNameDialog", "$.UserDefinedColours", "jalview.datamodel.Annotation", "jalview.renderer.AnnotationRenderer", "jalview.util.MessageManager", "$.Platform", "java.awt.Dimension", "java.lang.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.av = null;
-this.ap = null;
-this.activeRow = -1;
-this.HELIX = "Helix";
-this.SHEET = "Sheet";
-this.STEM = "RNA Helix";
-this.LABEL = "Label";
-this.REMOVE = "Remove Annotation";
-this.COLOUR = "Colour";
-this.HELIX_COLOUR = null;
-this.SHEET_COLOUR = null;
-this.image = null;
-this.gg = null;
-this.fm = null;
-this.imgWidth = 0;
-this.$fastPaint = false;
-this.graphStretch = -1;
-this.graphStretchY = -1;
-this.mouseDragging = false;
-this.MAC = false;
-this.renderer = null;
-this.needValidating = false;
-this.scrollOffset = 0;
-this.$bounds = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AnnotationPanel", awt2swing.Panel, [jalview.renderer.AwtRenderPanelI, java.awt.event.AdjustmentListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
-Clazz.prepareFields (c$, function () {
-this.HELIX_COLOUR = java.awt.Color.red.darker ();
-this.SHEET_COLOUR = java.awt.Color.green.darker ().darker ();
-this.$bounds = Clazz.newIntArray (2, 0);
-});
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);
-this.MAC = jalview.util.Platform.isAMac ();
-this.ap = ap;
-this.av = ap.av;
-this.setLayout (null);
-var height = this.adjustPanelHeight ();
-ap.apvscroll.setValues (0, this.getSize ().height, 0, height);
-this.addMouseMotionListener (this);
-this.addMouseListener (this);
-this.renderer = new jalview.renderer.AnnotationRenderer ();
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.makeConstructor (c$,
-function (av) {
-Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);
-this.av = av;
-this.renderer = new jalview.renderer.AnnotationRenderer ();
-}, "jalview.appletgui.AlignViewport");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-}, "java.awt.event.AdjustmentEvent");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();
-if (aa == null) {
-return;
-}var anot = aa[this.activeRow].annotations;
-if (anot.length < this.av.getColumnSelection ().getMax ()) {
-var temp = new Array (this.av.getColumnSelection ().getMax () + 2);
-System.arraycopy (anot, 0, temp, 0, anot.length);
-anot = temp;
-aa[this.activeRow].annotations = anot;
-}var label = "";
-if (this.av.getColumnSelection () != null && this.av.getColumnSelection ().size () > 0 && anot[this.av.getColumnSelection ().getMin ()] != null) {
-label = anot[this.av.getColumnSelection ().getMin ()].displayCharacter;
-}if (evt.getActionCommand ().equals ("Remove Annotation")) {
-for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
-anot[this.av.getColumnSelection ().columnAt (i)] = null;
-}
-} else if (evt.getActionCommand ().equals ("Label")) {
-label = this.enterLabel (label, "Enter Label");
-if (label == null) {
-return;
-}if ((label.length > 0) && !aa[this.activeRow].hasText) {
-aa[this.activeRow].hasText = true;
-}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
-var index = this.av.getColumnSelection ().columnAt (i);
-if (!this.av.getColumnSelection ().isVisible (index)) {
-continue;
-}if (anot[index] == null) {
-anot[index] = new jalview.datamodel.Annotation (label, "", ' ', 0);
-}anot[index].displayCharacter = label;
-}
-} else if (evt.getActionCommand ().equals ("Colour")) {
-var udc = new jalview.appletgui.UserDefinedColours (this, java.awt.Color.black, this.ap.alignFrame);
-var col = udc.getColor ();
-for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
-var index = this.av.getColumnSelection ().columnAt (i);
-if (!this.av.getColumnSelection ().isVisible (index)) {
-continue;
-}if (anot[index] == null) {
-anot[index] = new jalview.datamodel.Annotation ("", "", ' ', 0);
-}anot[index].colour = col;
-}
-} else {
-var type = String.fromCharCode (0);
-var symbol = "\u03B1";
-if (evt.getActionCommand ().equals ("Helix")) {
-type = 'H';
-} else if (evt.getActionCommand ().equals ("Sheet")) {
-type = 'E';
-symbol = "\u03B2";
-} else if (evt.getActionCommand ().equals ("RNA Helix")) {
-type = 'S';
-symbol = "\u03C3";
-}if (!aa[this.activeRow].hasIcons) {
-aa[this.activeRow].hasIcons = true;
-}label = this.enterLabel (symbol, "Enter Label");
-if (label == null) {
-return;
-}if ((label.length > 0) && !aa[this.activeRow].hasText) {
-aa[this.activeRow].hasText = true;
-if (evt.getActionCommand ().equals ("RNA Helix")) {
-aa[this.activeRow].showAllColLabels = true;
-}}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
-var index = this.av.getColumnSelection ().columnAt (i);
-if (!this.av.getColumnSelection ().isVisible (index)) {
-continue;
-}if (anot[index] == null) {
-anot[index] = new jalview.datamodel.Annotation (label, "", type, 0);
-}anot[index].secondaryStructure = type != 'S' ? type : label.length == 0 ? ' ' : label.charAt (0);
-anot[index].displayCharacter = label;
-}
-}this.av.getAlignment ().validateAnnotation (aa[this.activeRow]);
-this.ap.alignmentChanged ();
-this.adjustPanelHeight ();
-this.repaint ();
-return;
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "enterLabel",
-function (text, label) {
-var dialog = new jalview.appletgui.EditNameDialog (text, null, label, null, this.ap.alignFrame, "Enter Label", 400, 200, true);
-if (dialog.accept) {
-return dialog.getName ();
-} else {
-return null;
-}}, "~S,~S");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();
-if (aa == null) {
-return;
-}var height = -this.scrollOffset;
-this.activeRow = -1;
-for (var i = 0; i < aa.length; i++) {
-if (aa[i].visible) {
-height += aa[i].height;
-}if (evt.getY () < height) {
-if (aa[i].editable) {
-this.activeRow = i;
-} else if (aa[i].graph > 0) {
-this.graphStretch = i;
-this.graphStretchY = evt.getY ();
-}break;
-}}
-if ((evt.getModifiers () & 4) == 4 && this.activeRow != -1) {
-if (this.av.getColumnSelection () == null) {
-return;
-}var pop = new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.structure_type"));
-var item;
-if (this.av.getAlignment ().isNucleotide () == true) {
-item = new awt2swing.MenuItem ("RNA Helix");
-item.addActionListener (this);
-pop.add (item);
-} else {
-item = new awt2swing.MenuItem ("Helix");
-item.addActionListener (this);
-pop.add (item);
-item = new awt2swing.MenuItem ("Sheet");
-item.addActionListener (this);
-pop.add (item);
-}item = new awt2swing.MenuItem ("Label");
-item.addActionListener (this);
-pop.add (item);
-item = new awt2swing.MenuItem ("Colour");
-item.addActionListener (this);
-pop.add (item);
-item = new awt2swing.MenuItem ("Remove Annotation");
-item.addActionListener (this);
-pop.add (item);
-this.ap.alignFrame.add (pop);
-pop.show (this, evt.getX (), evt.getY ());
-return;
-}this.ap.scalePanel.mousePressed (evt);
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-this.graphStretch = -1;
-this.graphStretchY = -1;
-this.mouseDragging = false;
-if (this.needValidating) {
-this.ap.validate ();
-this.needValidating = false;
-}this.ap.scalePanel.mouseReleased (evt);
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-if (this.graphStretch > -1) {
-this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight += this.graphStretchY - evt.getY ();
-if (this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight < 0) {
-this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight = 0;
-}this.graphStretchY = evt.getY ();
-this.av.calcPanelHeight ();
-this.needValidating = true;
-this.ap.paintAlignment (true);
-} else {
-this.ap.scalePanel.mouseDragged (evt);
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();
-if (aa == null) {
-return;
-}var row = -1;
-var height = -this.scrollOffset;
-for (var i = 0; i < aa.length; i++) {
-if (aa[i].visible) {
-height += aa[i].height;
-}if (evt.getY () < height) {
-row = i;
-break;
-}}
-var res = Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ()) + this.av.getStartRes ();
-if (this.av.hasHiddenColumns ()) {
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
-}if (row > -1 && res < aa[row].annotations.length && aa[row].annotations[res] != null) {
-var text = new StringBuffer ("Sequence position " + (res + 1));
-if (aa[row].annotations[res].description != null) {
-text.append (" " + aa[row].annotations[res].description);
-}this.ap.alignFrame.setStatus (text.toString ());
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-this.ap.scalePanel.mouseEntered (evt);
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-this.ap.scalePanel.mouseExited (evt);
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "adjustPanelHeight",
-function () {
-return this.adjustPanelHeight (true);
-});
-Clazz.defineMethod (c$, "adjustPanelHeight",
-function (repaint) {
-var height = this.av.calcPanelHeight ();
-this.setSize ( new java.awt.Dimension (this.getSize ().width, height));
-if (repaint) {
-this.repaint ();
-}return height;
-}, "~B");
-Clazz.defineMethod (c$, "addEditableColumn",
-function (i) {
-if (this.activeRow == -1) {
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();
-if (aa == null) {
-return;
-}for (var j = 0; j < aa.length; j++) {
-if (aa[j].editable) {
-this.activeRow = j;
-break;
-}}
-}}, "~N");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
-var d = this.getSize ();
-this.imgWidth = d.width;
-if (this.imgWidth < 1 || d.height < 1) {
-return;
-}if (this.image == null || this.imgWidth != this.image.getWidth (this) || d.height != this.image.getHeight (this)) {
-this.image = this.createImage (this.imgWidth, d.height);
-this.gg = this.image.getGraphics ();
-this.gg.setFont (this.av.getFont ());
-this.fm = this.gg.getFontMetrics ();
-this.$fastPaint = false;
-}if (this.$fastPaint) {
-g.drawImage (this.image, 0, 0, this);
-this.$fastPaint = false;
-return;
-}this.gg.setColor (java.awt.Color.white);
-this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-this.drawComponent (this.gg, this.av.startRes, this.av.endRes + 1);
-g.drawImage (this.image, 0, 0, this);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "fastPaint",
-function (horizontal) {
-if (horizontal == 0 || this.av.getAlignment ().getAlignmentAnnotation () == null || this.av.getAlignment ().getAlignmentAnnotation ().length < 1) {
-this.repaint ();
-return;
-}this.gg.copyArea (0, 0, this.imgWidth, this.getSize ().height, -horizontal * this.av.getCharWidth (), 0);
-var sr = this.av.startRes;
-var er = this.av.endRes + 1;
-var transX = 0;
-if (horizontal > 0) {
-transX = (er - sr - horizontal) * this.av.getCharWidth ();
-sr = er - horizontal;
-} else if (horizontal < 0) {
-er = sr - horizontal;
-}this.gg.translate (transX, 0);
-this.drawComponent (this.gg, sr, er);
-this.gg.translate (-transX, 0);
-this.$fastPaint = true;
-this.repaint ();
-}, "~N");
-Clazz.defineMethod (c$, "drawComponent",
-function (g, startRes, endRes) {
-var ofont = this.av.getFont ();
-g.setFont (ofont);
-g.setColor (java.awt.Color.white);
-g.fillRect (0, 0, (endRes - startRes) * this.av.getCharWidth (), this.getSize ().height);
-if (this.fm == null) {
-this.fm = g.getFontMetrics ();
-}if ((this.av.getAlignment ().getAlignmentAnnotation () == null) || (this.av.getAlignment ().getAlignmentAnnotation ().length < 1)) {
-g.setColor (java.awt.Color.white);
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-g.setColor (java.awt.Color.black);
-if (this.av.validCharWidth) {
-g.drawString (jalview.util.MessageManager.getString ("label.alignment_has_no_annotations"), 20, 15);
-}return;
-}g.translate (0, -this.scrollOffset);
-this.renderer.drawComponent (this, this.av, g, this.activeRow, startRes, endRes);
-g.translate (0, +this.scrollOffset);
-}, "java.awt.Graphics,~N,~N");
-Clazz.defineMethod (c$, "setScrollOffset",
-function (value, repaint) {
-this.scrollOffset = value;
-if (repaint) {
-this.repaint ();
-}}, "~N,~B");
-Clazz.defineMethod (c$, "getFontMetrics",
-function () {
-return this.fm;
-});
-Clazz.overrideMethod (c$, "getFadedImage",
-function () {
-return this.image;
-});
-Clazz.overrideMethod (c$, "getFadedImageWidth",
-function () {
-return this.imgWidth;
-});
-Clazz.overrideMethod (c$, "getVisibleVRange",
-function () {
-if (this.ap != null && this.ap.alabels != null) {
-var sOffset = -this.ap.alabels.scrollOffset;
-var visHeight = sOffset + this.ap.annotationPanelHolder.getHeight ();
-this.$bounds[0] = sOffset;
-this.$bounds[1] = visHeight;
-return this.$bounds;
-} else {
-return null;
-}});
-Clazz.defineStatics (c$,
-"GRAPH_HEIGHT", 40);
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.renderer.AwtRenderPanelI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "$.MouseMotionListener", "java.awt.Color"], "jalview.appletgui.AnnotationPanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.appletgui.EditNameDialog", "$.UserDefinedColours", "jalview.datamodel.Annotation", "jalview.renderer.AnnotationRenderer", "jalview.util.MessageManager", "$.Platform", "java.awt.Dimension", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.activeRow = -1;
+this.HELIX = "Helix";
+this.SHEET = "Sheet";
+this.STEM = "RNA Helix";
+this.LABEL = "Label";
+this.REMOVE = "Remove Annotation";
+this.COLOUR = "Colour";
+this.HELIX_COLOUR = null;
+this.SHEET_COLOUR = null;
+this.image = null;
+this.gg = null;
+this.fm = null;
+this.imgWidth = 0;
+this.$fastPaint = false;
+this.graphStretch = -1;
+this.graphStretchY = -1;
+this.mouseDragging = false;
+this.MAC = false;
+this.renderer = null;
+this.needValidating = false;
+this.scrollOffset = 0;
+this.$bounds = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationPanel", awt2swing.Panel, [jalview.renderer.AwtRenderPanelI, java.awt.event.AdjustmentListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.prepareFields (c$, function () {
+this.HELIX_COLOUR = java.awt.Color.red.darker ();
+this.SHEET_COLOUR = java.awt.Color.green.darker ().darker ();
+this.$bounds = Clazz.newIntArray (2, 0);
+});
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);
+this.MAC = jalview.util.Platform.isAMac ();
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+var height = this.adjustPanelHeight ();
+ap.apvscroll.setValues (0, this.getSize ().height, 0, height);
+this.addMouseMotionListener (this);
+this.addMouseListener (this);
+this.renderer = new jalview.renderer.AnnotationRenderer ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);
+this.av = av;
+this.renderer = new jalview.renderer.AnnotationRenderer ();
+}, "jalview.appletgui.AlignViewport");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+}, "java.awt.event.AdjustmentEvent");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var anot = aa[this.activeRow].annotations;
+if (anot.length < this.av.getColumnSelection ().getMax ()) {
+var temp = new Array (this.av.getColumnSelection ().getMax () + 2);
+System.arraycopy (anot, 0, temp, 0, anot.length);
+anot = temp;
+aa[this.activeRow].annotations = anot;
+}var label = "";
+if (this.av.getColumnSelection () != null && this.av.getColumnSelection ().size () > 0 && anot[this.av.getColumnSelection ().getMin ()] != null) {
+label = anot[this.av.getColumnSelection ().getMin ()].displayCharacter;
+}if (evt.getActionCommand ().equals ("Remove Annotation")) {
+for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+anot[this.av.getColumnSelection ().columnAt (i)] = null;
+}
+} else if (evt.getActionCommand ().equals ("Label")) {
+label = this.enterLabel (label, "Enter Label");
+if (label == null) {
+return;
+}if ((label.length > 0) && !aa[this.activeRow].hasText) {
+aa[this.activeRow].hasText = true;
+}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] = new jalview.datamodel.Annotation (label, "", ' ', 0);
+}anot[index].displayCharacter = label;
+}
+} else if (evt.getActionCommand ().equals ("Colour")) {
+var udc = new jalview.appletgui.UserDefinedColours (this, java.awt.Color.black, this.ap.alignFrame);
+var col = udc.getColor ();
+for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] = new jalview.datamodel.Annotation ("", "", ' ', 0);
+}anot[index].colour = col;
+}
+} else {
+var type = String.fromCharCode (0);
+var symbol = "\u03B1";
+if (evt.getActionCommand ().equals ("Helix")) {
+type = 'H';
+} else if (evt.getActionCommand ().equals ("Sheet")) {
+type = 'E';
+symbol = "\u03B2";
+} else if (evt.getActionCommand ().equals ("RNA Helix")) {
+type = 'S';
+symbol = "\u03C3";
+}if (!aa[this.activeRow].hasIcons) {
+aa[this.activeRow].hasIcons = true;
+}label = this.enterLabel (symbol, "Enter Label");
+if (label == null) {
+return;
+}if ((label.length > 0) && !aa[this.activeRow].hasText) {
+aa[this.activeRow].hasText = true;
+if (evt.getActionCommand ().equals ("RNA Helix")) {
+aa[this.activeRow].showAllColLabels = true;
+}}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] = new jalview.datamodel.Annotation (label, "", type, 0);
+}anot[index].secondaryStructure = type != 'S' ? type : label.length == 0 ? ' ' : label.charAt (0);
+anot[index].displayCharacter = label;
+}
+}this.av.getAlignment ().validateAnnotation (aa[this.activeRow]);
+this.ap.alignmentChanged ();
+this.adjustPanelHeight ();
+this.repaint ();
+return;
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "enterLabel",
+function (text, label) {
+var dialog = new jalview.appletgui.EditNameDialog (text, null, label, null, this.ap.alignFrame, "Enter Label", 400, 200, true);
+if (dialog.accept) {
+return dialog.getName ();
+} else {
+return null;
+}}, "~S,~S");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var height = -this.scrollOffset;
+this.activeRow = -1;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].visible) {
+height += aa[i].height;
+}if (evt.getY () < height) {
+if (aa[i].editable) {
+this.activeRow = i;
+} else if (aa[i].graph > 0) {
+this.graphStretch = i;
+this.graphStretchY = evt.getY ();
+}break;
+}}
+if ((evt.getModifiers () & 4) == 4 && this.activeRow != -1) {
+if (this.av.getColumnSelection () == null) {
+return;
+}var pop = new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.structure_type"));
+var item;
+if (this.av.getAlignment ().isNucleotide () == true) {
+item = new awt2swing.MenuItem ("RNA Helix");
+item.addActionListener (this);
+pop.add (item);
+} else {
+item = new awt2swing.MenuItem ("Helix");
+item.addActionListener (this);
+pop.add (item);
+item = new awt2swing.MenuItem ("Sheet");
+item.addActionListener (this);
+pop.add (item);
+}item = new awt2swing.MenuItem ("Label");
+item.addActionListener (this);
+pop.add (item);
+item = new awt2swing.MenuItem ("Colour");
+item.addActionListener (this);
+pop.add (item);
+item = new awt2swing.MenuItem ("Remove Annotation");
+item.addActionListener (this);
+pop.add (item);
+this.ap.alignFrame.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+return;
+}this.ap.scalePanel.mousePressed (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.graphStretch = -1;
+this.graphStretchY = -1;
+this.mouseDragging = false;
+if (this.needValidating) {
+this.ap.validate ();
+this.needValidating = false;
+}this.ap.scalePanel.mouseReleased (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+if (this.graphStretch > -1) {
+this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight += this.graphStretchY - evt.getY ();
+if (this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight < 0) {
+this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight = 0;
+}this.graphStretchY = evt.getY ();
+this.av.calcPanelHeight ();
+this.needValidating = true;
+this.ap.paintAlignment (true);
+} else {
+this.ap.scalePanel.mouseDragged (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var row = -1;
+var height = -this.scrollOffset;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].visible) {
+height += aa[i].height;
+}if (evt.getY () < height) {
+row = i;
+break;
+}}
+var res = Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ()) + this.av.getStartRes ();
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (row > -1 && res < aa[row].annotations.length && aa[row].annotations[res] != null) {
+var text = new StringBuffer ("Sequence position " + (res + 1));
+if (aa[row].annotations[res].description != null) {
+text.append (" " + aa[row].annotations[res].description);
+}this.ap.alignFrame.setStatus (text.toString ());
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+this.ap.scalePanel.mouseEntered (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+this.ap.scalePanel.mouseExited (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "adjustPanelHeight",
+function () {
+return this.adjustPanelHeight (true);
+});
+Clazz.defineMethod (c$, "adjustPanelHeight",
+function (repaint) {
+var height = this.av.calcPanelHeight ();
+this.setSize ( new java.awt.Dimension (this.getSize ().width, height));
+if (repaint) {
+this.repaint ();
+}return height;
+}, "~B");
+Clazz.defineMethod (c$, "addEditableColumn",
+function (i) {
+if (this.activeRow == -1) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}for (var j = 0; j < aa.length; j++) {
+if (aa[j].editable) {
+this.activeRow = j;
+break;
+}}
+}}, "~N");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var d = this.getSize ();
+this.imgWidth = d.width;
+if (this.imgWidth < 1 || d.height < 1) {
+return;
+}if (this.image == null || this.imgWidth != this.image.getWidth (this) || d.height != this.image.getHeight (this)) {
+this.image = this.createImage (this.imgWidth, d.height);
+this.gg = this.image.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+this.fm = this.gg.getFontMetrics ();
+this.$fastPaint = false;
+}if (this.$fastPaint) {
+g.drawImage (this.image, 0, 0, this);
+this.$fastPaint = false;
+return;
+}this.gg.setColor (java.awt.Color.white);
+this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+this.drawComponent (this.gg, this.av.startRes, this.av.endRes + 1);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "fastPaint",
+function (horizontal) {
+if (horizontal == 0 || this.av.getAlignment ().getAlignmentAnnotation () == null || this.av.getAlignment ().getAlignmentAnnotation ().length < 1) {
+this.repaint ();
+return;
+}this.gg.copyArea (0, 0, this.imgWidth, this.getSize ().height, -horizontal * this.av.getCharWidth (), 0);
+var sr = this.av.startRes;
+var er = this.av.endRes + 1;
+var transX = 0;
+if (horizontal > 0) {
+transX = (er - sr - horizontal) * this.av.getCharWidth ();
+sr = er - horizontal;
+} else if (horizontal < 0) {
+er = sr - horizontal;
+}this.gg.translate (transX, 0);
+this.drawComponent (this.gg, sr, er);
+this.gg.translate (-transX, 0);
+this.$fastPaint = true;
+this.repaint ();
+}, "~N");
+Clazz.defineMethod (c$, "drawComponent",
+function (g, startRes, endRes) {
+var ofont = this.av.getFont ();
+g.setFont (ofont);
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, (endRes - startRes) * this.av.getCharWidth (), this.getSize ().height);
+if (this.fm == null) {
+this.fm = g.getFontMetrics ();
+}if ((this.av.getAlignment ().getAlignmentAnnotation () == null) || (this.av.getAlignment ().getAlignmentAnnotation ().length < 1)) {
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.setColor (java.awt.Color.black);
+if (this.av.validCharWidth) {
+g.drawString (jalview.util.MessageManager.getString ("label.alignment_has_no_annotations"), 20, 15);
+}return;
+}g.translate (0, -this.scrollOffset);
+this.renderer.drawComponent (this, this.av, g, this.activeRow, startRes, endRes);
+g.translate (0, +this.scrollOffset);
+}, "java.awt.Graphics,~N,~N");
+Clazz.defineMethod (c$, "setScrollOffset",
+function (value, repaint) {
+this.scrollOffset = value;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz.defineMethod (c$, "getFontMetrics",
+function () {
+return this.fm;
+});
+Clazz.overrideMethod (c$, "getFadedImage",
+function () {
+return this.image;
+});
+Clazz.overrideMethod (c$, "getFadedImageWidth",
+function () {
+return this.imgWidth;
+});
+Clazz.overrideMethod (c$, "getVisibleVRange",
+function () {
+if (this.ap != null && this.ap.alabels != null) {
+var sOffset = -this.ap.alabels.scrollOffset;
+var visHeight = sOffset + this.ap.annotationPanelHolder.getHeight ();
+this.$bounds[0] = sOffset;
+this.$bounds[1] = visHeight;
+return this.$bounds;
+} else {
+return null;
+}});
+Clazz.defineStatics (c$,
+"GRAPH_HEIGHT", 40);
+});
diff --git a/bin/jalview/appletgui/AnnotationRowFilter.js b/bin/jalview/appletgui/AnnotationRowFilter.js
index 8b9fe70..aafbcad 100644
--- a/bin/jalview/appletgui/AnnotationRowFilter.js
+++ b/bin/jalview/appletgui/AnnotationRowFilter.js
@@ -1,131 +1,131 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "$.Button", "$.Checkbox", "$.Scrollbar", "$.TextField"], "jalview.appletgui.AnnotationRowFilter", ["jalview.util.MessageManager", "java.lang.Float", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.av = null;
-this.ap = null;
-this.annmap = null;
-this.enableSeqAss = false;
-this.currentAnnotation = null;
-this.adjusting = false;
-this.currentColours = null;
-this.minColour = null;
-this.maxColour = null;
-this.seqAssociated = null;
-this.thresholdIsMin = null;
-this.slider = null;
-this.thresholdValue = null;
-this.frame = null;
-this.ok = null;
-this.cancel = null;
-this.sliderDragging = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AnnotationRowFilter", awt2swing.Panel);
-Clazz.prepareFields (c$, function () {
-this.currentColours = new awt2swing.Checkbox ();
-this.minColour = new awt2swing.Panel ();
-this.maxColour = new awt2swing.Panel ();
-this.seqAssociated = new awt2swing.Checkbox ();
-this.thresholdIsMin = new awt2swing.Checkbox ();
-this.slider = new awt2swing.Scrollbar (0);
-this.thresholdValue = new awt2swing.TextField (20);
-this.ok = new awt2swing.Button ();
-this.cancel = new awt2swing.Button ();
-});
-Clazz.makeConstructor (c$,
-function (av, ap) {
-Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
-this.av = av;
-this.ap = ap;
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
-});
-Clazz.defineMethod (c$, "getAnnotationItems",
-function (isSeqAssociated) {
-var list = new java.util.Vector ();
-var index = 1;
-var anmap = Clazz.newIntArray (this.av.getAlignment ().getAlignmentAnnotation ().length, 0);
-for (var i = 0; i < this.av.getAlignment ().getAlignmentAnnotation ().length; i++) {
-if (this.av.getAlignment ().getAlignmentAnnotation ()[i].sequenceRef == null) {
-if (isSeqAssociated) {
-continue;
-}} else {
-this.enableSeqAss = true;
-}var label = this.av.getAlignment ().getAlignmentAnnotation ()[i].label;
-if (!list.contains (label)) {
-anmap[list.size ()] = i;
-list.add (label);
-} else {
-if (!isSeqAssociated) {
-anmap[list.size ()] = i;
-list.add (label + "_" + (index++));
-}}}
-this.annmap = Clazz.newIntArray (list.size (), 0);
-System.arraycopy (anmap, 0, this.annmap, 0, this.annmap.length);
-return list;
-}, "~B");
-Clazz.defineMethod (c$, "getSelectedThresholdItem",
-function (indexValue) {
-var selectedThresholdItem = -1;
-if (indexValue == 1) {
-selectedThresholdItem = 1;
-} else if (indexValue == 2) {
-selectedThresholdItem = 0;
-}return selectedThresholdItem;
-}, "~N");
-Clazz.defineMethod (c$, "modelChanged",
-function () {
-this.seqAssociated.setEnabled (this.enableSeqAss);
-});
-Clazz.defineMethod (c$, "ok_actionPerformed",
-function (e) {
-this.updateView ();
-this.frame.setVisible (false);
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "cancel_actionPerformed",
-function (e) {
-this.reset ();
-this.ap.paintAlignment (true);
-this.frame.setVisible (false);
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "thresholdCheck_actionPerformed",
-function (e) {
-this.updateView ();
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "annotations_actionPerformed",
-function (e) {
-this.updateView ();
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "threshold_actionPerformed",
-function (e) {
-this.updateView ();
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "thresholdValue_actionPerformed",
-function (e) {
-try {
-var f = Float.parseFloat (this.thresholdValue.getText ());
-this.slider.setValue (Clazz.floatToInt (f * 1000));
-this.updateView ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "populateThresholdComboBox",
-function (threshold) {
-threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
-threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
-threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
-}, "awt2swing.Choice");
-Clazz.defineMethod (c$, "getCurrentAnnotation",
-function () {
-return this.currentAnnotation;
-});
-Clazz.defineMethod (c$, "setCurrentAnnotation",
-function (currentAnnotation) {
-this.currentAnnotation = currentAnnotation;
-}, "jalview.datamodel.AlignmentAnnotation");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "$.Button", "$.Checkbox", "$.Scrollbar", "$.TextField"], "jalview.appletgui.AnnotationRowFilter", ["jalview.util.MessageManager", "java.lang.Float", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.annmap = null;
+this.enableSeqAss = false;
+this.currentAnnotation = null;
+this.adjusting = false;
+this.currentColours = null;
+this.minColour = null;
+this.maxColour = null;
+this.seqAssociated = null;
+this.thresholdIsMin = null;
+this.slider = null;
+this.thresholdValue = null;
+this.frame = null;
+this.ok = null;
+this.cancel = null;
+this.sliderDragging = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationRowFilter", awt2swing.Panel);
+Clazz.prepareFields (c$, function () {
+this.currentColours = new awt2swing.Checkbox ();
+this.minColour = new awt2swing.Panel ();
+this.maxColour = new awt2swing.Panel ();
+this.seqAssociated = new awt2swing.Checkbox ();
+this.thresholdIsMin = new awt2swing.Checkbox ();
+this.slider = new awt2swing.Scrollbar (0);
+this.thresholdValue = new awt2swing.TextField (20);
+this.ok = new awt2swing.Button ();
+this.cancel = new awt2swing.Button ();
+});
+Clazz.makeConstructor (c$,
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
+this.av = av;
+this.ap = ap;
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
+});
+Clazz.defineMethod (c$, "getAnnotationItems",
+function (isSeqAssociated) {
+var list = new java.util.Vector ();
+var index = 1;
+var anmap = Clazz.newIntArray (this.av.getAlignment ().getAlignmentAnnotation ().length, 0);
+for (var i = 0; i < this.av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+if (this.av.getAlignment ().getAlignmentAnnotation ()[i].sequenceRef == null) {
+if (isSeqAssociated) {
+continue;
+}} else {
+this.enableSeqAss = true;
+}var label = this.av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+anmap[list.size ()] = i;
+list.add (label);
+} else {
+if (!isSeqAssociated) {
+anmap[list.size ()] = i;
+list.add (label + "_" + (index++));
+}}}
+this.annmap = Clazz.newIntArray (list.size (), 0);
+System.arraycopy (anmap, 0, this.annmap, 0, this.annmap.length);
+return list;
+}, "~B");
+Clazz.defineMethod (c$, "getSelectedThresholdItem",
+function (indexValue) {
+var selectedThresholdItem = -1;
+if (indexValue == 1) {
+selectedThresholdItem = 1;
+} else if (indexValue == 2) {
+selectedThresholdItem = 0;
+}return selectedThresholdItem;
+}, "~N");
+Clazz.defineMethod (c$, "modelChanged",
+function () {
+this.seqAssociated.setEnabled (this.enableSeqAss);
+});
+Clazz.defineMethod (c$, "ok_actionPerformed",
+function (e) {
+this.updateView ();
+this.frame.setVisible (false);
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "cancel_actionPerformed",
+function (e) {
+this.reset ();
+this.ap.paintAlignment (true);
+this.frame.setVisible (false);
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "thresholdCheck_actionPerformed",
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "annotations_actionPerformed",
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "threshold_actionPerformed",
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "thresholdValue_actionPerformed",
+function (e) {
+try {
+var f = Float.parseFloat (this.thresholdValue.getText ());
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.updateView ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "populateThresholdComboBox",
+function (threshold) {
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+}, "awt2swing.Choice");
+Clazz.defineMethod (c$, "getCurrentAnnotation",
+function () {
+return this.currentAnnotation;
+});
+Clazz.defineMethod (c$, "setCurrentAnnotation",
+function (currentAnnotation) {
+this.currentAnnotation = currentAnnotation;
+}, "jalview.datamodel.AlignmentAnnotation");
+});
diff --git a/bin/jalview/appletgui/AppletJmol.js b/bin/jalview/appletgui/AppletJmol.js
index d2a97b8..b8f808a 100644
--- a/bin/jalview/appletgui/AppletJmol.js
+++ b/bin/jalview/appletgui/AppletJmol.js
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.Dimension", "java.util.ArrayList"], "jalview.appletgui.AppletJmol", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.scriptWindow = null;
-this.inputLine = null;
-this.history = null;
-this.renderPanel = null;
-this.ap = null;
-this._aps = null;
-this.fileLoadingError = null;
-this.loadedInline = false;
-this.fr = null;
-this.jmb = null;
-if (!Clazz.isClassDefined ("jalview.appletgui.AppletJmol.RenderPanel")) {
-jalview.appletgui.AppletJmol.$AppletJmol$RenderPanel$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "AppletJmol");
-Clazz.prepareFields (c$, function () {
-this._aps = new java.util.ArrayList ();
-});
-Clazz.makeConstructor (c$,
-function (entry, sequenceIs, object, ap2, uRL) {
-}, "jalview.datamodel.PDBEntry,~A,~O,jalview.appletgui.AlignmentPanel,~S");
-Clazz.defineMethod (c$, "setJalviewColourScheme",
-function (ucs) {
-}, "jalview.schemes.UserColourScheme");
-c$.$AppletJmol$RenderPanel$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.currentSize = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui.AppletJmol, "RenderPanel", awt2swing.Panel);
-Clazz.prepareFields (c$, function () {
-this.currentSize = new java.awt.Dimension ();
-});
-Clazz.overrideMethod (c$, "update",
-function (a) {
-this.paint (a);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "PaintComponent",
-function (a) {
-this.currentSize = this.getSize ();
-}, "java.awt.Graphics");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.Dimension", "java.util.ArrayList"], "jalview.appletgui.AppletJmol", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.scriptWindow = null;
+this.inputLine = null;
+this.history = null;
+this.renderPanel = null;
+this.ap = null;
+this._aps = null;
+this.fileLoadingError = null;
+this.loadedInline = false;
+this.fr = null;
+this.jmb = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.AppletJmol.RenderPanel")) {
+jalview.appletgui.AppletJmol.$AppletJmol$RenderPanel$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AppletJmol");
+Clazz.prepareFields (c$, function () {
+this._aps = new java.util.ArrayList ();
+});
+Clazz.makeConstructor (c$,
+function (entry, sequenceIs, object, ap2, uRL) {
+}, "jalview.datamodel.PDBEntry,~A,~O,jalview.appletgui.AlignmentPanel,~S");
+Clazz.defineMethod (c$, "setJalviewColourScheme",
+function (ucs) {
+}, "jalview.schemes.UserColourScheme");
+c$.$AppletJmol$RenderPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.currentSize = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.AppletJmol, "RenderPanel", awt2swing.Panel);
+Clazz.prepareFields (c$, function () {
+this.currentSize = new java.awt.Dimension ();
+});
+Clazz.overrideMethod (c$, "update",
+function (a) {
+this.paint (a);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "PaintComponent",
+function (a) {
+this.currentSize = this.getSize ();
+}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/AppletJmolBinding.js b/bin/jalview/appletgui/AppletJmolBinding.js
index cdb8890..7f93e13 100644
--- a/bin/jalview/appletgui/AppletJmolBinding.js
+++ b/bin/jalview/appletgui/AppletJmolBinding.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.appletgui");
-c$ = Clazz.declareType (jalview.appletgui, "AppletJmolBinding");
+Clazz.declarePackage ("jalview.appletgui");
+c$ = Clazz.declareType (jalview.appletgui, "AppletJmolBinding");
diff --git a/bin/jalview/appletgui/CutAndPasteTransfer.class b/bin/jalview/appletgui/CutAndPasteTransfer.class
index 31c248dc77589aa25460b1b1c9d1e1fbc091a048..9292d368f64112dcecaa6904cb8f6a5fcc73e40e 100644
GIT binary patch
delta 30
mcmeB8?M~g$tHT((xlc!!iP@8ZWAYL`TP9AI%}@1KFarRga#tHT(-xlc!!iP@WhYw{93TNXAZMyJh>^;R$g0I;SB<^TWy
diff --git a/bin/jalview/appletgui/CutAndPasteTransfer.js b/bin/jalview/appletgui/CutAndPasteTransfer.js
index c1e339a..4030094 100644
--- a/bin/jalview/appletgui/CutAndPasteTransfer.js
+++ b/bin/jalview/appletgui/CutAndPasteTransfer.js
@@ -1,264 +1,264 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "awt2swing.Button", "$.TextArea", "java.awt.BorderLayout"], "jalview.appletgui.CutAndPasteTransfer", ["awt2swing.Frame", "$.Label", "jalview.analysis.AlignmentUtils", "jalview.api.ComplexAlignFile", "jalview.appletgui.AlignFrame", "$.AppletJmol", "$.JVDialog", "$.SplitFrame", "jalview.datamodel.PDBEntry", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.IdentifyFile", "$.NewickFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.TCoffeeColourScheme", "jalview.util.MessageManager", "java.awt.Font"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.pdbImport = false;
-this.treeImport = false;
-this.annotationImport = false;
-this.seq = null;
-this.alignFrame = null;
-this.source = null;
-this.textarea = null;
-this.accept = null;
-this.addSequences = null;
-this.$cancel = null;
-this.buttonPanel = null;
-this.borderLayout1 = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "CutAndPasteTransfer", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener]);
-Clazz.prepareFields (c$, function () {
-this.textarea = new awt2swing.TextArea ();
-this.accept = new awt2swing.Button ("New Window");
-this.addSequences = new awt2swing.Button ("Add to Current Alignment");
-this.$cancel = new awt2swing.Button ("Close");
-this.buttonPanel = new awt2swing.Panel ();
-this.borderLayout1 = new java.awt.BorderLayout ();
-});
-Clazz.makeConstructor (c$,
-function (forImport, alignFrame) {
-Clazz.superConstructor (this, jalview.appletgui.CutAndPasteTransfer, []);
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.alignFrame = alignFrame;
-if (!forImport) {
-this.buttonPanel.setVisible (false);
-}}, "~B,jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "getText",
-function () {
-return this.textarea.getText ();
-});
-Clazz.defineMethod (c$, "setText",
-function (text) {
-this.textarea.setText (text);
-}, "~S");
-Clazz.defineMethod (c$, "setPDBImport",
-function (seq) {
-this.seq = seq;
-this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
-this.addSequences.setVisible (false);
-this.pdbImport = true;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "setTreeImport",
-function () {
-this.treeImport = true;
-this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
-this.addSequences.setVisible (false);
-});
-Clazz.defineMethod (c$, "setAnnotationImport",
-function () {
-this.annotationImport = true;
-this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
-this.addSequences.setVisible (false);
-});
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.accept) {
-this.ok (true);
-} else if (evt.getSource () === this.addSequences) {
-this.ok (false);
-} else if (evt.getSource () === this.$cancel) {
-this.cancel ();
-}}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "ok",
-function (newWindow) {
-var text = this.getText ();
-var length = text.length;
-this.textarea.append ("\n");
-if (this.textarea.getText ().length == length) {
-var warning = "\n\n#################################################\nWARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n\nCAN\'T INPUT FULL ALIGNMENT\n\nYOU MUST DELETE THIS WARNING TO CONTINUE\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE\n#################################################\n";
-this.textarea.setText (text.substring (0, text.length - warning.length) + warning);
-this.textarea.setCaretPosition (text.length);
-}if (this.pdbImport) {
-this.openPdbViewer (text);
-} else if (this.treeImport) {
-if (!this.loadTree ()) {
-return;
-}} else if (this.annotationImport) {
-this.loadAnnotations ();
-} else if (this.alignFrame != null) {
-this.loadAlignment (text, newWindow, this.alignFrame.getAlignViewport ());
-}if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {
-(this.getParent ()).setVisible (false);
-} else {
-(this.getParent ()).setVisible (false);
-}}, "~B");
-Clazz.defineMethod (c$, "loadTree",
-function () {
-try {
-var fin = new jalview.io.NewickFile (this.textarea.getText (), "Paste");
-fin.parse ();
-if (fin.getTree () != null) {
-this.alignFrame.loadTree (fin, "Pasted tree file");
-return true;
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-this.textarea.setText (jalview.util.MessageManager.formatMessage ("label.could_not_parse_newick_file", Clazz.newArray (-1, [ex.getMessage ()])));
-return false;
-} else {
-throw ex;
-}
-}
-return false;
-});
-Clazz.defineMethod (c$, "loadAlignment",
-function (text, newWindow, viewport) {
-var al = null;
-var format = new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
-var afa = new jalview.io.AppletFormatAdapter (this.alignFrame.alignPanel);
-try {
-al = afa.readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
-this.source = afa.getAlignFile ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, java.io.IOException)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-if (al != null) {
-al.setDataset (null);
-var allowSplitFrame = this.alignFrame.viewport.applet.getDefaultParameter ("enableSplitFrame", false);
-if (allowSplitFrame && this.openSplitFrame (al, format)) {
-return;
-}if (newWindow) {
-var af;
-if (Clazz.instanceOf (this.source, jalview.api.ComplexAlignFile)) {
-var colSel = (this.source).getColumnSelection ();
-var hiddenSeqs = (this.source).getHiddenSequences ();
-var showSeqFeatures = (this.source).isShowSeqFeatures ();
-var cs = (this.source).getColourScheme ();
-af = new jalview.appletgui.AlignFrame (al, hiddenSeqs, colSel, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
-af.getAlignViewport ().setShowSequenceFeatures (showSeqFeatures);
-af.changeColour (cs);
-} else {
-af = new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
-}af.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
-} else {
-this.alignFrame.addSequences (al.getSequencesArray ());
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_alignment_file"));
-}}}, "~S,~B,jalview.appletgui.AlignViewport");
-Clazz.defineMethod (c$, "openSplitFrame",
-function (al, format) {
-var thisAlignment = this.alignFrame.getAlignViewport ().getAlignment ();
-if (thisAlignment.isNucleotide () == al.isNucleotide ()) {
-return false;
-}var protein = thisAlignment.isNucleotide () ? al : thisAlignment;
-var dna = thisAlignment.isNucleotide () ? thisAlignment : al;
-var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein, dna);
-if (!mapped) {
-return false;
-}var title = jalview.util.MessageManager.getString ("label.open_split_window");
-var dialog = new jalview.appletgui.JVDialog (this.getParent (), title, true, 100, 400);
-dialog.ok.setLabel (jalview.util.MessageManager.getString ("action.yes"));
-dialog.cancel.setLabel (jalview.util.MessageManager.getString ("action.no"));
-var question = new awt2swing.Panel ( new java.awt.BorderLayout ());
-var text = jalview.util.MessageManager.getString ("label.open_split_window?");
-question.add ( new awt2swing.Label (text, 0), "Center");
-dialog.setMainPanel (question);
-dialog.setVisible (true);
-dialog.toFront ();
-if (!dialog.accept) {
-return false;
-}var applet = this.alignFrame.viewport.applet;
-var copyFrame = new jalview.appletgui.AlignFrame (this.alignFrame.viewport.getAlignment (), applet, this.alignFrame.getTitle (), false, false);
-var newFrame = new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false, false);
-var dnaFrame = al.isNucleotide () ? newFrame : copyFrame;
-var proteinFrame = al.isNucleotide () ? copyFrame : newFrame;
-var sf = new jalview.appletgui.SplitFrame (dnaFrame, proteinFrame);
-sf.addToDisplay (false, applet);
-return true;
-}, "jalview.datamodel.AlignmentI,~S");
-Clazz.defineMethod (c$, "loadAnnotations",
-function () {
-var tcf = null;
-try {
-tcf = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE]);
-if (tcf.isValid ()) {
-if (tcf.annotateAlignment (this.alignFrame.viewport.getAlignment (), true)) {
-this.alignFrame.tcoffeeColour.setEnabled (true);
-this.alignFrame.alignPanel.fontChanged ();
-this.alignFrame.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignFrame.viewport.getAlignment ()));
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_tcoffee_scores_to_alignment"));
-} else {
-this.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.failed_add_tcoffee_scores", Clazz.newArray (-1, [(tcf.getWarningMessage () != null ? tcf.getWarningMessage () : "")])));
-}} else {
-tcf = null;
-}} catch (x) {
-if (Clazz.exceptionOf (x, Exception)) {
-tcf = null;
-} else {
-throw x;
-}
-}
-if (tcf == null) {
-if ( new jalview.io.AnnotationFile ().annotateAlignmentView (this.alignFrame.viewport, this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
-this.alignFrame.alignPanel.fontChanged ();
-this.alignFrame.alignPanel.setScrollValues (0, 0);
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
-} else {
-if (!this.alignFrame.parseFeaturesFile (this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file"));
-}}}});
-Clazz.defineMethod (c$, "openPdbViewer",
-function (text) {
-var pdb = new jalview.datamodel.PDBEntry ();
-pdb.setFile (text);
- new jalview.appletgui.AppletJmol (pdb, Clazz.newArray (-1, [this.seq]), null, this.alignFrame.alignPanel, jalview.io.AppletFormatAdapter.PASTE);
-}, "~S");
-Clazz.defineMethod (c$, "cancel",
-function () {
-this.textarea.setText ("");
-if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {
-(this.getParent ()).setVisible (false);
-} else {
-(this.getParent ()).setVisible (false);
-}});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 10));
-this.textarea.setText (jalview.util.MessageManager.getString ("label.paste_your_alignment_file"));
-this.textarea.addMouseListener (this);
-this.setLayout (this.borderLayout1);
-this.accept.addActionListener (this);
-this.addSequences.addActionListener (this);
-this.$cancel.addActionListener (this);
-this.add (this.buttonPanel, "South");
-this.buttonPanel.add (this.accept, null);
-this.buttonPanel.add (this.addSequences);
-this.buttonPanel.add (this.$cancel, null);
-this.add (this.textarea, "Center");
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-if (this.textarea.getText ().startsWith (jalview.util.MessageManager.getString ("label.paste_your"))) {
-this.textarea.setText ("");
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "awt2swing.Button", "$.TextArea", "java.awt.BorderLayout"], "jalview.appletgui.CutAndPasteTransfer", ["awt2swing.Frame", "$.Label", "jalview.analysis.AlignmentUtils", "jalview.api.ComplexAlignFile", "jalview.appletgui.AlignFrame", "$.AppletJmol", "$.JVDialog", "$.SplitFrame", "jalview.datamodel.PDBEntry", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.IdentifyFile", "$.NewickFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.TCoffeeColourScheme", "jalview.util.MessageManager", "java.awt.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.pdbImport = false;
+this.treeImport = false;
+this.annotationImport = false;
+this.seq = null;
+this.alignFrame = null;
+this.source = null;
+this.textarea = null;
+this.accept = null;
+this.addSequences = null;
+this.$cancel = null;
+this.buttonPanel = null;
+this.borderLayout1 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "CutAndPasteTransfer", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.textarea = new awt2swing.TextArea ();
+this.accept = new awt2swing.Button ("New Window");
+this.addSequences = new awt2swing.Button ("Add to Current Alignment");
+this.$cancel = new awt2swing.Button ("Close");
+this.buttonPanel = new awt2swing.Panel ();
+this.borderLayout1 = new java.awt.BorderLayout ();
+});
+Clazz.makeConstructor (c$,
+function (forImport, alignFrame) {
+Clazz.superConstructor (this, jalview.appletgui.CutAndPasteTransfer, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.alignFrame = alignFrame;
+if (!forImport) {
+this.buttonPanel.setVisible (false);
+}}, "~B,jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "getText",
+function () {
+return this.textarea.getText ();
+});
+Clazz.defineMethod (c$, "setText",
+function (text) {
+this.textarea.setText (text);
+}, "~S");
+Clazz.defineMethod (c$, "setPDBImport",
+function (seq) {
+this.seq = seq;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+this.pdbImport = true;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "setTreeImport",
+function () {
+this.treeImport = true;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+});
+Clazz.defineMethod (c$, "setAnnotationImport",
+function () {
+this.annotationImport = true;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+});
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.accept) {
+this.ok (true);
+} else if (evt.getSource () === this.addSequences) {
+this.ok (false);
+} else if (evt.getSource () === this.$cancel) {
+this.cancel ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "ok",
+function (newWindow) {
+var text = this.getText ();
+var length = text.length;
+this.textarea.append ("\n");
+if (this.textarea.getText ().length == length) {
+var warning = "\n\n#################################################\nWARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n\nCAN\'T INPUT FULL ALIGNMENT\n\nYOU MUST DELETE THIS WARNING TO CONTINUE\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE\n#################################################\n";
+this.textarea.setText (text.substring (0, text.length - warning.length) + warning);
+this.textarea.setCaretPosition (text.length);
+}if (this.pdbImport) {
+this.openPdbViewer (text);
+} else if (this.treeImport) {
+if (!this.loadTree ()) {
+return;
+}} else if (this.annotationImport) {
+this.loadAnnotations ();
+} else if (this.alignFrame != null) {
+this.loadAlignment (text, newWindow, this.alignFrame.getAlignViewport ());
+}if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {
+(this.getParent ()).setVisible (false);
+} else {
+(this.getParent ()).setVisible (false);
+}}, "~B");
+Clazz.defineMethod (c$, "loadTree",
+function () {
+try {
+var fin = new jalview.io.NewickFile (this.textarea.getText (), "Paste");
+fin.parse ();
+if (fin.getTree () != null) {
+this.alignFrame.loadTree (fin, "Pasted tree file");
+return true;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.textarea.setText (jalview.util.MessageManager.formatMessage ("label.could_not_parse_newick_file", Clazz.newArray (-1, [ex.getMessage ()])));
+return false;
+} else {
+throw ex;
+}
+}
+return false;
+});
+Clazz.defineMethod (c$, "loadAlignment",
+function (text, newWindow, viewport) {
+var al = null;
+var format = new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
+var afa = new jalview.io.AppletFormatAdapter (this.alignFrame.alignPanel);
+try {
+al = afa.readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
+this.source = afa.getAlignFile ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (al != null) {
+al.setDataset (null);
+var allowSplitFrame = this.alignFrame.viewport.applet.getDefaultParameter ("enableSplitFrame", false);
+if (allowSplitFrame && this.openSplitFrame (al, format)) {
+return;
+}if (newWindow) {
+var af;
+if (Clazz.instanceOf (this.source, jalview.api.ComplexAlignFile)) {
+var colSel = (this.source).getColumnSelection ();
+var hiddenSeqs = (this.source).getHiddenSequences ();
+var showSeqFeatures = (this.source).isShowSeqFeatures ();
+var cs = (this.source).getColourScheme ();
+af = new jalview.appletgui.AlignFrame (al, hiddenSeqs, colSel, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
+af.getAlignViewport ().setShowSequenceFeatures (showSeqFeatures);
+af.changeColour (cs);
+} else {
+af = new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
+}af.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
+} else {
+this.alignFrame.addSequences (al.getSequencesArray ());
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_alignment_file"));
+}}}, "~S,~B,jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "openSplitFrame",
+function (al, format) {
+var thisAlignment = this.alignFrame.getAlignViewport ().getAlignment ();
+if (thisAlignment.isNucleotide () == al.isNucleotide ()) {
+return false;
+}var protein = thisAlignment.isNucleotide () ? al : thisAlignment;
+var dna = thisAlignment.isNucleotide () ? thisAlignment : al;
+var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein, dna);
+if (!mapped) {
+return false;
+}var title = jalview.util.MessageManager.getString ("label.open_split_window");
+var dialog = new jalview.appletgui.JVDialog (this.getParent (), title, true, 100, 400);
+dialog.ok.setLabel (jalview.util.MessageManager.getString ("action.yes"));
+dialog.cancel.setLabel (jalview.util.MessageManager.getString ("action.no"));
+var question = new awt2swing.Panel ( new java.awt.BorderLayout ());
+var text = jalview.util.MessageManager.getString ("label.open_split_window?");
+question.add ( new awt2swing.Label (text, 0), "Center");
+dialog.setMainPanel (question);
+dialog.setVisible (true);
+dialog.toFront ();
+if (!dialog.accept) {
+return false;
+}var applet = this.alignFrame.viewport.applet;
+var copyFrame = new jalview.appletgui.AlignFrame (this.alignFrame.viewport.getAlignment (), applet, this.alignFrame.getTitle (), false, false);
+var newFrame = new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false, false);
+var dnaFrame = al.isNucleotide () ? newFrame : copyFrame;
+var proteinFrame = al.isNucleotide () ? copyFrame : newFrame;
+var sf = new jalview.appletgui.SplitFrame (dnaFrame, proteinFrame);
+sf.addToDisplay (false, applet);
+return true;
+}, "jalview.datamodel.AlignmentI,~S");
+Clazz.defineMethod (c$, "loadAnnotations",
+function () {
+var tcf = null;
+try {
+tcf = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE]);
+if (tcf.isValid ()) {
+if (tcf.annotateAlignment (this.alignFrame.viewport.getAlignment (), true)) {
+this.alignFrame.tcoffeeColour.setEnabled (true);
+this.alignFrame.alignPanel.fontChanged ();
+this.alignFrame.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignFrame.viewport.getAlignment ()));
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_tcoffee_scores_to_alignment"));
+} else {
+this.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.failed_add_tcoffee_scores", Clazz.newArray (-1, [(tcf.getWarningMessage () != null ? tcf.getWarningMessage () : "")])));
+}} else {
+tcf = null;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+tcf = null;
+} else {
+throw x;
+}
+}
+if (tcf == null) {
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (this.alignFrame.viewport, this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
+this.alignFrame.alignPanel.fontChanged ();
+this.alignFrame.alignPanel.setScrollValues (0, 0);
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
+} else {
+if (!this.alignFrame.parseFeaturesFile (this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file"));
+}}}});
+Clazz.defineMethod (c$, "openPdbViewer",
+function (text) {
+var pdb = new jalview.datamodel.PDBEntry ();
+pdb.setFile (text);
+ new jalview.appletgui.AppletJmol (pdb, Clazz.newArray (-1, [this.seq]), null, this.alignFrame.alignPanel, jalview.io.AppletFormatAdapter.PASTE);
+}, "~S");
+Clazz.defineMethod (c$, "cancel",
+function () {
+this.textarea.setText ("");
+if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {
+(this.getParent ()).setVisible (false);
+} else {
+(this.getParent ()).setVisible (false);
+}});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 10));
+this.textarea.setText (jalview.util.MessageManager.getString ("label.paste_your_alignment_file"));
+this.textarea.addMouseListener (this);
+this.setLayout (this.borderLayout1);
+this.accept.addActionListener (this);
+this.addSequences.addActionListener (this);
+this.$cancel.addActionListener (this);
+this.add (this.buttonPanel, "South");
+this.buttonPanel.add (this.accept, null);
+this.buttonPanel.add (this.addSequences);
+this.buttonPanel.add (this.$cancel, null);
+this.add (this.textarea, "Center");
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+if (this.textarea.getText ().startsWith (jalview.util.MessageManager.getString ("label.paste_your"))) {
+this.textarea.setText ("");
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
diff --git a/bin/jalview/appletgui/EditNameDialog.js b/bin/jalview/appletgui/EditNameDialog.js
index efedf02..68044ad 100644
--- a/bin/jalview/appletgui/EditNameDialog.js
+++ b/bin/jalview/appletgui/EditNameDialog.js
@@ -1,44 +1,44 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.appletgui.JVDialog"], "jalview.appletgui.EditNameDialog", ["awt2swing.Label", "$.Panel", "$.TextField", "java.awt.BorderLayout", "$.Font"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.id = null;
-this.description = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "EditNameDialog", jalview.appletgui.JVDialog);
-Clazz.overrideMethod (c$, "getName",
-function () {
-return this.id.getText ();
-});
-Clazz.defineMethod (c$, "getDescription",
-function () {
-if (this.description.getText ().length < 1) {
-return null;
-} else {
-return this.description.getText ();
-}});
-Clazz.makeConstructor (c$,
-function (name, desc, label1, label2, owner, title, width, height, display) {
-Clazz.superConstructor (this, jalview.appletgui.EditNameDialog, [owner, title, true, width, height]);
-var mono = new java.awt.Font ("Monospaced", 0, 12);
-var panel = new awt2swing.Panel ( new java.awt.BorderLayout ());
-var panel2 = new awt2swing.Panel ( new java.awt.BorderLayout ());
-this.id = new awt2swing.TextField (name, 40);
-this.id.setFont (mono);
-var label = new awt2swing.Label (label1);
-label.setFont (mono);
-panel2.add (label, "West");
-panel2.add (this.id, "Center");
-panel.add (panel2, "North");
-if (label2 != null) {
-panel2 = new awt2swing.Panel ( new java.awt.BorderLayout ());
-this.description = new awt2swing.TextField (desc, 40);
-this.description.setFont (mono);
-label = new awt2swing.Label (label2);
-label.setFont (mono);
-panel2.add (label, "West");
-panel2.add (this.description, "Center");
-panel.add (panel2, "Center");
-}this.setMainPanel (panel);
-this.setVisible (display);
-}, "~S,~S,~S,~S,awt2swing.Frame,~S,~N,~N,~B");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.JVDialog"], "jalview.appletgui.EditNameDialog", ["awt2swing.Label", "$.Panel", "$.TextField", "java.awt.BorderLayout", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = null;
+this.description = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "EditNameDialog", jalview.appletgui.JVDialog);
+Clazz.overrideMethod (c$, "getName",
+function () {
+return this.id.getText ();
+});
+Clazz.defineMethod (c$, "getDescription",
+function () {
+if (this.description.getText ().length < 1) {
+return null;
+} else {
+return this.description.getText ();
+}});
+Clazz.makeConstructor (c$,
+function (name, desc, label1, label2, owner, title, width, height, display) {
+Clazz.superConstructor (this, jalview.appletgui.EditNameDialog, [owner, title, true, width, height]);
+var mono = new java.awt.Font ("Monospaced", 0, 12);
+var panel = new awt2swing.Panel ( new java.awt.BorderLayout ());
+var panel2 = new awt2swing.Panel ( new java.awt.BorderLayout ());
+this.id = new awt2swing.TextField (name, 40);
+this.id.setFont (mono);
+var label = new awt2swing.Label (label1);
+label.setFont (mono);
+panel2.add (label, "West");
+panel2.add (this.id, "Center");
+panel.add (panel2, "North");
+if (label2 != null) {
+panel2 = new awt2swing.Panel ( new java.awt.BorderLayout ());
+this.description = new awt2swing.TextField (desc, 40);
+this.description.setFont (mono);
+label = new awt2swing.Label (label2);
+label.setFont (mono);
+panel2.add (label, "West");
+panel2.add (this.description, "Center");
+panel.add (panel2, "Center");
+}this.setMainPanel (panel);
+this.setVisible (display);
+}, "~S,~S,~S,~S,awt2swing.Frame,~S,~N,~N,~B");
+});
diff --git a/bin/jalview/appletgui/EmbmenuFrame.js b/bin/jalview/appletgui/EmbmenuFrame.js
index 13a7183..7a5362c 100644
--- a/bin/jalview/appletgui/EmbmenuFrame.js
+++ b/bin/jalview/appletgui/EmbmenuFrame.js
@@ -1,110 +1,110 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Frame", "java.awt.event.MouseListener", "java.awt.Font", "java.util.HashMap"], "jalview.appletgui.EmbmenuFrame", ["awt2swing.Label", "$.Panel", "$.PopupMenu", "jalview.util.Platform", "java.awt.Color", "$.FlowLayout"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.embeddedPopup = null;
-this.embeddedMenu = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "EmbmenuFrame", awt2swing.Frame, java.awt.event.MouseListener);
-Clazz.prepareFields (c$, function () {
-this.embeddedPopup = new java.util.HashMap ();
-});
-Clazz.defineMethod (c$, "embedMenuIfNeeded",
-function (tobeAdjusted) {
-var topMenuBar = this.getJMenuBar ();
-if (topMenuBar == null) {
-return false;
-}if (jalview.util.Platform.isAMac ()) {
-this.embeddedMenu = this.makeEmbeddedPopupMenu (topMenuBar, true, false);
-this.unsetMenuBar ();
-this.add (this.embeddedMenu, "North");
-tobeAdjusted.setSize (this.getSize ().width, this.getSize ().height - this.embeddedMenu.getHeight ());
-return true;
-}return false;
-}, "awt2swing.Panel");
-Clazz.defineMethod (c$, "makeEmbeddedPopupMenu",
-function (menuBar, overrideFonts, append) {
-if (!append) {
-this.embeddedPopup.clear ();
-if (this.embeddedMenu != null) {
-this.embeddedMenu.removeAll ();
-}}this.embeddedMenu = this.makeEmbeddedPopupMenu (menuBar, jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT, overrideFonts, new awt2swing.Panel (), this);
-return this.embeddedMenu;
-}, "awt2swing.MenuBar,~B,~B");
-Clazz.defineMethod (c$, "makeEmbeddedPopupMenu",
-function (menuBar, font, overrideFonts, embeddedMenu, clickHandler) {
-if (overrideFonts) {
-var mbf = menuBar.getFont ();
-if (mbf != null) {
-font = mbf;
-}}if (embeddedMenu == null) {
-embeddedMenu = new awt2swing.Panel ();
-}var flowLayout1 = new java.awt.FlowLayout ();
-embeddedMenu.setBackground (java.awt.Color.lightGray);
-embeddedMenu.setLayout (flowLayout1);
-for (var mbi = 0, nMbi = menuBar.getMenuCount (); mbi < nMbi; mbi++) {
-var mi = menuBar.getMenu (mbi);
-var elab = new awt2swing.Label (mi.getLabel ());
-elab.setFont (font);
-var popup = new awt2swing.PopupMenu ();
-var m;
-var mSize = mi.getItemCount ();
-for (m = 0; m < mSize; m++) {
-if (mi.getItem (m) == null) popup.addSeparator ();
- else popup.add (mi.getItem (m));
-mSize--;
-m--;
-}
-this.embeddedPopup.put (elab, popup);
-embeddedMenu.add (elab);
-elab.addMouseListener (clickHandler);
-}
-flowLayout1.setAlignment (0);
-flowLayout1.setHgap (2);
-flowLayout1.setVgap (0);
-return embeddedMenu;
-}, "awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-var popup = null;
-var source = evt.getSource ();
-popup = this.getPopupMenu (source);
-if (popup != null) {
-this.embeddedMenu.add (popup);
-popup.show (this.embeddedMenu, source.getBounds ().x, source.getBounds ().y + source.getBounds ().getSize ().height);
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "getPopupMenu",
-function (source) {
-return this.embeddedPopup.get (source);
-}, "awt2swing.Label");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "destroyMenus",
-function () {
-if (this.embeddedPopup != null) {
-for (var lb, $lb = this.embeddedPopup.keySet ().iterator (); $lb.hasNext () && ((lb = $lb.next ()) || true);) {
-lb.removeMouseListener (this);
-}
-this.embeddedPopup.clear ();
-}if (this.embeddedMenu != null) {
-this.embeddedMenu.removeAll ();
-}});
-Clazz.defineMethod (c$, "finalize",
-function () {
-this.destroyMenus ();
-this.embeddedPopup = null;
-this.embeddedMenu = null;
-Clazz.superCall (this, jalview.appletgui.EmbmenuFrame, "finalize", []);
-});
-c$.FONT_ARIAL_PLAIN_11 = c$.prototype.FONT_ARIAL_PLAIN_11 = new java.awt.Font ("Arial", 0, 11);
-c$.DEFAULT_MENU_FONT = c$.prototype.DEFAULT_MENU_FONT = jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11;
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Frame", "java.awt.event.MouseListener", "java.awt.Font", "java.util.HashMap"], "jalview.appletgui.EmbmenuFrame", ["awt2swing.Label", "$.Panel", "$.PopupMenu", "jalview.util.Platform", "java.awt.Color", "$.FlowLayout"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.embeddedPopup = null;
+this.embeddedMenu = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "EmbmenuFrame", awt2swing.Frame, java.awt.event.MouseListener);
+Clazz.prepareFields (c$, function () {
+this.embeddedPopup = new java.util.HashMap ();
+});
+Clazz.defineMethod (c$, "embedMenuIfNeeded",
+function (tobeAdjusted) {
+var topMenuBar = this.getJMenuBar ();
+if (topMenuBar == null) {
+return false;
+}if (jalview.util.Platform.isAMac ()) {
+this.embeddedMenu = this.makeEmbeddedPopupMenu (topMenuBar, true, false);
+this.unsetMenuBar ();
+this.add (this.embeddedMenu, "North");
+tobeAdjusted.setSize (this.getSize ().width, this.getSize ().height - this.embeddedMenu.getHeight ());
+return true;
+}return false;
+}, "awt2swing.Panel");
+Clazz.defineMethod (c$, "makeEmbeddedPopupMenu",
+function (menuBar, overrideFonts, append) {
+if (!append) {
+this.embeddedPopup.clear ();
+if (this.embeddedMenu != null) {
+this.embeddedMenu.removeAll ();
+}}this.embeddedMenu = this.makeEmbeddedPopupMenu (menuBar, jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT, overrideFonts, new awt2swing.Panel (), this);
+return this.embeddedMenu;
+}, "awt2swing.MenuBar,~B,~B");
+Clazz.defineMethod (c$, "makeEmbeddedPopupMenu",
+function (menuBar, font, overrideFonts, embeddedMenu, clickHandler) {
+if (overrideFonts) {
+var mbf = menuBar.getFont ();
+if (mbf != null) {
+font = mbf;
+}}if (embeddedMenu == null) {
+embeddedMenu = new awt2swing.Panel ();
+}var flowLayout1 = new java.awt.FlowLayout ();
+embeddedMenu.setBackground (java.awt.Color.lightGray);
+embeddedMenu.setLayout (flowLayout1);
+for (var mbi = 0, nMbi = menuBar.getMenuCount (); mbi < nMbi; mbi++) {
+var mi = menuBar.getMenu (mbi);
+var elab = new awt2swing.Label (mi.getLabel ());
+elab.setFont (font);
+var popup = new awt2swing.PopupMenu ();
+var m;
+var mSize = mi.getItemCount ();
+for (m = 0; m < mSize; m++) {
+if (mi.getItem (m) == null) popup.addSeparator ();
+ else popup.add (mi.getItem (m));
+mSize--;
+m--;
+}
+this.embeddedPopup.put (elab, popup);
+embeddedMenu.add (elab);
+elab.addMouseListener (clickHandler);
+}
+flowLayout1.setAlignment (0);
+flowLayout1.setHgap (2);
+flowLayout1.setVgap (0);
+return embeddedMenu;
+}, "awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+var popup = null;
+var source = evt.getSource ();
+popup = this.getPopupMenu (source);
+if (popup != null) {
+this.embeddedMenu.add (popup);
+popup.show (this.embeddedMenu, source.getBounds ().x, source.getBounds ().y + source.getBounds ().getSize ().height);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "getPopupMenu",
+function (source) {
+return this.embeddedPopup.get (source);
+}, "awt2swing.Label");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "destroyMenus",
+function () {
+if (this.embeddedPopup != null) {
+for (var lb, $lb = this.embeddedPopup.keySet ().iterator (); $lb.hasNext () && ((lb = $lb.next ()) || true);) {
+lb.removeMouseListener (this);
+}
+this.embeddedPopup.clear ();
+}if (this.embeddedMenu != null) {
+this.embeddedMenu.removeAll ();
+}});
+Clazz.defineMethod (c$, "finalize",
+function () {
+this.destroyMenus ();
+this.embeddedPopup = null;
+this.embeddedMenu = null;
+Clazz.superCall (this, jalview.appletgui.EmbmenuFrame, "finalize", []);
+});
+c$.FONT_ARIAL_PLAIN_11 = c$.prototype.FONT_ARIAL_PLAIN_11 = new java.awt.Font ("Arial", 0, 11);
+c$.DEFAULT_MENU_FONT = c$.prototype.DEFAULT_MENU_FONT = jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11;
+});
diff --git a/bin/jalview/appletgui/ExtJmol.js b/bin/jalview/appletgui/ExtJmol.js
index 170d005..150efd5 100644
--- a/bin/jalview/appletgui/ExtJmol.js
+++ b/bin/jalview/appletgui/ExtJmol.js
@@ -1,17 +1,17 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.structures.models.AAStructureBindingModel"], "jalview.appletgui.ExtJmol", null, function () {
-c$ = Clazz.declareType (jalview.appletgui, "ExtJmol", jalview.structures.models.AAStructureBindingModel);
-Clazz.overrideMethod (c$, "getPdbFile",
-function () {
-return null;
-});
-Clazz.overrideMethod (c$, "updateColours",
-function (source) {
-}, "~O");
-Clazz.overrideMethod (c$, "releaseReferences",
-function (svl) {
-}, "~O");
-Clazz.overrideMethod (c$, "highlightAtoms",
-function (atoms) {
-}, "java.util.List");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.structures.models.AAStructureBindingModel"], "jalview.appletgui.ExtJmol", null, function () {
+c$ = Clazz.declareType (jalview.appletgui, "ExtJmol", jalview.structures.models.AAStructureBindingModel);
+Clazz.overrideMethod (c$, "getPdbFile",
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "updateColours",
+function (source) {
+}, "~O");
+Clazz.overrideMethod (c$, "releaseReferences",
+function (svl) {
+}, "~O");
+Clazz.overrideMethod (c$, "highlightAtoms",
+function (atoms) {
+}, "java.util.List");
+});
diff --git a/bin/jalview/appletgui/FeatureColourChooser.class b/bin/jalview/appletgui/FeatureColourChooser.class
index 0c8e5546e0eb12c4dd5fd5489da9a2a904e9caf5..8aee64e3e234310caabbce9fce854fb0e5f85dfa 100644
GIT binary patch
delta 27
jcmewt^*3sRy9(p$$sQ^XIJg*Ci`W^LGjBFj_2mEno$3iM
delta 28
kcmewx^)G6Jy9(o*$sQ^XIJp_vir5*KGcav7Q1#^i0Hx^(F#rGn
diff --git a/bin/jalview/appletgui/FeatureColourChooser.js b/bin/jalview/appletgui/FeatureColourChooser.js
index cfa5380..929c04b 100644
--- a/bin/jalview/appletgui/FeatureColourChooser.js
+++ b/bin/jalview/appletgui/FeatureColourChooser.js
@@ -1,292 +1,292 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField"], "jalview.appletgui.FeatureColourChooser", ["awt2swing.Label", "jalview.appletgui.JVDialog", "$.PaintRefresher", "$.UserDefinedColours", "jalview.datamodel.GraphLine", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.FlowLayout", "$.Font", "$.GridLayout", "java.awt.event.ActionEvent", "java.lang.Float"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.frame = null;
-this.owner = null;
-this.fr = null;
-this.fs = null;
-this.cs = null;
-this.oldcs = null;
-this.oldgroupColours = null;
-this.adjusting = false;
-this.min = 0;
-this.max = 0;
-this.type = null;
-this.af = null;
-this.minColour = null;
-this.maxColour = null;
-this.jPanel1 = null;
-this.jPanel2 = null;
-this.threshold = null;
-this.jPanel3 = null;
-this.jPanel4 = null;
-this.slider = null;
-this.thresholdValue = null;
-this.thresholdIsMin = null;
-this.colourFromLabel = null;
-this.threshline = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "FeatureColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
-Clazz.prepareFields (c$, function () {
-this.minColour = new awt2swing.Panel ();
-this.maxColour = new awt2swing.Panel ();
-this.jPanel1 = new awt2swing.Panel ();
-this.jPanel2 = new awt2swing.Panel ();
-this.threshold = new awt2swing.Choice ();
-this.jPanel3 = new awt2swing.Panel ();
-this.jPanel4 = new awt2swing.Panel ();
-this.slider = new awt2swing.Scrollbar (0);
-this.thresholdValue = new awt2swing.TextField (20);
-this.thresholdIsMin = new awt2swing.Checkbox ();
-this.colourFromLabel = new awt2swing.Checkbox ();
-});
-Clazz.makeConstructor (c$,
-function (af, type) {
-Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
-this.af = af;
-this.init (af.getSeqcanvas ().getFeatureRenderer (), type);
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.makeConstructor (c$,
-function (fsettings, type) {
-Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
-this.fs = fsettings;
-this.init (fsettings.fr, type);
-}, "jalview.appletgui.FeatureSettings,~S");
-Clazz.defineMethod (c$, "init",
-($fz = function (frenderer, type) {
-this.type = type;
-this.fr = frenderer;
-var mm = (this.fr.getMinMax ().get (type))[0];
-this.min = mm[0];
-this.max = mm[1];
-this.oldcs = this.fr.getFeatureColours ().get (type);
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.GraduatedColor)) {
-this.cs = new jalview.schemes.GraduatedColor (this.oldcs, this.min, this.max);
-} else {
-var bl = java.awt.Color.black;
-if (Clazz.instanceOf (this.oldcs, java.awt.Color)) {
-bl = this.oldcs;
-}this.cs = new jalview.schemes.GraduatedColor (java.awt.Color.white, bl, mm[0], mm[1]);
-}this.minColour.setBackground (this.cs.getMinColor ());
-this.maxColour.setBackground (this.cs.getMaxColor ());
-this.minColour.setForeground (this.cs.getMinColor ());
-this.maxColour.setForeground (this.cs.getMaxColor ());
-this.colourFromLabel.setState (this.cs.isColourByLabel ());
-this.adjusting = true;
-try {
-this.jbInit ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-this.threshold.select (new Integer (this.cs.getThreshType () == -1 ? 0 : this.cs.getThreshType () == 1 ? 1 : 2));
-this.adjusting = false;
-this.changeColour ();
-this.colourFromLabel.addItemListener (this);
-this.slider.addAdjustmentListener (this);
-this.slider.addMouseListener (this);
-this.owner = (this.af != null) ? this.af : this.fs.frame;
-this.frame = new jalview.appletgui.JVDialog (this.owner, jalview.util.MessageManager.formatMessage ("label.graduated_color_for_params", Clazz.newArray (-1, [type])), true, 480, 248);
-this.frame.setMainPanel (this);
-this.validate ();
-this.frame.setVisible (true);
-if (this.frame.accept) {
-this.changeColour ();
-} else {
-this.reset ();
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
-this.frame.setVisible (false);
-}}, $fz.isPrivate = true, $fz), "jalview.appletgui.FeatureRenderer,~S");
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
-try {
-this.jbInit ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-var minLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.min"));
-var maxLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.max"));
-minLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
-maxLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.minColour.setBounds (0, 0, 40, 27);
-this.maxColour.setBounds (0, 0, 40, 27);
-this.minColour.addMouseListener (this);
-this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.maxColour.addMouseListener (this);
-this.thresholdIsMin.addItemListener (this);
-this.setLayout ( new java.awt.GridLayout (4, 1));
-this.jPanel1.setLayout ( new java.awt.FlowLayout ());
-this.jPanel2.setLayout ( new java.awt.FlowLayout ());
-this.jPanel3.setLayout ( new java.awt.GridLayout (1, 1));
-this.jPanel4.setLayout ( new java.awt.FlowLayout ());
-this.jPanel1.setBackground (java.awt.Color.white);
-this.jPanel2.setBackground (java.awt.Color.white);
-this.jPanel4.setBackground (java.awt.Color.white);
-this.threshold.addItemListener (this);
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
-this.thresholdValue.addActionListener (this);
-this.slider.setBackground (java.awt.Color.white);
-this.slider.setEnabled (false);
-this.slider.setSize ( new java.awt.Dimension (93, 21));
-this.thresholdValue.setEnabled (false);
-this.thresholdValue.setSize ( new java.awt.Dimension (79, 22));
-this.thresholdValue.setColumns (5);
-this.jPanel3.setBackground (java.awt.Color.white);
-this.colourFromLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.colourFromLabel.setLabel (jalview.util.MessageManager.getString ("label.colour_by_label"));
-this.colourFromLabel.setSize ( new java.awt.Dimension (139, 22));
-this.thresholdIsMin.setBackground (java.awt.Color.white);
-this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
-this.thresholdIsMin.setSize ( new java.awt.Dimension (135, 23));
-this.jPanel1.add (minLabel);
-this.jPanel1.add (this.minColour);
-this.jPanel1.add (maxLabel);
-this.jPanel1.add (this.maxColour);
-this.jPanel1.add (this.colourFromLabel);
-this.jPanel2.add (this.threshold);
-this.jPanel3.add (this.slider);
-this.jPanel4.add (this.thresholdValue);
-this.jPanel4.add (this.thresholdIsMin);
-this.add (this.jPanel1);
-this.add (this.jPanel2);
-this.add (this.jPanel3);
-this.add (this.jPanel4);
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.thresholdValue) {
-try {
-var f = new Float (this.thresholdValue.getText ()).floatValue ();
-this.slider.setValue (Clazz.floatToInt (f * 1000));
-this.adjustmentValueChanged (null);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-} else if (evt.getSource () === this.minColour) {
-this.minColour_actionPerformed (null);
-} else if (evt.getSource () === this.maxColour) {
-this.maxColour_actionPerformed (null);
-} else {
-this.changeColour ();
-}}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-this.maxColour.setEnabled (!this.colourFromLabel.getState ());
-this.minColour.setEnabled (!this.colourFromLabel.getState ());
-this.changeColour ();
-}, "java.awt.event.ItemEvent");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-if (!this.adjusting) {
-this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
-this.valueChanged ();
-}}, "java.awt.event.AdjustmentEvent");
-Clazz.defineMethod (c$, "valueChanged",
-function () {
-this.threshline.value = this.slider.getValue () / 1000;
-this.cs.setThresh (this.threshline.value);
-this.changeColour ();
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
-});
-Clazz.defineMethod (c$, "minColour_actionPerformed",
-function (newCol) {
-if (newCol == null) {
-var udc = new jalview.appletgui.UserDefinedColours (this, this.minColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_minimum_value"));
-} else {
-this.minColour.setBackground (newCol);
-this.minColour.setForeground (newCol);
-this.minColour.repaint ();
-this.changeColour ();
-}}, "java.awt.Color");
-Clazz.defineMethod (c$, "maxColour_actionPerformed",
-function (newCol) {
-if (newCol == null) {
-var udc = new jalview.appletgui.UserDefinedColours (this, this.maxColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_maximum_value"));
-} else {
-this.maxColour.setBackground (newCol);
-this.maxColour.setForeground (newCol);
-this.maxColour.repaint ();
-this.changeColour ();
-}}, "java.awt.Color");
-Clazz.defineMethod (c$, "changeColour",
-function () {
-if (this.adjusting) {
-return;
-}var aboveThreshold = -1;
-if (this.threshold.getSelectedIndex () == 1) {
-aboveThreshold = 1;
-} else if (this.threshold.getSelectedIndex () == 2) {
-aboveThreshold = 0;
-}this.slider.setEnabled (true);
-this.thresholdValue.setEnabled (true);
-var acg = new jalview.schemes.GraduatedColor (this.minColour.getBackground (), this.maxColour.getBackground (), this.min, this.max);
-acg.setColourByLabel (this.colourFromLabel.getState ());
-this.maxColour.setEnabled (!this.colourFromLabel.getState ());
-this.minColour.setEnabled (!this.colourFromLabel.getState ());
-if (aboveThreshold == -1) {
-this.slider.setEnabled (false);
-this.thresholdValue.setEnabled (false);
-this.thresholdValue.setText ("");
-} else if (aboveThreshold != -1 && this.threshline == null) {
-this.threshline = new jalview.datamodel.GraphLine ((this.max - this.min) / 2, "Threshold", java.awt.Color.black);
-}if (aboveThreshold != -1) {
-this.adjusting = true;
-acg.setThresh (this.threshline.value);
-var range = this.max * 1000 - this.min * 1000;
-this.slider.setMinimum (Clazz.floatToInt (this.min * 1000));
-this.slider.setMaximum (Clazz.floatToInt (this.max * 1000));
-this.slider.setValue (Clazz.floatToInt (this.threshline.value * 1000));
-this.thresholdValue.setText (this.threshline.value + "");
-this.slider.setEnabled (true);
-this.thresholdValue.setEnabled (true);
-this.adjusting = false;
-}acg.setThreshType (aboveThreshold);
-if (this.thresholdIsMin.getState () && aboveThreshold != -1) {
-if (aboveThreshold == 1) {
-acg = new jalview.schemes.GraduatedColor (acg, this.threshline.value, this.max);
-} else {
-acg = new jalview.schemes.GraduatedColor (acg, this.min, this.threshline.value);
-}}this.fr.setColour (this.type, acg);
-this.cs = acg;
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
-});
-Clazz.defineMethod (c$, "reset",
-function () {
-this.fr.setColour (this.type, this.oldcs);
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
-});
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-if (evt.getSource () === this.minColour || evt.getSource () === this.maxColour) {
-this.actionPerformed ( new java.awt.event.ActionEvent (evt.getSource (), 1, "Clicked"));
-} else {
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField"], "jalview.appletgui.FeatureColourChooser", ["awt2swing.Label", "jalview.appletgui.JVDialog", "$.PaintRefresher", "$.UserDefinedColours", "jalview.datamodel.GraphLine", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.FlowLayout", "$.Font", "$.GridLayout", "java.awt.event.ActionEvent", "java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.frame = null;
+this.owner = null;
+this.fr = null;
+this.fs = null;
+this.cs = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.adjusting = false;
+this.min = 0;
+this.max = 0;
+this.type = null;
+this.af = null;
+this.minColour = null;
+this.maxColour = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.threshold = null;
+this.jPanel3 = null;
+this.jPanel4 = null;
+this.slider = null;
+this.thresholdValue = null;
+this.thresholdIsMin = null;
+this.colourFromLabel = null;
+this.threshline = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FeatureColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.minColour = new awt2swing.Panel ();
+this.maxColour = new awt2swing.Panel ();
+this.jPanel1 = new awt2swing.Panel ();
+this.jPanel2 = new awt2swing.Panel ();
+this.threshold = new awt2swing.Choice ();
+this.jPanel3 = new awt2swing.Panel ();
+this.jPanel4 = new awt2swing.Panel ();
+this.slider = new awt2swing.Scrollbar (0);
+this.thresholdValue = new awt2swing.TextField (20);
+this.thresholdIsMin = new awt2swing.Checkbox ();
+this.colourFromLabel = new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$,
+function (af, type) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+this.af = af;
+this.init (af.getSeqcanvas ().getFeatureRenderer (), type);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.makeConstructor (c$,
+function (fsettings, type) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+this.fs = fsettings;
+this.init (fsettings.fr, type);
+}, "jalview.appletgui.FeatureSettings,~S");
+Clazz.defineMethod (c$, "init",
+($fz = function (frenderer, type) {
+this.type = type;
+this.fr = frenderer;
+var mm = (this.fr.getMinMax ().get (type))[0];
+this.min = mm[0];
+this.max = mm[1];
+this.oldcs = this.fr.getFeatureColours ().get (type);
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.GraduatedColor)) {
+this.cs = new jalview.schemes.GraduatedColor (this.oldcs, this.min, this.max);
+} else {
+var bl = java.awt.Color.black;
+if (Clazz.instanceOf (this.oldcs, java.awt.Color)) {
+bl = this.oldcs;
+}this.cs = new jalview.schemes.GraduatedColor (java.awt.Color.white, bl, mm[0], mm[1]);
+}this.minColour.setBackground (this.cs.getMinColor ());
+this.maxColour.setBackground (this.cs.getMaxColor ());
+this.minColour.setForeground (this.cs.getMinColor ());
+this.maxColour.setForeground (this.cs.getMaxColor ());
+this.colourFromLabel.setState (this.cs.isColourByLabel ());
+this.adjusting = true;
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.threshold.select (new Integer (this.cs.getThreshType () == -1 ? 0 : this.cs.getThreshType () == 1 ? 1 : 2));
+this.adjusting = false;
+this.changeColour ();
+this.colourFromLabel.addItemListener (this);
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+this.owner = (this.af != null) ? this.af : this.fs.frame;
+this.frame = new jalview.appletgui.JVDialog (this.owner, jalview.util.MessageManager.formatMessage ("label.graduated_color_for_params", Clazz.newArray (-1, [type])), true, 480, 248);
+this.frame.setMainPanel (this);
+this.validate ();
+this.frame.setVisible (true);
+if (this.frame.accept) {
+this.changeColour ();
+} else {
+this.reset ();
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+this.frame.setVisible (false);
+}}, $fz.isPrivate = true, $fz), "jalview.appletgui.FeatureRenderer,~S");
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+var minLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.min"));
+var maxLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.max"));
+minLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+maxLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.minColour.setBounds (0, 0, 40, 27);
+this.maxColour.setBounds (0, 0, 40, 27);
+this.minColour.addMouseListener (this);
+this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.maxColour.addMouseListener (this);
+this.thresholdIsMin.addItemListener (this);
+this.setLayout ( new java.awt.GridLayout (4, 1));
+this.jPanel1.setLayout ( new java.awt.FlowLayout ());
+this.jPanel2.setLayout ( new java.awt.FlowLayout ());
+this.jPanel3.setLayout ( new java.awt.GridLayout (1, 1));
+this.jPanel4.setLayout ( new java.awt.FlowLayout ());
+this.jPanel1.setBackground (java.awt.Color.white);
+this.jPanel2.setBackground (java.awt.Color.white);
+this.jPanel4.setBackground (java.awt.Color.white);
+this.threshold.addItemListener (this);
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+this.thresholdValue.addActionListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setEnabled (false);
+this.slider.setSize ( new java.awt.Dimension (93, 21));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setSize ( new java.awt.Dimension (79, 22));
+this.thresholdValue.setColumns (5);
+this.jPanel3.setBackground (java.awt.Color.white);
+this.colourFromLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.colourFromLabel.setLabel (jalview.util.MessageManager.getString ("label.colour_by_label"));
+this.colourFromLabel.setSize ( new java.awt.Dimension (139, 22));
+this.thresholdIsMin.setBackground (java.awt.Color.white);
+this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
+this.thresholdIsMin.setSize ( new java.awt.Dimension (135, 23));
+this.jPanel1.add (minLabel);
+this.jPanel1.add (this.minColour);
+this.jPanel1.add (maxLabel);
+this.jPanel1.add (this.maxColour);
+this.jPanel1.add (this.colourFromLabel);
+this.jPanel2.add (this.threshold);
+this.jPanel3.add (this.slider);
+this.jPanel4.add (this.thresholdValue);
+this.jPanel4.add (this.thresholdIsMin);
+this.add (this.jPanel1);
+this.add (this.jPanel2);
+this.add (this.jPanel3);
+this.add (this.jPanel4);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f = new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.minColour) {
+this.minColour_actionPerformed (null);
+} else if (evt.getSource () === this.maxColour) {
+this.maxColour_actionPerformed (null);
+} else {
+this.changeColour ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+this.maxColour.setEnabled (!this.colourFromLabel.getState ());
+this.minColour.setEnabled (!this.colourFromLabel.getState ());
+this.changeColour ();
+}, "java.awt.event.ItemEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+this.valueChanged ();
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "valueChanged",
+function () {
+this.threshline.value = this.slider.getValue () / 1000;
+this.cs.setThresh (this.threshline.value);
+this.changeColour ();
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz.defineMethod (c$, "minColour_actionPerformed",
+function (newCol) {
+if (newCol == null) {
+var udc = new jalview.appletgui.UserDefinedColours (this, this.minColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_minimum_value"));
+} else {
+this.minColour.setBackground (newCol);
+this.minColour.setForeground (newCol);
+this.minColour.repaint ();
+this.changeColour ();
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "maxColour_actionPerformed",
+function (newCol) {
+if (newCol == null) {
+var udc = new jalview.appletgui.UserDefinedColours (this, this.maxColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_maximum_value"));
+} else {
+this.maxColour.setBackground (newCol);
+this.maxColour.setForeground (newCol);
+this.maxColour.repaint ();
+this.changeColour ();
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "changeColour",
+function () {
+if (this.adjusting) {
+return;
+}var aboveThreshold = -1;
+if (this.threshold.getSelectedIndex () == 1) {
+aboveThreshold = 1;
+} else if (this.threshold.getSelectedIndex () == 2) {
+aboveThreshold = 0;
+}this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+var acg = new jalview.schemes.GraduatedColor (this.minColour.getBackground (), this.maxColour.getBackground (), this.min, this.max);
+acg.setColourByLabel (this.colourFromLabel.getState ());
+this.maxColour.setEnabled (!this.colourFromLabel.getState ());
+this.minColour.setEnabled (!this.colourFromLabel.getState ());
+if (aboveThreshold == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (aboveThreshold != -1 && this.threshline == null) {
+this.threshline = new jalview.datamodel.GraphLine ((this.max - this.min) / 2, "Threshold", java.awt.Color.black);
+}if (aboveThreshold != -1) {
+this.adjusting = true;
+acg.setThresh (this.threshline.value);
+var range = this.max * 1000 - this.min * 1000;
+this.slider.setMinimum (Clazz.floatToInt (this.min * 1000));
+this.slider.setMaximum (Clazz.floatToInt (this.max * 1000));
+this.slider.setValue (Clazz.floatToInt (this.threshline.value * 1000));
+this.thresholdValue.setText (this.threshline.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+}acg.setThreshType (aboveThreshold);
+if (this.thresholdIsMin.getState () && aboveThreshold != -1) {
+if (aboveThreshold == 1) {
+acg = new jalview.schemes.GraduatedColor (acg, this.threshline.value, this.max);
+} else {
+acg = new jalview.schemes.GraduatedColor (acg, this.min, this.threshline.value);
+}}this.fr.setColour (this.type, acg);
+this.cs = acg;
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz.defineMethod (c$, "reset",
+function () {
+this.fr.setColour (this.type, this.oldcs);
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+if (evt.getSource () === this.minColour || evt.getSource () === this.maxColour) {
+this.actionPerformed ( new java.awt.event.ActionEvent (evt.getSource (), 1, "Clicked"));
+} else {
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
diff --git a/bin/jalview/appletgui/FeatureRenderer.class b/bin/jalview/appletgui/FeatureRenderer.class
index 94cc9b34e9954183584c291b9abf79dda3ff5162..6582fe79533beaae65600f8ab8c36031dad6fc66 100644
GIT binary patch
delta 28
kcmccNeBF7&9dX7Jo9~LB<6!>DATxQL!g5C8$>EBP0KmKp-v9sr
delta 29
lcmccae8YLe9dX8!o9~LB<6!>9AUk=T!g3}7rpaN7jR4Cy3*i6&
diff --git a/bin/jalview/appletgui/FeatureRenderer.js b/bin/jalview/appletgui/FeatureRenderer.js
index 05b643c..3d688fd 100644
--- a/bin/jalview/appletgui/FeatureRenderer.js
+++ b/bin/jalview/appletgui/FeatureRenderer.js
@@ -1,272 +1,272 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "jalview.renderer.seqfeatures.FeatureRenderer"], "jalview.appletgui.FeatureRenderer", ["awt2swing.Button", "$.Choice", "$.Label", "$.ScrollPane", "$.TextArea", "$.TextField", "jalview.appletgui.FeatureColourChooser", "$.JVDialog", "$.UserDefinedColours", "jalview.datamodel.SearchResults", "jalview.io.FeaturesFile", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "java.awt.event.ActionListener", "$.ItemListener", "$.MouseAdapter", "java.lang.Error"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.featureLinks = null;
-this.featureIndex = 0;
-this.deleteFeature = false;
-this.colourPanel = null;
-if (!Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {
-jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);
-Clazz.makeConstructor (c$,
-function (av) {
-Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer);
-this.av = av;
-this.setTransparencyAvailable (!System.getProperty ("java.version").startsWith ("1.1"));
-}, "jalview.viewmodel.AlignmentViewport");
-Clazz.defineMethod (c$, "amendFeatures",
-function (sequences, features, newFeatures, ap) {
-var bigPanel = new awt2swing.Panel ( new java.awt.BorderLayout ());
-var name = new awt2swing.TextField (16);
-var source = new awt2swing.TextField (16);
-var description = new awt2swing.TextArea (3, 35);
-var start = new awt2swing.TextField (8);
-var end = new awt2swing.TextField (8);
-var overlaps;
-var deleteButton = new awt2swing.Button ("Delete");
-this.deleteFeature = false;
-this.colourPanel = Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer.FeatureColourPanel, this, null);
-this.colourPanel.setSize (110, 15);
-var fr = this;
-var panel = new awt2swing.Panel ( new java.awt.GridLayout (3, 1));
-this.featureIndex = 0;
-var tmp;
-if (!newFeatures && features.length > 1) {
-panel = new awt2swing.Panel ( new java.awt.GridLayout (4, 1));
-tmp = new awt2swing.Panel ();
-tmp.add ( new awt2swing.Label ("Select Feature: "));
-overlaps = new awt2swing.Choice ();
-for (var i = 0; i < features.length; i++) {
-var item = features[i].getType () + "/" + features[i].getBegin () + "-" + features[i].getEnd ();
-if (features[i].getFeatureGroup () != null) {
-item += " (" + features[i].getFeatureGroup () + ")";
-}overlaps.addItem (item);
-}
-tmp.add (overlaps);
-overlaps.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$1") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$1, this, Clazz.cloneFinals ("overlaps", overlaps, "name", name, "features", features, "description", description, "source", source, "start", start, "end", end, "sequences", sequences, "ap", ap))));
-panel.add (tmp);
-}tmp = new awt2swing.Panel ();
-panel.add (tmp);
-tmp.add ( new awt2swing.Label ("Name: ", 4));
-tmp.add (name);
-tmp = new awt2swing.Panel ();
-panel.add (tmp);
-tmp.add ( new awt2swing.Label ("Group: ", 4));
-tmp.add (source);
-tmp = new awt2swing.Panel ();
-panel.add (tmp);
-tmp.add ( new awt2swing.Label ("Colour: ", 4));
-tmp.add (this.colourPanel);
-bigPanel.add (panel, "North");
-panel = new awt2swing.Panel ();
-panel.add ( new awt2swing.Label ("Description: ", 4));
-panel.add ( new awt2swing.ScrollPane ().add (description));
-if (!newFeatures) {
-bigPanel.add (panel, "South");
-panel = new awt2swing.Panel ();
-panel.add ( new awt2swing.Label (" Start:", 4));
-panel.add (start);
-panel.add ( new awt2swing.Label (" End:", 4));
-panel.add (end);
-bigPanel.add (panel, "Center");
-} else {
-bigPanel.add (panel, "Center");
-}if (jalview.appletgui.FeatureRenderer.lastFeatureAdded == null) {
-if (features[0].type != null) {
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = features[0].type;
-} else {
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = "feature_1";
-}}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded == null) {
-if (features[0].featureGroup != null) {
-jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = features[0].featureGroup;
-} else {
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = "Jalview";
-}}var title = newFeatures ? jalview.util.MessageManager.getString ("label.create_new_sequence_features") : jalview.util.MessageManager.formatMessage ("label.amend_delete_features", Clazz.newArray (-1, [sequences[0].getName ()]));
-var dialog = new jalview.appletgui.JVDialog (ap.alignFrame, title, true, 385, 240);
-dialog.setMainPanel (bigPanel);
-if (newFeatures) {
-name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
-source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);
-} else {
-dialog.ok.setLabel (jalview.util.MessageManager.getString ("label.amend"));
-dialog.buttonPanel.add (deleteButton, 1);
-deleteButton.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$2") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$2, this, Clazz.cloneFinals ("dialog", dialog))));
-name.setText (features[0].getType ());
-source.setText (features[0].getFeatureGroup ());
-}start.setText (features[0].getBegin () + "");
-end.setText (features[0].getEnd () + "");
-description.setText (features[0].getDescription ());
-var col = this.getColour (name.getText ());
-if (col == null) {
-col = new jalview.schemes.UserColourScheme ().createColourFromName (name.getText ());
-}var fcol = this.getFeatureStyle (name.getText ());
-this.colourPanel.updateColor (fcol);
-dialog.setResizable (true);
-this.colourPanel.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$3") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$3, this, Clazz.cloneFinals ("fr", fr, "ap", ap, "name", name, "dialog", dialog))));
-dialog.setVisible (true);
-var ffile = new jalview.io.FeaturesFile ();
-if (dialog.accept) {
-this.lastSeq = null;
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = name.getText ().trim ();
-jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = source.getText ().trim ();
-jalview.appletgui.FeatureRenderer.lastDescriptionAdded = description.getText ().$replace ('\n', ' ');
-}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null && jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length < 1) {
-jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = null;
-}if (!newFeatures) {
-var sf = features[this.featureIndex];
-if (dialog.accept) {
-sf.type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
-sf.featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
-sf.description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
-if (!this.colourPanel.isGcol) {
-this.setColour (sf.type, this.colourPanel.getBackground ());
-}try {
-sf.begin = Integer.parseInt (start.getText ());
-sf.end = Integer.parseInt (end.getText ());
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-ffile.parseDescriptionHTML (sf, false);
-this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
-}if (this.deleteFeature) {
-sequences[0].deleteFeature (sf);
-}} else {
-if (dialog.accept && name.getText ().length > 0) {
-for (var i = 0; i < sequences.length; i++) {
-features[i].type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
-features[i].featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
-features[i].description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
-sequences[i].addSequenceFeature (features[i]);
-ffile.parseDescriptionHTML (features[i], false);
-}
-var newColour = this.colourPanel.getBackground ();
-if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null) {
-this.setGroupVisibility (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded, true);
-}this.setColour (jalview.appletgui.FeatureRenderer.lastFeatureAdded, newColour);
-this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
-this.findAllFeatures (false);
-} else {
-return false;
-}}if ((this.av).featureSettings != null) {
-(this.av).featureSettings.refreshTable ();
-}ap.paintAlignment (true);
-return true;
-}, "~A,~A,~B,jalview.appletgui.AlignmentPanel");
-c$.$FeatureRenderer$FeatureColourPanel$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.label = "";
-this.maxCol = null;
-this.isColourByLabel = false;
-this.isGcol = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);
-Clazz.defineMethod (c$, "updateColor",
-function (a) {
-var b;
-var c = null;
-var d = null;
-var e = "";
-if (Clazz.instanceOf (a, java.awt.Color)) {
-this.isGcol = false;
-c = a;
-d = null;
-} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
-this.isGcol = true;
-d = a;
-c = null;
-} else {
-throw new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
-}if (c != null) {
-this.setBackground (b = c);
-} else {
-if (d.getThreshType () != -1) {
-e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");
-}if (this.isColourByLabel = d.isColourByLabel ()) {
-this.setBackground (b = java.awt.Color.white);
-e += " (by Label)";
-} else {
-this.setBackground (b = d.getMinColor ());
-this.maxCol = d.getMaxColor ();
-}}this.label = e;
-this.setBackground (b);
-this.repaint ();
-}, "~O");
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);
-});
-Clazz.defineMethod (c$, "PaintComponent",
-function (a) {
-var b = this.getSize ();
-if (this.isGcol) {
-if (this.isColourByLabel) {
-a.setColor (java.awt.Color.white);
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
-a.setColor (java.awt.Color.black);
-var c = new java.awt.Font ("Verdana", 0, 10);
-a.setFont (c);
-a.drawString (jalview.util.MessageManager.getString ("label.label"), 0, 0);
-} else {
-a.setColor (this.maxCol);
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
-}}}, "java.awt.Graphics");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureRenderer$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (e) {
-var index = this.f$.overlaps.getSelectedIndex ();
-if (index != -1) {
-this.b$["jalview.appletgui.FeatureRenderer"].featureIndex = index;
-this.f$.name.setText (this.f$.features[index].getType ());
-this.f$.description.setText (this.f$.features[index].getDescription ());
-this.f$.source.setText (this.f$.features[index].getFeatureGroup ());
-this.f$.start.setText (this.f$.features[index].getBegin () + "");
-this.f$.end.setText (this.f$.features[index].getEnd () + "");
-var highlight = new jalview.datamodel.SearchResults ();
-highlight.addResult (this.f$.sequences[0], this.f$.features[index].getBegin (), this.f$.features[index].getEnd ());
-this.f$.ap.seqPanel.seqCanvas.highlightSearchResults (highlight);
-}var col = this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle (this.f$.name.getText ());
-if (col == null) {
-col = new jalview.schemes.UserColourScheme ().createColourFromName (this.f$.name.getText ());
-}this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor (col);
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureRenderer$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;
-this.f$.dialog.setVisible (false);
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureRenderer$3$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {
- new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);
-} else {
-var fcc = new jalview.appletgui.FeatureColourChooser (this.f$.ap.alignFrame, this.f$.name.getText ());
-this.f$.dialog.transferFocus ();
-}}, "java.awt.event.MouseEvent");
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"lastFeatureAdded", null,
-"lastFeatureGroupAdded", null,
-"lastDescriptionAdded", null);
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.renderer.seqfeatures.FeatureRenderer"], "jalview.appletgui.FeatureRenderer", ["awt2swing.Button", "$.Choice", "$.Label", "$.ScrollPane", "$.TextArea", "$.TextField", "jalview.appletgui.FeatureColourChooser", "$.JVDialog", "$.UserDefinedColours", "jalview.datamodel.SearchResults", "jalview.io.FeaturesFile", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "java.awt.event.ActionListener", "$.ItemListener", "$.MouseAdapter", "java.lang.Error"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.featureLinks = null;
+this.featureIndex = 0;
+this.deleteFeature = false;
+this.colourPanel = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {
+jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer);
+this.av = av;
+this.setTransparencyAvailable (!System.getProperty ("java.version").startsWith ("1.1"));
+}, "jalview.viewmodel.AlignmentViewport");
+Clazz.defineMethod (c$, "amendFeatures",
+function (sequences, features, newFeatures, ap) {
+var bigPanel = new awt2swing.Panel ( new java.awt.BorderLayout ());
+var name = new awt2swing.TextField (16);
+var source = new awt2swing.TextField (16);
+var description = new awt2swing.TextArea (3, 35);
+var start = new awt2swing.TextField (8);
+var end = new awt2swing.TextField (8);
+var overlaps;
+var deleteButton = new awt2swing.Button ("Delete");
+this.deleteFeature = false;
+this.colourPanel = Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer.FeatureColourPanel, this, null);
+this.colourPanel.setSize (110, 15);
+var fr = this;
+var panel = new awt2swing.Panel ( new java.awt.GridLayout (3, 1));
+this.featureIndex = 0;
+var tmp;
+if (!newFeatures && features.length > 1) {
+panel = new awt2swing.Panel ( new java.awt.GridLayout (4, 1));
+tmp = new awt2swing.Panel ();
+tmp.add ( new awt2swing.Label ("Select Feature: "));
+overlaps = new awt2swing.Choice ();
+for (var i = 0; i < features.length; i++) {
+var item = features[i].getType () + "/" + features[i].getBegin () + "-" + features[i].getEnd ();
+if (features[i].getFeatureGroup () != null) {
+item += " (" + features[i].getFeatureGroup () + ")";
+}overlaps.addItem (item);
+}
+tmp.add (overlaps);
+overlaps.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$1") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$1, this, Clazz.cloneFinals ("overlaps", overlaps, "name", name, "features", features, "description", description, "source", source, "start", start, "end", end, "sequences", sequences, "ap", ap))));
+panel.add (tmp);
+}tmp = new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Name: ", 4));
+tmp.add (name);
+tmp = new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Group: ", 4));
+tmp.add (source);
+tmp = new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Colour: ", 4));
+tmp.add (this.colourPanel);
+bigPanel.add (panel, "North");
+panel = new awt2swing.Panel ();
+panel.add ( new awt2swing.Label ("Description: ", 4));
+panel.add ( new awt2swing.ScrollPane ().add (description));
+if (!newFeatures) {
+bigPanel.add (panel, "South");
+panel = new awt2swing.Panel ();
+panel.add ( new awt2swing.Label (" Start:", 4));
+panel.add (start);
+panel.add ( new awt2swing.Label (" End:", 4));
+panel.add (end);
+bigPanel.add (panel, "Center");
+} else {
+bigPanel.add (panel, "Center");
+}if (jalview.appletgui.FeatureRenderer.lastFeatureAdded == null) {
+if (features[0].type != null) {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = features[0].type;
+} else {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = "feature_1";
+}}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded == null) {
+if (features[0].featureGroup != null) {
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = features[0].featureGroup;
+} else {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = "Jalview";
+}}var title = newFeatures ? jalview.util.MessageManager.getString ("label.create_new_sequence_features") : jalview.util.MessageManager.formatMessage ("label.amend_delete_features", Clazz.newArray (-1, [sequences[0].getName ()]));
+var dialog = new jalview.appletgui.JVDialog (ap.alignFrame, title, true, 385, 240);
+dialog.setMainPanel (bigPanel);
+if (newFeatures) {
+name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);
+} else {
+dialog.ok.setLabel (jalview.util.MessageManager.getString ("label.amend"));
+dialog.buttonPanel.add (deleteButton, 1);
+deleteButton.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$2") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$2, this, Clazz.cloneFinals ("dialog", dialog))));
+name.setText (features[0].getType ());
+source.setText (features[0].getFeatureGroup ());
+}start.setText (features[0].getBegin () + "");
+end.setText (features[0].getEnd () + "");
+description.setText (features[0].getDescription ());
+var col = this.getColour (name.getText ());
+if (col == null) {
+col = new jalview.schemes.UserColourScheme ().createColourFromName (name.getText ());
+}var fcol = this.getFeatureStyle (name.getText ());
+this.colourPanel.updateColor (fcol);
+dialog.setResizable (true);
+this.colourPanel.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$3") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$3, this, Clazz.cloneFinals ("fr", fr, "ap", ap, "name", name, "dialog", dialog))));
+dialog.setVisible (true);
+var ffile = new jalview.io.FeaturesFile ();
+if (dialog.accept) {
+this.lastSeq = null;
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = name.getText ().trim ();
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = source.getText ().trim ();
+jalview.appletgui.FeatureRenderer.lastDescriptionAdded = description.getText ().$replace ('\n', ' ');
+}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null && jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length < 1) {
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = null;
+}if (!newFeatures) {
+var sf = features[this.featureIndex];
+if (dialog.accept) {
+sf.type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
+sf.featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
+sf.description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
+if (!this.colourPanel.isGcol) {
+this.setColour (sf.type, this.colourPanel.getBackground ());
+}try {
+sf.begin = Integer.parseInt (start.getText ());
+sf.end = Integer.parseInt (end.getText ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+ffile.parseDescriptionHTML (sf, false);
+this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+}if (this.deleteFeature) {
+sequences[0].deleteFeature (sf);
+}} else {
+if (dialog.accept && name.getText ().length > 0) {
+for (var i = 0; i < sequences.length; i++) {
+features[i].type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
+features[i].featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
+features[i].description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
+sequences[i].addSequenceFeature (features[i]);
+ffile.parseDescriptionHTML (features[i], false);
+}
+var newColour = this.colourPanel.getBackground ();
+if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null) {
+this.setGroupVisibility (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded, true);
+}this.setColour (jalview.appletgui.FeatureRenderer.lastFeatureAdded, newColour);
+this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+this.findAllFeatures (false);
+} else {
+return false;
+}}if ((this.av).featureSettings != null) {
+(this.av).featureSettings.refreshTable ();
+}ap.paintAlignment (true);
+return true;
+}, "~A,~A,~B,jalview.appletgui.AlignmentPanel");
+c$.$FeatureRenderer$FeatureColourPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.label = "";
+this.maxCol = null;
+this.isColourByLabel = false;
+this.isGcol = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);
+Clazz.defineMethod (c$, "updateColor",
+function (a) {
+var b;
+var c = null;
+var d = null;
+var e = "";
+if (Clazz.instanceOf (a, java.awt.Color)) {
+this.isGcol = false;
+c = a;
+d = null;
+} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
+this.isGcol = true;
+d = a;
+c = null;
+} else {
+throw new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
+}if (c != null) {
+this.setBackground (b = c);
+} else {
+if (d.getThreshType () != -1) {
+e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");
+}if (this.isColourByLabel = d.isColourByLabel ()) {
+this.setBackground (b = java.awt.Color.white);
+e += " (by Label)";
+} else {
+this.setBackground (b = d.getMinColor ());
+this.maxCol = d.getMaxColor ();
+}}this.label = e;
+this.setBackground (b);
+this.repaint ();
+}, "~O");
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);
+});
+Clazz.defineMethod (c$, "PaintComponent",
+function (a) {
+var b = this.getSize ();
+if (this.isGcol) {
+if (this.isColourByLabel) {
+a.setColor (java.awt.Color.white);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+a.setColor (java.awt.Color.black);
+var c = new java.awt.Font ("Verdana", 0, 10);
+a.setFont (c);
+a.drawString (jalview.util.MessageManager.getString ("label.label"), 0, 0);
+} else {
+a.setColor (this.maxCol);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+}}}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureRenderer$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (e) {
+var index = this.f$.overlaps.getSelectedIndex ();
+if (index != -1) {
+this.b$["jalview.appletgui.FeatureRenderer"].featureIndex = index;
+this.f$.name.setText (this.f$.features[index].getType ());
+this.f$.description.setText (this.f$.features[index].getDescription ());
+this.f$.source.setText (this.f$.features[index].getFeatureGroup ());
+this.f$.start.setText (this.f$.features[index].getBegin () + "");
+this.f$.end.setText (this.f$.features[index].getEnd () + "");
+var highlight = new jalview.datamodel.SearchResults ();
+highlight.addResult (this.f$.sequences[0], this.f$.features[index].getBegin (), this.f$.features[index].getEnd ());
+this.f$.ap.seqPanel.seqCanvas.highlightSearchResults (highlight);
+}var col = this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle (this.f$.name.getText ());
+if (col == null) {
+col = new jalview.schemes.UserColourScheme ().createColourFromName (this.f$.name.getText ());
+}this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor (col);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureRenderer$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;
+this.f$.dialog.setVisible (false);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureRenderer$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {
+ new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);
+} else {
+var fcc = new jalview.appletgui.FeatureColourChooser (this.f$.ap.alignFrame, this.f$.name.getText ());
+this.f$.dialog.transferFocus ();
+}}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"lastFeatureAdded", null,
+"lastFeatureGroupAdded", null,
+"lastDescriptionAdded", null);
+});
diff --git a/bin/jalview/appletgui/FeatureSettings.js b/bin/jalview/appletgui/FeatureSettings.js
index c10ac3f..cc92844 100644
--- a/bin/jalview/appletgui/FeatureSettings.js
+++ b/bin/jalview/appletgui/FeatureSettings.js
@@ -1,444 +1,444 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Checkbox", "$.Panel", "jalview.api.FeatureSettingsControllerI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.FeatureSettings", ["awt2swing.Button", "$.Frame", "$.Label", "$.MenuItem", "$.PopupMenu", "$.ScrollPane", "$.Scrollbar", "jalview.appletgui.FeatureColourChooser", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "$.Toolkit", "java.awt.event.WindowAdapter", "java.lang.Boolean", "$.Error", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.fr = null;
-this.ap = null;
-this.av = null;
-this.frame = null;
-this.groupPanel = null;
-this.featurePanel = null;
-this.scrollPane = null;
-this.linkImage = null;
-this.transparency = null;
-this.groupItemListener = null;
-this.selectedCheck = null;
-this.dragging = false;
-if (!Clazz.isClassDefined ("jalview.appletgui.FeatureSettings.MyCheckbox")) {
-jalview.appletgui.FeatureSettings.$FeatureSettings$MyCheckbox$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "FeatureSettings", awt2swing.Panel, [java.awt.event.ItemListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.ActionListener, java.awt.event.AdjustmentListener, jalview.api.FeatureSettingsControllerI]);
-Clazz.prepareFields (c$, function () {
-this.featurePanel = new awt2swing.Panel ();
-this.groupItemListener = ((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$1") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$1, this, null));
-});
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.FeatureSettings, []);
-this.ap = ap;
-this.av = ap.av;
-ap.av.featureSettings = this;
-this.fr = ap.seqPanel.seqCanvas.getFeatureRenderer ();
-this.transparency = new awt2swing.Scrollbar (0, 100 - Clazz.floatToInt (this.fr.getTransparency () * 100), 1, 1, 100);
-if (this.fr.isTransparencyAvailable ()) {
-this.transparency.addAdjustmentListener (this);
-} else {
-this.transparency.setEnabled (false);
-}var url = this.getClass ().getResource ("/images/link.gif");
-if (url != null) {
-this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
-}if (this.av.isShowSequenceFeatures () || !this.fr.hasRenderOrder ()) {
-this.fr.findAllFeatures (true);
-}this.discoverAllFeatureData ();
-this.setLayout ( new java.awt.BorderLayout ());
-this.scrollPane = new awt2swing.ScrollPane ();
-this.scrollPane.add (this.featurePanel);
-if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
-this.add (this.scrollPane, "Center");
-}var invert = new awt2swing.Button ("Invert Selection");
-invert.addActionListener (this);
-var lowerPanel = new awt2swing.Panel ( new java.awt.GridLayout (2, 1, 5, 10));
-lowerPanel.add (invert);
-var tPanel = new awt2swing.Panel ( new java.awt.BorderLayout ());
-if (this.fr.isTransparencyAvailable ()) {
-tPanel.add (this.transparency, "Center");
-tPanel.add ( new awt2swing.Label ("Transparency"), "East");
-} else {
-tPanel.add ( new awt2swing.Label ("Transparency not available in this web browser"), "Center");
-}lowerPanel.add (tPanel, "South");
-this.add (lowerPanel, "South");
-if (this.groupPanel != null) {
-this.groupPanel.setLayout ( new java.awt.GridLayout (Clazz.doubleToInt ((this.fr.getFeatureGroupsSize ()) / 4) + 1, 4));
-this.groupPanel.validate ();
-this.add (this.groupPanel, "North");
-}this.frame = new awt2swing.Frame ();
-this.frame.add (this);
-var me = this;
-this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$2") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$2, this, Clazz.cloneFinals ("me", me))));
-var height = this.featurePanel.getComponentCount () * 50 + 60;
-height = Math.max (200, height);
-height = Math.min (400, height);
-var width = 300;
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.feature_settings"), width, height);
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.defineMethod (c$, "PaintComponent",
-function (g) {
-g.setColor (java.awt.Color.black);
-g.drawString (jalview.util.MessageManager.getString ("label.no_features_added_to_this_alignment"), 10, 20);
-g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_1"), 10, 40);
-g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_2"), 10, 60);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "popupSort",
-function (check, minmax, x, y) {
-var type = check.type;
-var typeCol = this.fr.getFeatureStyle (type);
-var men = new awt2swing.PopupMenu (jalview.util.MessageManager.formatMessage ("label.settings_for_type", Clazz.newArray (-1, [type])));
-var scr = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_score"));
-men.add (scr);
-var me = this;
-scr.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$3") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$3, this, Clazz.cloneFinals ("me", me, "type", type))));
-var dens = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_density"));
-dens.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$4") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$4, this, Clazz.cloneFinals ("me", me, "type", type))));
-men.add (dens);
-if (minmax != null) {
-var typeMinMax = minmax.get (type);
-if (typeMinMax != null && (typeMinMax)[0] != null) {
-var mxcol = new awt2swing.MenuItem ((Clazz.instanceOf (typeCol, java.awt.Color)) ? "Graduated Colour" : "Single Colour");
-men.add (mxcol);
-mxcol.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$5") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$5, this, Clazz.cloneFinals ("typeCol", typeCol, "me", me, "type", type, "check", check))));
-}}this.featurePanel.add (men);
-men.show (this.featurePanel, x, y);
-}, "jalview.appletgui.FeatureSettings.MyCheckbox,java.util.Hashtable,~N,~N");
-Clazz.overrideMethod (c$, "discoverAllFeatureData",
-function () {
-if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
-this.rebuildGroups ();
-}this.resetTable (false);
-});
-Clazz.defineMethod (c$, "rebuildGroups",
-function () {
-var rdrw = false;
-if (this.groupPanel == null) {
-this.groupPanel = new awt2swing.Panel ();
-} else {
-rdrw = true;
-this.groupPanel.removeAll ();
-}for (var group, $group = this.fr.getFeatureGroups ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {
-var vis = this.fr.checkGroupVisibility (group, false);
-var check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, group, vis, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (group)));
-check.addMouseListener (this);
-check.setFont ( new java.awt.Font ("Serif", 1, 12));
-check.addItemListener (this.groupItemListener);
-check.setVisible (vis);
-this.groupPanel.add (check);
-}
-if (rdrw) {
-this.groupPanel.validate ();
-}});
-Clazz.defineMethod (c$, "resetTable",
-function (groupsChanged) {
-var tmpfeatures;
-var group = null;
-var type;
-var visibleChecks = new java.util.Vector ();
-var alignment = this.av.getAlignment ();
-for (var i = 0; i < alignment.getHeight (); i++) {
-if (alignment.getSequenceAt (i).getSequenceFeatures () == null) {
-continue;
-}tmpfeatures = alignment.getSequenceAt (i).getSequenceFeatures ();
-var index = 0;
-while (index < tmpfeatures.length) {
-group = tmpfeatures[index].featureGroup;
-if (group == null || this.fr.checkGroupVisibility (group, true)) {
-type = tmpfeatures[index].getType ();
-if (!visibleChecks.contains (type)) {
-visibleChecks.addElement (type);
-}}index++;
-}
-}
-var comps;
-var cSize = this.featurePanel.getComponentCount ();
-var check;
-for (var i = 0; i < cSize; i++) {
-comps = this.featurePanel.getComponents ();
-check = comps[i];
-if (!visibleChecks.contains (check.type)) {
-this.featurePanel.remove (i);
-cSize--;
-i--;
-}}
-if (this.fr.getRenderOrder () != null) {
-var rol = this.fr.getRenderOrder ();
-for (var ro = rol.size () - 1; ro > -1; ro--) {
-var item = rol.get (ro);
-if (!visibleChecks.contains (item)) {
-continue;
-}visibleChecks.removeElement (item);
-this.addCheck (false, item);
-}
-}var en = visibleChecks.elements ();
-while (en.hasMoreElements ()) {
-this.addCheck (groupsChanged, en.nextElement ().toString ());
-}
-this.featurePanel.setLayout ( new java.awt.GridLayout (this.featurePanel.getComponentCount (), 1, 10, 5));
-this.featurePanel.validate ();
-if (this.scrollPane != null) {
-this.scrollPane.validate ();
-}this.itemStateChanged (null);
-}, "~B");
-Clazz.defineMethod (c$, "addCheck",
-function (groupsChanged, type) {
-var addCheck;
-var comps = this.featurePanel.getComponents ();
-var check;
-addCheck = true;
-for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
-check = comps[i];
-if (check.type.equals (type)) {
-addCheck = false;
-break;
-}}
-if (addCheck) {
-var selected = false;
-if (groupsChanged || this.av.getFeaturesDisplayed ().isVisible (type)) {
-selected = true;
-}check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, type, selected, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (type)), this.fr.getFeatureStyle (type));
-check.addMouseListener (this);
-check.addMouseMotionListener (this);
-check.addItemListener (this);
-if (groupsChanged) {
-this.featurePanel.add (check, 0);
-} else {
-this.featurePanel.add (check);
-}}}, "~B,~S");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
-var check = this.featurePanel.getComponent (i);
-check.setState (!check.getState ());
-}
-this.selectionChanged ();
-}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-this.selectionChanged ();
-}, "java.awt.event.ItemEvent");
-Clazz.defineMethod (c$, "selectionChanged",
-function () {
-var comps = this.featurePanel.getComponents ();
-var cSize = comps.length;
-var tmp = Clazz.newArray (cSize, 3, null);
-var tmpSize = 0;
-for (var i = 0; i < cSize; i++) {
-var check = comps[i];
-tmp[tmpSize][0] = check.type;
-tmp[tmpSize][1] = this.fr.getFeatureStyle (check.type);
-tmp[tmpSize][2] = new Boolean (check.getState ());
-tmpSize++;
-}
-var data = Clazz.newArray (tmpSize, 3, null);
-System.arraycopy (tmp, 0, data, 0, tmpSize);
-this.fr.setFeaturePriority (data);
-this.ap.paintAlignment (true);
-});
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-this.selectedCheck = evt.getSource ();
-if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (this.selectedCheck.type)) {
-if (evt.getX () > this.selectedCheck.stringWidth + 20) {
-evt.consume ();
-}}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-if ((evt.getSource ()).getParent () !== this.featurePanel) {
-return;
-}this.dragging = true;
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-if ((evt.getSource ()).getParent () !== this.featurePanel) {
-return;
-}var comp = null;
-var target = null;
-var height = evt.getY () + evt.getComponent ().getLocation ().y;
-if (height > this.featurePanel.getSize ().height) {
-comp = this.featurePanel.getComponent (this.featurePanel.getComponentCount () - 1);
-} else if (height < 0) {
-comp = this.featurePanel.getComponent (0);
-} else {
-comp = this.featurePanel.getComponentAt (evt.getX (), evt.getY () + evt.getComponent ().getLocation ().y);
-}if (comp != null && Clazz.instanceOf (comp, awt2swing.Checkbox)) {
-target = comp;
-}if (this.selectedCheck != null && target != null && this.selectedCheck !== target) {
-var targetIndex = -1;
-for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
-if (target === this.featurePanel.getComponent (i)) {
-targetIndex = i;
-break;
-}}
-this.featurePanel.remove (this.selectedCheck);
-this.featurePanel.add (this.selectedCheck, targetIndex);
-this.featurePanel.validate ();
-this.itemStateChanged (null);
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "setUserColour",
-function (feature, originalColour) {
-if (Clazz.instanceOf (originalColour, java.awt.Color) || Clazz.instanceOf (originalColour, jalview.schemes.GraduatedColor)) {
-this.fr.setColour (feature, originalColour);
-} else {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_unsupported_feature_colour_object"));
-}this.refreshTable ();
-}, "~S,~O");
-Clazz.defineMethod (c$, "refreshTable",
-function () {
-this.featurePanel.removeAll ();
-this.resetTable (false);
-this.ap.paintAlignment (true);
-});
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-var check = evt.getSource ();
-if ((evt.getModifiers () & 4) != 0) {
-this.popupSort (check, this.fr.getMinMax (), evt.getX (), evt.getY ());
-}if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (check.type)) {
-if (evt.getX () > check.stringWidth + 20) {
-evt.consume ();
-var link = this.fr.featureLinks.get (check.type).toString ();
-this.ap.alignFrame.showURL (link.substring (link.indexOf ("|") + 1), link.substring (0, link.indexOf ("|")));
-}}if (check.getParent () !== this.featurePanel) {
-return;
-}if (evt.getClickCount () > 1) {
-var fcol = this.fr.getFeatureStyle (check.type);
-if (Clazz.instanceOf (fcol, java.awt.Color)) {
- new jalview.appletgui.UserDefinedColours (this, check.type, fcol);
-} else {
- new jalview.appletgui.FeatureColourChooser (this, check.type);
-check.updateColor (this.fr.getFeatureStyle (check.type));
-}}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-this.fr.setTransparency ((100 - this.transparency.getValue ()) / 100);
-this.ap.seqPanel.seqCanvas.repaint ();
-}, "java.awt.event.AdjustmentEvent");
-c$.$FeatureSettings$MyCheckbox$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.type = null;
-this.stringWidth = 0;
-this.hasLink = false;
-this.gcol = null;
-this.col = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui.FeatureSettings, "MyCheckbox", awt2swing.Checkbox);
-Clazz.defineMethod (c$, "updateColor",
-function (a) {
-if (Clazz.instanceOf (a, java.awt.Color)) {
-this.col = a;
-this.gcol = null;
-} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
-this.gcol = a;
-this.col = null;
-} else {
-throw new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
-}if (this.col != null) {
-this.setBackground (this.col);
-} else {
-var b = this.type;
-if (this.gcol.getThreshType () != -1) {
-b += " " + ((this.gcol.getThreshType () == 1) ? "(>)" : "(<)");
-}if (this.gcol.isColourByLabel ()) {
-this.setBackground (java.awt.Color.white);
-b += " (by Label)";
-} else {
-this.setBackground (this.gcol.getMinColor ());
-}this.setLabel (b);
-}this.repaint ();
-}, "~O");
-Clazz.makeConstructor (c$,
-function (a, b, c) {
-Clazz.superConstructor (this, jalview.appletgui.FeatureSettings.MyCheckbox, [a, b]);
-this.type = a;
-var d = this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFontMetrics (this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFont ());
-this.stringWidth = d.stringWidth (a);
-this.hasLink = c;
-}, "~S,~B,~B");
-Clazz.makeConstructor (c$,
-function (a, b, c, d) {
-this.construct (a, b, c);
-this.updateColor (d);
-}, "~S,~B,~B,~O");
-Clazz.defineMethod (c$, "PaintComponent",
-function (a) {
-var b = this.getSize ();
-if (this.gcol != null) {
-if (this.gcol.isColourByLabel ()) {
-a.setColor (java.awt.Color.white);
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
-} else {
-var c = this.gcol.getMaxColor ();
-a.setColor (c);
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
-}}if (this.hasLink) {
-a.drawImage (this.b$["jalview.appletgui.FeatureSettings"].linkImage, this.stringWidth + 25, Clazz.doubleToInt ((this.getSize ().height - this.b$["jalview.appletgui.FeatureSettings"].linkImage.getHeight (this)) / 2), this);
-}}, "java.awt.Graphics");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureSettings$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$1", null, java.awt.event.ItemListener);
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-var source = evt.getSource ();
-this.b$["jalview.appletgui.FeatureSettings"].fr.setGroupVisibility (source.getLabel (), source.getState ());
-this.b$["jalview.appletgui.FeatureSettings"].ap.seqPanel.seqCanvas.repaint ();
-if (this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel != null) {
-this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel.updateOverviewImage ();
-}this.b$["jalview.appletgui.FeatureSettings"].resetTable (true);
-return;
-}, "java.awt.event.ItemEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureSettings$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$2", java.awt.event.WindowAdapter);
-Clazz.overrideMethod (c$, "windowClosing",
-function (e) {
-if (this.f$.me.av.featureSettings === this.f$.me) {
-this.f$.me.av.featureSettings = null;
-this.f$.me.ap = null;
-this.f$.me.av = null;
-}}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureSettings$3$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$3", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureScore ( Clazz.newArray (-1, [this.f$.type]));
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureSettings$4$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$4", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureDensity ( Clazz.newArray (-1, [this.f$.type]));
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FeatureSettings$5$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$5", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-if (Clazz.instanceOf (this.f$.typeCol, java.awt.Color)) {
- new jalview.appletgui.FeatureColourChooser (this.f$.me, this.f$.type);
-this.f$.check.updateColor (this.b$["jalview.appletgui.FeatureSettings"].fr.getFeatureStyle (this.f$.type));
-} else {
- new jalview.appletgui.UserDefinedColours (this.f$.me, this.f$.check.type, (this.f$.typeCol));
-}}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Checkbox", "$.Panel", "jalview.api.FeatureSettingsControllerI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.FeatureSettings", ["awt2swing.Button", "$.Frame", "$.Label", "$.MenuItem", "$.PopupMenu", "$.ScrollPane", "$.Scrollbar", "jalview.appletgui.FeatureColourChooser", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "$.Toolkit", "java.awt.event.WindowAdapter", "java.lang.Boolean", "$.Error", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fr = null;
+this.ap = null;
+this.av = null;
+this.frame = null;
+this.groupPanel = null;
+this.featurePanel = null;
+this.scrollPane = null;
+this.linkImage = null;
+this.transparency = null;
+this.groupItemListener = null;
+this.selectedCheck = null;
+this.dragging = false;
+if (!Clazz.isClassDefined ("jalview.appletgui.FeatureSettings.MyCheckbox")) {
+jalview.appletgui.FeatureSettings.$FeatureSettings$MyCheckbox$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FeatureSettings", awt2swing.Panel, [java.awt.event.ItemListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.ActionListener, java.awt.event.AdjustmentListener, jalview.api.FeatureSettingsControllerI]);
+Clazz.prepareFields (c$, function () {
+this.featurePanel = new awt2swing.Panel ();
+this.groupItemListener = ((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$1") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$1, this, null));
+});
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureSettings, []);
+this.ap = ap;
+this.av = ap.av;
+ap.av.featureSettings = this;
+this.fr = ap.seqPanel.seqCanvas.getFeatureRenderer ();
+this.transparency = new awt2swing.Scrollbar (0, 100 - Clazz.floatToInt (this.fr.getTransparency () * 100), 1, 1, 100);
+if (this.fr.isTransparencyAvailable ()) {
+this.transparency.addAdjustmentListener (this);
+} else {
+this.transparency.setEnabled (false);
+}var url = this.getClass ().getResource ("/images/link.gif");
+if (url != null) {
+this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}if (this.av.isShowSequenceFeatures () || !this.fr.hasRenderOrder ()) {
+this.fr.findAllFeatures (true);
+}this.discoverAllFeatureData ();
+this.setLayout ( new java.awt.BorderLayout ());
+this.scrollPane = new awt2swing.ScrollPane ();
+this.scrollPane.add (this.featurePanel);
+if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
+this.add (this.scrollPane, "Center");
+}var invert = new awt2swing.Button ("Invert Selection");
+invert.addActionListener (this);
+var lowerPanel = new awt2swing.Panel ( new java.awt.GridLayout (2, 1, 5, 10));
+lowerPanel.add (invert);
+var tPanel = new awt2swing.Panel ( new java.awt.BorderLayout ());
+if (this.fr.isTransparencyAvailable ()) {
+tPanel.add (this.transparency, "Center");
+tPanel.add ( new awt2swing.Label ("Transparency"), "East");
+} else {
+tPanel.add ( new awt2swing.Label ("Transparency not available in this web browser"), "Center");
+}lowerPanel.add (tPanel, "South");
+this.add (lowerPanel, "South");
+if (this.groupPanel != null) {
+this.groupPanel.setLayout ( new java.awt.GridLayout (Clazz.doubleToInt ((this.fr.getFeatureGroupsSize ()) / 4) + 1, 4));
+this.groupPanel.validate ();
+this.add (this.groupPanel, "North");
+}this.frame = new awt2swing.Frame ();
+this.frame.add (this);
+var me = this;
+this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$2") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$2, this, Clazz.cloneFinals ("me", me))));
+var height = this.featurePanel.getComponentCount () * 50 + 60;
+height = Math.max (200, height);
+height = Math.min (400, height);
+var width = 300;
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.feature_settings"), width, height);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "PaintComponent",
+function (g) {
+g.setColor (java.awt.Color.black);
+g.drawString (jalview.util.MessageManager.getString ("label.no_features_added_to_this_alignment"), 10, 20);
+g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_1"), 10, 40);
+g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_2"), 10, 60);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "popupSort",
+function (check, minmax, x, y) {
+var type = check.type;
+var typeCol = this.fr.getFeatureStyle (type);
+var men = new awt2swing.PopupMenu (jalview.util.MessageManager.formatMessage ("label.settings_for_type", Clazz.newArray (-1, [type])));
+var scr = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_score"));
+men.add (scr);
+var me = this;
+scr.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$3") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$3, this, Clazz.cloneFinals ("me", me, "type", type))));
+var dens = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_density"));
+dens.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$4") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$4, this, Clazz.cloneFinals ("me", me, "type", type))));
+men.add (dens);
+if (minmax != null) {
+var typeMinMax = minmax.get (type);
+if (typeMinMax != null && (typeMinMax)[0] != null) {
+var mxcol = new awt2swing.MenuItem ((Clazz.instanceOf (typeCol, java.awt.Color)) ? "Graduated Colour" : "Single Colour");
+men.add (mxcol);
+mxcol.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$5") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$5, this, Clazz.cloneFinals ("typeCol", typeCol, "me", me, "type", type, "check", check))));
+}}this.featurePanel.add (men);
+men.show (this.featurePanel, x, y);
+}, "jalview.appletgui.FeatureSettings.MyCheckbox,java.util.Hashtable,~N,~N");
+Clazz.overrideMethod (c$, "discoverAllFeatureData",
+function () {
+if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
+this.rebuildGroups ();
+}this.resetTable (false);
+});
+Clazz.defineMethod (c$, "rebuildGroups",
+function () {
+var rdrw = false;
+if (this.groupPanel == null) {
+this.groupPanel = new awt2swing.Panel ();
+} else {
+rdrw = true;
+this.groupPanel.removeAll ();
+}for (var group, $group = this.fr.getFeatureGroups ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {
+var vis = this.fr.checkGroupVisibility (group, false);
+var check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, group, vis, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (group)));
+check.addMouseListener (this);
+check.setFont ( new java.awt.Font ("Serif", 1, 12));
+check.addItemListener (this.groupItemListener);
+check.setVisible (vis);
+this.groupPanel.add (check);
+}
+if (rdrw) {
+this.groupPanel.validate ();
+}});
+Clazz.defineMethod (c$, "resetTable",
+function (groupsChanged) {
+var tmpfeatures;
+var group = null;
+var type;
+var visibleChecks = new java.util.Vector ();
+var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+if (alignment.getSequenceAt (i).getSequenceFeatures () == null) {
+continue;
+}tmpfeatures = alignment.getSequenceAt (i).getSequenceFeatures ();
+var index = 0;
+while (index < tmpfeatures.length) {
+group = tmpfeatures[index].featureGroup;
+if (group == null || this.fr.checkGroupVisibility (group, true)) {
+type = tmpfeatures[index].getType ();
+if (!visibleChecks.contains (type)) {
+visibleChecks.addElement (type);
+}}index++;
+}
+}
+var comps;
+var cSize = this.featurePanel.getComponentCount ();
+var check;
+for (var i = 0; i < cSize; i++) {
+comps = this.featurePanel.getComponents ();
+check = comps[i];
+if (!visibleChecks.contains (check.type)) {
+this.featurePanel.remove (i);
+cSize--;
+i--;
+}}
+if (this.fr.getRenderOrder () != null) {
+var rol = this.fr.getRenderOrder ();
+for (var ro = rol.size () - 1; ro > -1; ro--) {
+var item = rol.get (ro);
+if (!visibleChecks.contains (item)) {
+continue;
+}visibleChecks.removeElement (item);
+this.addCheck (false, item);
+}
+}var en = visibleChecks.elements ();
+while (en.hasMoreElements ()) {
+this.addCheck (groupsChanged, en.nextElement ().toString ());
+}
+this.featurePanel.setLayout ( new java.awt.GridLayout (this.featurePanel.getComponentCount (), 1, 10, 5));
+this.featurePanel.validate ();
+if (this.scrollPane != null) {
+this.scrollPane.validate ();
+}this.itemStateChanged (null);
+}, "~B");
+Clazz.defineMethod (c$, "addCheck",
+function (groupsChanged, type) {
+var addCheck;
+var comps = this.featurePanel.getComponents ();
+var check;
+addCheck = true;
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+check = comps[i];
+if (check.type.equals (type)) {
+addCheck = false;
+break;
+}}
+if (addCheck) {
+var selected = false;
+if (groupsChanged || this.av.getFeaturesDisplayed ().isVisible (type)) {
+selected = true;
+}check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, type, selected, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (type)), this.fr.getFeatureStyle (type));
+check.addMouseListener (this);
+check.addMouseMotionListener (this);
+check.addItemListener (this);
+if (groupsChanged) {
+this.featurePanel.add (check, 0);
+} else {
+this.featurePanel.add (check);
+}}}, "~B,~S");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+var check = this.featurePanel.getComponent (i);
+check.setState (!check.getState ());
+}
+this.selectionChanged ();
+}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+this.selectionChanged ();
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "selectionChanged",
+function () {
+var comps = this.featurePanel.getComponents ();
+var cSize = comps.length;
+var tmp = Clazz.newArray (cSize, 3, null);
+var tmpSize = 0;
+for (var i = 0; i < cSize; i++) {
+var check = comps[i];
+tmp[tmpSize][0] = check.type;
+tmp[tmpSize][1] = this.fr.getFeatureStyle (check.type);
+tmp[tmpSize][2] = new Boolean (check.getState ());
+tmpSize++;
+}
+var data = Clazz.newArray (tmpSize, 3, null);
+System.arraycopy (tmp, 0, data, 0, tmpSize);
+this.fr.setFeaturePriority (data);
+this.ap.paintAlignment (true);
+});
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+this.selectedCheck = evt.getSource ();
+if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (this.selectedCheck.type)) {
+if (evt.getX () > this.selectedCheck.stringWidth + 20) {
+evt.consume ();
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+if ((evt.getSource ()).getParent () !== this.featurePanel) {
+return;
+}this.dragging = true;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+if ((evt.getSource ()).getParent () !== this.featurePanel) {
+return;
+}var comp = null;
+var target = null;
+var height = evt.getY () + evt.getComponent ().getLocation ().y;
+if (height > this.featurePanel.getSize ().height) {
+comp = this.featurePanel.getComponent (this.featurePanel.getComponentCount () - 1);
+} else if (height < 0) {
+comp = this.featurePanel.getComponent (0);
+} else {
+comp = this.featurePanel.getComponentAt (evt.getX (), evt.getY () + evt.getComponent ().getLocation ().y);
+}if (comp != null && Clazz.instanceOf (comp, awt2swing.Checkbox)) {
+target = comp;
+}if (this.selectedCheck != null && target != null && this.selectedCheck !== target) {
+var targetIndex = -1;
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+if (target === this.featurePanel.getComponent (i)) {
+targetIndex = i;
+break;
+}}
+this.featurePanel.remove (this.selectedCheck);
+this.featurePanel.add (this.selectedCheck, targetIndex);
+this.featurePanel.validate ();
+this.itemStateChanged (null);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "setUserColour",
+function (feature, originalColour) {
+if (Clazz.instanceOf (originalColour, java.awt.Color) || Clazz.instanceOf (originalColour, jalview.schemes.GraduatedColor)) {
+this.fr.setColour (feature, originalColour);
+} else {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_unsupported_feature_colour_object"));
+}this.refreshTable ();
+}, "~S,~O");
+Clazz.defineMethod (c$, "refreshTable",
+function () {
+this.featurePanel.removeAll ();
+this.resetTable (false);
+this.ap.paintAlignment (true);
+});
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+var check = evt.getSource ();
+if ((evt.getModifiers () & 4) != 0) {
+this.popupSort (check, this.fr.getMinMax (), evt.getX (), evt.getY ());
+}if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (check.type)) {
+if (evt.getX () > check.stringWidth + 20) {
+evt.consume ();
+var link = this.fr.featureLinks.get (check.type).toString ();
+this.ap.alignFrame.showURL (link.substring (link.indexOf ("|") + 1), link.substring (0, link.indexOf ("|")));
+}}if (check.getParent () !== this.featurePanel) {
+return;
+}if (evt.getClickCount () > 1) {
+var fcol = this.fr.getFeatureStyle (check.type);
+if (Clazz.instanceOf (fcol, java.awt.Color)) {
+ new jalview.appletgui.UserDefinedColours (this, check.type, fcol);
+} else {
+ new jalview.appletgui.FeatureColourChooser (this, check.type);
+check.updateColor (this.fr.getFeatureStyle (check.type));
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+this.fr.setTransparency ((100 - this.transparency.getValue ()) / 100);
+this.ap.seqPanel.seqCanvas.repaint ();
+}, "java.awt.event.AdjustmentEvent");
+c$.$FeatureSettings$MyCheckbox$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.type = null;
+this.stringWidth = 0;
+this.hasLink = false;
+this.gcol = null;
+this.col = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.FeatureSettings, "MyCheckbox", awt2swing.Checkbox);
+Clazz.defineMethod (c$, "updateColor",
+function (a) {
+if (Clazz.instanceOf (a, java.awt.Color)) {
+this.col = a;
+this.gcol = null;
+} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
+this.gcol = a;
+this.col = null;
+} else {
+throw new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
+}if (this.col != null) {
+this.setBackground (this.col);
+} else {
+var b = this.type;
+if (this.gcol.getThreshType () != -1) {
+b += " " + ((this.gcol.getThreshType () == 1) ? "(>)" : "(<)");
+}if (this.gcol.isColourByLabel ()) {
+this.setBackground (java.awt.Color.white);
+b += " (by Label)";
+} else {
+this.setBackground (this.gcol.getMinColor ());
+}this.setLabel (b);
+}this.repaint ();
+}, "~O");
+Clazz.makeConstructor (c$,
+function (a, b, c) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureSettings.MyCheckbox, [a, b]);
+this.type = a;
+var d = this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFontMetrics (this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFont ());
+this.stringWidth = d.stringWidth (a);
+this.hasLink = c;
+}, "~S,~B,~B");
+Clazz.makeConstructor (c$,
+function (a, b, c, d) {
+this.construct (a, b, c);
+this.updateColor (d);
+}, "~S,~B,~B,~O");
+Clazz.defineMethod (c$, "PaintComponent",
+function (a) {
+var b = this.getSize ();
+if (this.gcol != null) {
+if (this.gcol.isColourByLabel ()) {
+a.setColor (java.awt.Color.white);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+} else {
+var c = this.gcol.getMaxColor ();
+a.setColor (c);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+}}if (this.hasLink) {
+a.drawImage (this.b$["jalview.appletgui.FeatureSettings"].linkImage, this.stringWidth + 25, Clazz.doubleToInt ((this.getSize ().height - this.b$["jalview.appletgui.FeatureSettings"].linkImage.getHeight (this)) / 2), this);
+}}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$1", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+var source = evt.getSource ();
+this.b$["jalview.appletgui.FeatureSettings"].fr.setGroupVisibility (source.getLabel (), source.getState ());
+this.b$["jalview.appletgui.FeatureSettings"].ap.seqPanel.seqCanvas.repaint ();
+if (this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel.updateOverviewImage ();
+}this.b$["jalview.appletgui.FeatureSettings"].resetTable (true);
+return;
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$2", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing",
+function (e) {
+if (this.f$.me.av.featureSettings === this.f$.me) {
+this.f$.me.av.featureSettings = null;
+this.f$.me.ap = null;
+this.f$.me.av = null;
+}}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureScore ( Clazz.newArray (-1, [this.f$.type]));
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$4", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureDensity ( Clazz.newArray (-1, [this.f$.type]));
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$5", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+if (Clazz.instanceOf (this.f$.typeCol, java.awt.Color)) {
+ new jalview.appletgui.FeatureColourChooser (this.f$.me, this.f$.type);
+this.f$.check.updateColor (this.b$["jalview.appletgui.FeatureSettings"].fr.getFeatureStyle (this.f$.type));
+} else {
+ new jalview.appletgui.UserDefinedColours (this.f$.me, this.f$.check.type, (this.f$.typeCol));
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/Finder.js b/bin/jalview/appletgui/Finder.js
index d64e048..22e3c84 100644
--- a/bin/jalview/appletgui/Finder.js
+++ b/bin/jalview/appletgui/Finder.js
@@ -1,184 +1,184 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.TextField", "java.awt.GridLayout"], "jalview.appletgui.Finder", ["awt2swing.Frame", "jalview.analysis.Finder", "jalview.bin.JalviewLite", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.awt.Font", "$.Rectangle", "java.awt.event.KeyAdapter", "$.WindowAdapter"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.av = null;
-this.ap = null;
-this.frame = null;
-this.searchResults = null;
-this.seqIndex = 0;
-this.resIndex = -1;
-this.jLabel1 = null;
-this.textfield = null;
-this.findAll = null;
-this.findNext = null;
-this.actionsPanel = null;
-this.gridLayout1 = null;
-this.createNewGroup = null;
-this.caseSensitive = null;
-this.searchDescription = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "Finder", awt2swing.Panel, java.awt.event.ActionListener);
-Clazz.prepareFields (c$, function () {
-this.jLabel1 = new awt2swing.Label ();
-this.textfield = new awt2swing.TextField ();
-this.findAll = new awt2swing.Button ();
-this.findNext = new awt2swing.Button ();
-this.actionsPanel = new awt2swing.Panel ();
-this.gridLayout1 = new java.awt.GridLayout ();
-this.createNewGroup = new awt2swing.Button ();
-this.caseSensitive = new awt2swing.Checkbox ();
-this.searchDescription = new awt2swing.Checkbox ();
-});
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.Finder, []);
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.av = ap.av;
-this.ap = ap;
-this.frame = new awt2swing.Frame ();
-this.frame.add (this);
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.find"), 340, 120);
-this.frame.repaint ();
-this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$1") ? 0 : jalview.appletgui.Finder.$Finder$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$1, this, Clazz.cloneFinals ("ap", ap))));
-this.textfield.requestFocus ();
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.textfield) {
-this.doSearch (false);
-} else if (evt.getSource () === this.findNext) {
-this.doSearch (false);
-} else if (evt.getSource () === this.findAll) {
-this.resIndex = -1;
-this.seqIndex = 0;
-this.doSearch (true);
-} else if (evt.getSource () === this.createNewGroup) {
-this.createNewGroup_actionPerformed ();
-}}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "createNewGroup_actionPerformed",
-function () {
-var seqs = new Array (this.searchResults.getSize ());
-var features = new Array (this.searchResults.getSize ());
-for (var i = 0; i < this.searchResults.getSize (); i++) {
-seqs[i] = this.searchResults.getResultSequence (i);
-features[i] = new jalview.datamodel.SequenceFeature (this.textfield.getText ().trim (), "Search Results", null, this.searchResults.getResultStart (i), this.searchResults.getResultEnd (i), "Search Results");
-}
-if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {
-this.ap.alignFrame.sequenceFeatures.setState (true);
-this.av.setShowSequenceFeatures (true);
-this.ap.highlightSearchResults (null);
-}});
-Clazz.defineMethod (c$, "doSearch",
-function (findAll) {
-if (this.ap.av.applet.currentAlignFrame != null) {
-this.ap = this.ap.av.applet.currentAlignFrame.alignPanel;
-this.av = this.ap.av;
-}this.createNewGroup.setEnabled (false);
-var finder = new jalview.analysis.Finder (this.av.getAlignment (), this.av.getSelectionGroup (), this.seqIndex, this.resIndex);
-finder.setCaseSensitive (this.caseSensitive.getState ());
-finder.setIncludeDescription (this.searchDescription.getState ());
-finder.setFindAll (findAll);
-var searchString = this.textfield.getText ();
-finder.find (searchString);
-this.seqIndex = finder.getSeqIndex ();
-this.resIndex = finder.getResIndex ();
-this.searchResults = finder.getSearchResults ();
-var idMatch = finder.getIdMatch ();
-var haveResults = false;
-if ((idMatch.size () > 0)) {
-haveResults = true;
-this.ap.idPanel.highlightSearchResults (idMatch);
-} else {
-this.ap.idPanel.highlightSearchResults (null);
-}if (this.searchResults.getSize () > 0) {
-haveResults = true;
-this.createNewGroup.setEnabled (true);
-} else {
-this.searchResults = null;
-}this.ap.highlightSearchResults (this.searchResults);
-if (!haveResults) {
-this.ap.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.finished_searching"));
-this.resIndex = -1;
-this.seqIndex = 0;
-} else {
-if (findAll) {
-var message = (idMatch.size () > 0) ? "" + idMatch.size () + " IDs" : "";
-if (idMatch.size () > 0 && this.searchResults != null && this.searchResults.getSize () > 0) {
-message += " and ";
-}if (this.searchResults != null) {
-message += this.searchResults.getSize () + " subsequence matches.";
-}this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.search_results", Clazz.newArray (-1, [searchString, message])));
-} else {
-this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.found_match_for", Clazz.newArray (-1, [searchString])));
-}}}, "~B");
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.jLabel1.setText (jalview.util.MessageManager.getString ("action.find"));
-this.jLabel1.setBounds ( new java.awt.Rectangle (3, 30, 34, 15));
-this.setLayout (null);
-this.textfield.setFont ( new java.awt.Font ("Verdana", 0, 10));
-this.textfield.setText ("");
-this.textfield.setBounds ( new java.awt.Rectangle (40, 17, 133, 21));
-this.textfield.addKeyListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$2") ? 0 : jalview.appletgui.Finder.$Finder$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$2, this, null)));
-this.textfield.addActionListener (this);
-this.findAll.setFont ( new java.awt.Font ("Verdana", 0, 10));
-this.findAll.setLabel (jalview.util.MessageManager.getString ("action.find_all"));
-this.findAll.addActionListener (this);
-this.findNext.setEnabled (false);
-this.findNext.setFont ( new java.awt.Font ("Verdana", 0, 10));
-this.findNext.setLabel (jalview.util.MessageManager.getString ("action.find_next"));
-this.findNext.addActionListener (this);
-this.actionsPanel.setBounds ( new java.awt.Rectangle (195, 5, 141, 64));
-this.actionsPanel.setLayout (this.gridLayout1);
-this.gridLayout1.setHgap (0);
-this.gridLayout1.setRows (3);
-this.gridLayout1.setVgap (2);
-this.createNewGroup.setEnabled (false);
-this.createNewGroup.setFont ( new java.awt.Font ("Verdana", 0, 10));
-this.createNewGroup.setLabel (jalview.util.MessageManager.getString ("label.new_feature"));
-this.createNewGroup.addActionListener (this);
-this.caseSensitive.setLabel (jalview.util.MessageManager.getString ("label.match_case"));
-this.caseSensitive.setBounds ( new java.awt.Rectangle (30, 39, 126, 23));
-this.searchDescription.setLabel (jalview.util.MessageManager.getString ("label.include_description"));
-this.searchDescription.setBounds ( new java.awt.Rectangle (30, 59, 170, 23));
-this.actionsPanel.add (this.findNext, null);
-this.actionsPanel.add (this.findAll, null);
-this.actionsPanel.add (this.createNewGroup, null);
-this.add (this.caseSensitive);
-this.add (this.textfield, null);
-this.add (this.jLabel1, null);
-this.add (this.actionsPanel, null);
-this.add (this.searchDescription);
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "textfield_keyTyped",
-function (e) {
-this.findNext.setEnabled (true);
-}, "java.awt.event.KeyEvent");
-c$.$Finder$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$1", java.awt.event.WindowAdapter);
-Clazz.overrideMethod (c$, "windowClosing",
-function (evt) {
-this.f$.ap.highlightSearchResults (null);
-}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-c$.$Finder$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$2", java.awt.event.KeyAdapter);
-Clazz.overrideMethod (c$, "keyTyped",
-function (e) {
-this.b$["jalview.appletgui.Finder"].textfield_keyTyped (e);
-}, "java.awt.event.KeyEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.TextField", "java.awt.GridLayout"], "jalview.appletgui.Finder", ["awt2swing.Frame", "jalview.analysis.Finder", "jalview.bin.JalviewLite", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.awt.Font", "$.Rectangle", "java.awt.event.KeyAdapter", "$.WindowAdapter"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.frame = null;
+this.searchResults = null;
+this.seqIndex = 0;
+this.resIndex = -1;
+this.jLabel1 = null;
+this.textfield = null;
+this.findAll = null;
+this.findNext = null;
+this.actionsPanel = null;
+this.gridLayout1 = null;
+this.createNewGroup = null;
+this.caseSensitive = null;
+this.searchDescription = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "Finder", awt2swing.Panel, java.awt.event.ActionListener);
+Clazz.prepareFields (c$, function () {
+this.jLabel1 = new awt2swing.Label ();
+this.textfield = new awt2swing.TextField ();
+this.findAll = new awt2swing.Button ();
+this.findNext = new awt2swing.Button ();
+this.actionsPanel = new awt2swing.Panel ();
+this.gridLayout1 = new java.awt.GridLayout ();
+this.createNewGroup = new awt2swing.Button ();
+this.caseSensitive = new awt2swing.Checkbox ();
+this.searchDescription = new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.Finder, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.av = ap.av;
+this.ap = ap;
+this.frame = new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.find"), 340, 120);
+this.frame.repaint ();
+this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$1") ? 0 : jalview.appletgui.Finder.$Finder$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$1, this, Clazz.cloneFinals ("ap", ap))));
+this.textfield.requestFocus ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.textfield) {
+this.doSearch (false);
+} else if (evt.getSource () === this.findNext) {
+this.doSearch (false);
+} else if (evt.getSource () === this.findAll) {
+this.resIndex = -1;
+this.seqIndex = 0;
+this.doSearch (true);
+} else if (evt.getSource () === this.createNewGroup) {
+this.createNewGroup_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "createNewGroup_actionPerformed",
+function () {
+var seqs = new Array (this.searchResults.getSize ());
+var features = new Array (this.searchResults.getSize ());
+for (var i = 0; i < this.searchResults.getSize (); i++) {
+seqs[i] = this.searchResults.getResultSequence (i);
+features[i] = new jalview.datamodel.SequenceFeature (this.textfield.getText ().trim (), "Search Results", null, this.searchResults.getResultStart (i), this.searchResults.getResultEnd (i), "Search Results");
+}
+if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {
+this.ap.alignFrame.sequenceFeatures.setState (true);
+this.av.setShowSequenceFeatures (true);
+this.ap.highlightSearchResults (null);
+}});
+Clazz.defineMethod (c$, "doSearch",
+function (findAll) {
+if (this.ap.av.applet.currentAlignFrame != null) {
+this.ap = this.ap.av.applet.currentAlignFrame.alignPanel;
+this.av = this.ap.av;
+}this.createNewGroup.setEnabled (false);
+var finder = new jalview.analysis.Finder (this.av.getAlignment (), this.av.getSelectionGroup (), this.seqIndex, this.resIndex);
+finder.setCaseSensitive (this.caseSensitive.getState ());
+finder.setIncludeDescription (this.searchDescription.getState ());
+finder.setFindAll (findAll);
+var searchString = this.textfield.getText ();
+finder.find (searchString);
+this.seqIndex = finder.getSeqIndex ();
+this.resIndex = finder.getResIndex ();
+this.searchResults = finder.getSearchResults ();
+var idMatch = finder.getIdMatch ();
+var haveResults = false;
+if ((idMatch.size () > 0)) {
+haveResults = true;
+this.ap.idPanel.highlightSearchResults (idMatch);
+} else {
+this.ap.idPanel.highlightSearchResults (null);
+}if (this.searchResults.getSize () > 0) {
+haveResults = true;
+this.createNewGroup.setEnabled (true);
+} else {
+this.searchResults = null;
+}this.ap.highlightSearchResults (this.searchResults);
+if (!haveResults) {
+this.ap.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.finished_searching"));
+this.resIndex = -1;
+this.seqIndex = 0;
+} else {
+if (findAll) {
+var message = (idMatch.size () > 0) ? "" + idMatch.size () + " IDs" : "";
+if (idMatch.size () > 0 && this.searchResults != null && this.searchResults.getSize () > 0) {
+message += " and ";
+}if (this.searchResults != null) {
+message += this.searchResults.getSize () + " subsequence matches.";
+}this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.search_results", Clazz.newArray (-1, [searchString, message])));
+} else {
+this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.found_match_for", Clazz.newArray (-1, [searchString])));
+}}}, "~B");
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel1.setText (jalview.util.MessageManager.getString ("action.find"));
+this.jLabel1.setBounds ( new java.awt.Rectangle (3, 30, 34, 15));
+this.setLayout (null);
+this.textfield.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.textfield.setText ("");
+this.textfield.setBounds ( new java.awt.Rectangle (40, 17, 133, 21));
+this.textfield.addKeyListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$2") ? 0 : jalview.appletgui.Finder.$Finder$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$2, this, null)));
+this.textfield.addActionListener (this);
+this.findAll.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.findAll.setLabel (jalview.util.MessageManager.getString ("action.find_all"));
+this.findAll.addActionListener (this);
+this.findNext.setEnabled (false);
+this.findNext.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.findNext.setLabel (jalview.util.MessageManager.getString ("action.find_next"));
+this.findNext.addActionListener (this);
+this.actionsPanel.setBounds ( new java.awt.Rectangle (195, 5, 141, 64));
+this.actionsPanel.setLayout (this.gridLayout1);
+this.gridLayout1.setHgap (0);
+this.gridLayout1.setRows (3);
+this.gridLayout1.setVgap (2);
+this.createNewGroup.setEnabled (false);
+this.createNewGroup.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.createNewGroup.setLabel (jalview.util.MessageManager.getString ("label.new_feature"));
+this.createNewGroup.addActionListener (this);
+this.caseSensitive.setLabel (jalview.util.MessageManager.getString ("label.match_case"));
+this.caseSensitive.setBounds ( new java.awt.Rectangle (30, 39, 126, 23));
+this.searchDescription.setLabel (jalview.util.MessageManager.getString ("label.include_description"));
+this.searchDescription.setBounds ( new java.awt.Rectangle (30, 59, 170, 23));
+this.actionsPanel.add (this.findNext, null);
+this.actionsPanel.add (this.findAll, null);
+this.actionsPanel.add (this.createNewGroup, null);
+this.add (this.caseSensitive);
+this.add (this.textfield, null);
+this.add (this.jLabel1, null);
+this.add (this.actionsPanel, null);
+this.add (this.searchDescription);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "textfield_keyTyped",
+function (e) {
+this.findNext.setEnabled (true);
+}, "java.awt.event.KeyEvent");
+c$.$Finder$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$1", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing",
+function (evt) {
+this.f$.ap.highlightSearchResults (null);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$Finder$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$2", java.awt.event.KeyAdapter);
+Clazz.overrideMethod (c$, "keyTyped",
+function (e) {
+this.b$["jalview.appletgui.Finder"].textfield_keyTyped (e);
+}, "java.awt.event.KeyEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/FontChooser.js b/bin/jalview/appletgui/FontChooser.js
index c8a21c0..a0154ca 100644
--- a/bin/jalview/appletgui/FontChooser.js
+++ b/bin/jalview/appletgui/FontChooser.js
@@ -1,259 +1,259 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ItemListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "java.awt.Font"], "jalview.appletgui.FontChooser", ["awt2swing.Frame", "$.Label", "jalview.appletgui.JVDialog", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.FlowLayout", "$.Toolkit", "java.awt.event.ActionListener"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.fontSize = null;
-this.fontStyle = null;
-this.fontName = null;
-this.scaleAsCdna = null;
-this.ok = null;
-this.cancel = null;
-this.ap = null;
-this.tp = null;
-this.oldFont = null;
-this.oldCharWidth = 0;
-this.oldScaleProtein = false;
-this.lastSelected = null;
-this.lastSelStyle = 0;
-this.lastSelSize = 0;
-this.$init = true;
-this.frame = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "FontChooser", awt2swing.Panel, java.awt.event.ItemListener);
-Clazz.prepareFields (c$, function () {
-this.fontSize = new awt2swing.Choice ();
-this.fontStyle = new awt2swing.Choice ();
-this.fontName = new awt2swing.Choice ();
-this.scaleAsCdna = new awt2swing.Checkbox ();
-this.ok = new awt2swing.Button ();
-this.cancel = new awt2swing.Button ();
-});
-Clazz.makeConstructor (c$,
-function (tp) {
-Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.tp = tp;
-this.oldFont = tp.getTreeFont ();
-this.init ();
-}, "jalview.appletgui.TreePanel");
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);
-this.ap = ap;
-this.oldFont = ap.av.getFont ();
-this.oldCharWidth = ap.av.getViewStyle ().getCharWidth ();
-this.oldScaleProtein = ap.av.getViewStyle ().isScaleProteinAsCdna ();
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.init ();
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.defineMethod (c$, "init",
-function () {
-var fonts = java.awt.Toolkit.getDefaultToolkit ().getFontList ();
-for (var i = 0; i < fonts.length; i++) {
-this.fontName.addItem (fonts[i]);
-}
-for (var i = 1; i < 31; i++) {
-this.fontSize.addItem (i + "");
-}
-this.fontStyle.addItem ("plain");
-this.fontStyle.addItem ("bold");
-this.fontStyle.addItem ("italic");
-this.fontName.select (this.oldFont.getName ());
-this.fontSize.select (this.oldFont.getSize () + "");
-this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
-this.frame = new awt2swing.Frame ();
-this.frame.add (this);
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.change_font"), 440, 115);
-this.$init = false;
-});
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-var source = evt.getSource ();
-if (source === this.fontName) {
-this.fontName_actionPerformed ();
-} else if (source === this.fontSize) {
-this.fontSize_actionPerformed ();
-} else if (source === this.fontStyle) {
-this.fontStyle_actionPerformed ();
-} else if (source === this.scaleAsCdna) {
-this.scaleAsCdna_actionPerformed ();
-}}, "java.awt.event.ItemEvent");
-Clazz.defineMethod (c$, "ok_actionPerformed",
-function () {
-this.frame.setVisible (false);
-if (this.ap != null) {
-if (this.ap.getOverviewPanel () != null) {
-this.ap.getOverviewPanel ().updateOverviewImage ();
-}}});
-Clazz.defineMethod (c$, "cancel_actionPerformed",
-function () {
-if (this.ap != null) {
-this.ap.av.setScaleProteinAsCdna (this.oldScaleProtein);
-if (this.ap.av.getCodingComplement () != null) {
-this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.oldScaleProtein);
-this.ap.alignFrame.getSplitFrame ().repaint ();
-}this.ap.av.setFont (this.oldFont);
-var style = this.ap.av.getViewStyle ();
-if (style.getCharWidth () != this.oldCharWidth) {
-style.setCharWidth (this.oldCharWidth);
-this.ap.av.setViewStyle (style);
-}this.ap.paintAlignment (true);
-} else if (this.tp != null) {
-this.tp.setTreeFont (this.oldFont);
-this.tp.treeCanvas.repaint ();
-}this.fontName.select (this.oldFont.getName ());
-this.fontSize.select (this.oldFont.getSize () + "");
-this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
-this.frame.setVisible (false);
-});
-Clazz.defineMethod (c$, "changeFont",
-function () {
-if (this.lastSelected == null) {
-this.lastSelected = this.oldFont;
-this.lastSelSize = this.oldFont.getSize ();
-this.lastSelStyle = this.oldFont.getStyle ();
-}var newFont = new java.awt.Font (this.fontName.getSelectedItem ().toString (), this.fontStyle.getSelectedIndex (), Integer.parseInt (this.fontSize.getSelectedItem ().toString ()));
-var fm = this.getGraphics ().getFontMetrics (newFont);
-var mw = fm.getStringBounds ("M", this.getGraphics ()).getWidth ();
-var iw = fm.getStringBounds ("I", this.getGraphics ()).getWidth ();
-if (mw < 1 || iw < 1) {
-this.fontName.select (this.lastSelected.getName ());
-this.fontStyle.select (new Integer (this.lastSelStyle));
-this.fontSize.select ("" + this.lastSelSize);
-var d = new jalview.appletgui.JVDialog (this.frame, jalview.util.MessageManager.getString ("label.invalid_font"), true, 350, 200);
-var mp = new awt2swing.Panel ();
-d.cancel.setVisible (false);
-mp.setLayout ( new java.awt.FlowLayout ());
-mp.add ( new awt2swing.Label ("Font doesn't have letters defined\nso cannot be used\nwith alignment data."));
-d.setMainPanel (mp);
-d.setVisible (true);
-return;
-}if (this.tp != null) {
-this.tp.setTreeFont (newFont);
-} else if (this.ap != null) {
-this.ap.av.setFont (newFont);
-this.ap.fontChanged ();
-}this.lastSelected = newFont;
-});
-Clazz.defineMethod (c$, "fontName_actionPerformed",
-function () {
-if (this.$init) {
-return;
-}this.changeFont ();
-});
-Clazz.defineMethod (c$, "fontSize_actionPerformed",
-function () {
-if (this.$init) {
-return;
-}this.changeFont ();
-});
-Clazz.defineMethod (c$, "fontStyle_actionPerformed",
-function () {
-if (this.$init) {
-return;
-}this.changeFont ();
-});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setLayout ( new java.awt.BorderLayout ());
-this.setBackground (java.awt.Color.white);
-var fontLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.font"));
-fontLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-fontLabel.setAlignment (4);
-this.fontSize.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.fontSize.addItemListener (this);
-this.fontStyle.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.fontStyle.addItemListener (this);
-var sizeLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.size"));
-sizeLabel.setAlignment (4);
-sizeLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-var styleLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.style"));
-styleLabel.setAlignment (4);
-styleLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.fontName.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.fontName.addItemListener (this);
-this.scaleAsCdna.setLabel (jalview.util.MessageManager.getString ("label.scale_as_cdna"));
-this.scaleAsCdna.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.scaleAsCdna.addItemListener (this);
-this.scaleAsCdna.setState (this.ap.av.isScaleProteinAsCdna ());
-this.ok.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
-this.ok.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$1") ? 0 : jalview.appletgui.FontChooser.$FontChooser$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$1, this, null)));
-this.cancel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
-this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
-this.cancel.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$2") ? 0 : jalview.appletgui.FontChooser.$FontChooser$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$2, this, null)));
-var fontPanel = new awt2swing.Panel ();
-fontPanel.setLayout ( new java.awt.BorderLayout ());
-var stylePanel = new awt2swing.Panel ();
-stylePanel.setLayout ( new java.awt.BorderLayout ());
-var sizePanel = new awt2swing.Panel ();
-sizePanel.setLayout ( new java.awt.BorderLayout ());
-var scalePanel = new awt2swing.Panel ();
-scalePanel.setLayout ( new java.awt.BorderLayout ());
-var okCancelPanel = new awt2swing.Panel ();
-var optionsPanel = new awt2swing.Panel ();
-fontPanel.setBackground (java.awt.Color.white);
-stylePanel.setBackground (java.awt.Color.white);
-sizePanel.setBackground (java.awt.Color.white);
-okCancelPanel.setBackground (java.awt.Color.white);
-optionsPanel.setBackground (java.awt.Color.white);
-fontPanel.add (fontLabel, "West");
-fontPanel.add (this.fontName, "Center");
-stylePanel.add (styleLabel, "West");
-stylePanel.add (this.fontStyle, "Center");
-sizePanel.add (sizeLabel, "West");
-sizePanel.add (this.fontSize, "Center");
-scalePanel.add (this.scaleAsCdna, "Center");
-okCancelPanel.add (this.ok, null);
-okCancelPanel.add (this.cancel, null);
-optionsPanel.add (fontPanel, null);
-optionsPanel.add (sizePanel, null);
-optionsPanel.add (stylePanel, null);
-this.add (optionsPanel, "North");
-if (this.ap.alignFrame.getSplitFrame () != null) {
-this.add (scalePanel, "Center");
-}this.add (okCancelPanel, "South");
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "scaleAsCdna_actionPerformed",
-function () {
-this.ap.av.setScaleProteinAsCdna (this.scaleAsCdna.getState ());
-this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.scaleAsCdna.getState ());
-this.ap.alignFrame.getSplitFrame ().adjustLayout ();
-this.ap.paintAlignment (true);
-this.ap.alignFrame.getSplitFrame ().repaint ();
-});
-c$.$FontChooser$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$1", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.b$["jalview.appletgui.FontChooser"].ok_actionPerformed ();
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$FontChooser$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$2", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.b$["jalview.appletgui.FontChooser"].cancel_actionPerformed ();
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.VERDANA_11PT = c$.prototype.VERDANA_11PT = new java.awt.Font ("Verdana", 0, 11);
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ItemListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "java.awt.Font"], "jalview.appletgui.FontChooser", ["awt2swing.Frame", "$.Label", "jalview.appletgui.JVDialog", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.FlowLayout", "$.Toolkit", "java.awt.event.ActionListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fontSize = null;
+this.fontStyle = null;
+this.fontName = null;
+this.scaleAsCdna = null;
+this.ok = null;
+this.cancel = null;
+this.ap = null;
+this.tp = null;
+this.oldFont = null;
+this.oldCharWidth = 0;
+this.oldScaleProtein = false;
+this.lastSelected = null;
+this.lastSelStyle = 0;
+this.lastSelSize = 0;
+this.$init = true;
+this.frame = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FontChooser", awt2swing.Panel, java.awt.event.ItemListener);
+Clazz.prepareFields (c$, function () {
+this.fontSize = new awt2swing.Choice ();
+this.fontStyle = new awt2swing.Choice ();
+this.fontName = new awt2swing.Choice ();
+this.scaleAsCdna = new awt2swing.Checkbox ();
+this.ok = new awt2swing.Button ();
+this.cancel = new awt2swing.Button ();
+});
+Clazz.makeConstructor (c$,
+function (tp) {
+Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.tp = tp;
+this.oldFont = tp.getTreeFont ();
+this.init ();
+}, "jalview.appletgui.TreePanel");
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);
+this.ap = ap;
+this.oldFont = ap.av.getFont ();
+this.oldCharWidth = ap.av.getViewStyle ().getCharWidth ();
+this.oldScaleProtein = ap.av.getViewStyle ().isScaleProteinAsCdna ();
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.init ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "init",
+function () {
+var fonts = java.awt.Toolkit.getDefaultToolkit ().getFontList ();
+for (var i = 0; i < fonts.length; i++) {
+this.fontName.addItem (fonts[i]);
+}
+for (var i = 1; i < 31; i++) {
+this.fontSize.addItem (i + "");
+}
+this.fontStyle.addItem ("plain");
+this.fontStyle.addItem ("bold");
+this.fontStyle.addItem ("italic");
+this.fontName.select (this.oldFont.getName ());
+this.fontSize.select (this.oldFont.getSize () + "");
+this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
+this.frame = new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.change_font"), 440, 115);
+this.$init = false;
+});
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+var source = evt.getSource ();
+if (source === this.fontName) {
+this.fontName_actionPerformed ();
+} else if (source === this.fontSize) {
+this.fontSize_actionPerformed ();
+} else if (source === this.fontStyle) {
+this.fontStyle_actionPerformed ();
+} else if (source === this.scaleAsCdna) {
+this.scaleAsCdna_actionPerformed ();
+}}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "ok_actionPerformed",
+function () {
+this.frame.setVisible (false);
+if (this.ap != null) {
+if (this.ap.getOverviewPanel () != null) {
+this.ap.getOverviewPanel ().updateOverviewImage ();
+}}});
+Clazz.defineMethod (c$, "cancel_actionPerformed",
+function () {
+if (this.ap != null) {
+this.ap.av.setScaleProteinAsCdna (this.oldScaleProtein);
+if (this.ap.av.getCodingComplement () != null) {
+this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.oldScaleProtein);
+this.ap.alignFrame.getSplitFrame ().repaint ();
+}this.ap.av.setFont (this.oldFont);
+var style = this.ap.av.getViewStyle ();
+if (style.getCharWidth () != this.oldCharWidth) {
+style.setCharWidth (this.oldCharWidth);
+this.ap.av.setViewStyle (style);
+}this.ap.paintAlignment (true);
+} else if (this.tp != null) {
+this.tp.setTreeFont (this.oldFont);
+this.tp.treeCanvas.repaint ();
+}this.fontName.select (this.oldFont.getName ());
+this.fontSize.select (this.oldFont.getSize () + "");
+this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
+this.frame.setVisible (false);
+});
+Clazz.defineMethod (c$, "changeFont",
+function () {
+if (this.lastSelected == null) {
+this.lastSelected = this.oldFont;
+this.lastSelSize = this.oldFont.getSize ();
+this.lastSelStyle = this.oldFont.getStyle ();
+}var newFont = new java.awt.Font (this.fontName.getSelectedItem ().toString (), this.fontStyle.getSelectedIndex (), Integer.parseInt (this.fontSize.getSelectedItem ().toString ()));
+var fm = this.getGraphics ().getFontMetrics (newFont);
+var mw = fm.getStringBounds ("M", this.getGraphics ()).getWidth ();
+var iw = fm.getStringBounds ("I", this.getGraphics ()).getWidth ();
+if (mw < 1 || iw < 1) {
+this.fontName.select (this.lastSelected.getName ());
+this.fontStyle.select (new Integer (this.lastSelStyle));
+this.fontSize.select ("" + this.lastSelSize);
+var d = new jalview.appletgui.JVDialog (this.frame, jalview.util.MessageManager.getString ("label.invalid_font"), true, 350, 200);
+var mp = new awt2swing.Panel ();
+d.cancel.setVisible (false);
+mp.setLayout ( new java.awt.FlowLayout ());
+mp.add ( new awt2swing.Label ("Font doesn't have letters defined\nso cannot be used\nwith alignment data."));
+d.setMainPanel (mp);
+d.setVisible (true);
+return;
+}if (this.tp != null) {
+this.tp.setTreeFont (newFont);
+} else if (this.ap != null) {
+this.ap.av.setFont (newFont);
+this.ap.fontChanged ();
+}this.lastSelected = newFont;
+});
+Clazz.defineMethod (c$, "fontName_actionPerformed",
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz.defineMethod (c$, "fontSize_actionPerformed",
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz.defineMethod (c$, "fontStyle_actionPerformed",
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout ( new java.awt.BorderLayout ());
+this.setBackground (java.awt.Color.white);
+var fontLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.font"));
+fontLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+fontLabel.setAlignment (4);
+this.fontSize.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontSize.addItemListener (this);
+this.fontStyle.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontStyle.addItemListener (this);
+var sizeLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.size"));
+sizeLabel.setAlignment (4);
+sizeLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+var styleLabel = new awt2swing.Label (jalview.util.MessageManager.getString ("label.style"));
+styleLabel.setAlignment (4);
+styleLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontName.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontName.addItemListener (this);
+this.scaleAsCdna.setLabel (jalview.util.MessageManager.getString ("label.scale_as_cdna"));
+this.scaleAsCdna.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.scaleAsCdna.addItemListener (this);
+this.scaleAsCdna.setState (this.ap.av.isScaleProteinAsCdna ());
+this.ok.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.ok.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$1") ? 0 : jalview.appletgui.FontChooser.$FontChooser$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$1, this, null)));
+this.cancel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancel.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$2") ? 0 : jalview.appletgui.FontChooser.$FontChooser$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$2, this, null)));
+var fontPanel = new awt2swing.Panel ();
+fontPanel.setLayout ( new java.awt.BorderLayout ());
+var stylePanel = new awt2swing.Panel ();
+stylePanel.setLayout ( new java.awt.BorderLayout ());
+var sizePanel = new awt2swing.Panel ();
+sizePanel.setLayout ( new java.awt.BorderLayout ());
+var scalePanel = new awt2swing.Panel ();
+scalePanel.setLayout ( new java.awt.BorderLayout ());
+var okCancelPanel = new awt2swing.Panel ();
+var optionsPanel = new awt2swing.Panel ();
+fontPanel.setBackground (java.awt.Color.white);
+stylePanel.setBackground (java.awt.Color.white);
+sizePanel.setBackground (java.awt.Color.white);
+okCancelPanel.setBackground (java.awt.Color.white);
+optionsPanel.setBackground (java.awt.Color.white);
+fontPanel.add (fontLabel, "West");
+fontPanel.add (this.fontName, "Center");
+stylePanel.add (styleLabel, "West");
+stylePanel.add (this.fontStyle, "Center");
+sizePanel.add (sizeLabel, "West");
+sizePanel.add (this.fontSize, "Center");
+scalePanel.add (this.scaleAsCdna, "Center");
+okCancelPanel.add (this.ok, null);
+okCancelPanel.add (this.cancel, null);
+optionsPanel.add (fontPanel, null);
+optionsPanel.add (sizePanel, null);
+optionsPanel.add (stylePanel, null);
+this.add (optionsPanel, "North");
+if (this.ap.alignFrame.getSplitFrame () != null) {
+this.add (scalePanel, "Center");
+}this.add (okCancelPanel, "South");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "scaleAsCdna_actionPerformed",
+function () {
+this.ap.av.setScaleProteinAsCdna (this.scaleAsCdna.getState ());
+this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.scaleAsCdna.getState ());
+this.ap.alignFrame.getSplitFrame ().adjustLayout ();
+this.ap.paintAlignment (true);
+this.ap.alignFrame.getSplitFrame ().repaint ();
+});
+c$.$FontChooser$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.FontChooser"].ok_actionPerformed ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FontChooser$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.FontChooser"].cancel_actionPerformed ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.VERDANA_11PT = c$.prototype.VERDANA_11PT = new java.awt.Font ("Verdana", 0, 11);
+});
diff --git a/bin/jalview/appletgui/IdCanvas.class b/bin/jalview/appletgui/IdCanvas.class
index c079bc6f51062c42fd86384fc19a9d3473fc7891..2c2cb6ff1ba654f1339a51514e9cab5513f6af44 100644
GIT binary patch
delta 69
zcmV-L0J{J2Kkq-V_7VYZv-c8W0SgNN1PuNFPXPe|60>C#z5xl}00#gQ0008blOGiv
bvq%=+1Owav7n3O)S^*W4@Ea7fnHyLH`W6&%
delta 87
zcmaEF|IvQKHzCIS&EJKR7Fi`VQJKx|
pV)s~>?=nbC){u@86Jp?CX8 0) {
-ss = es - vertical;
-if (ss < this.av.startSeq) {
-ss = this.av.startSeq;
-} else {
-transY = this.imgHeight - vertical * this.av.getCharHeight ();
-}} else if (vertical < 0) {
-es = ss - vertical;
-if (es > this.av.endSeq) {
-es = this.av.endSeq;
-}}this.gg.translate (0, transY);
-this.drawIds (ss, es);
-this.gg.translate (0, -transY);
-this.$fastPaint = true;
-this.repaint ();
-}, "~N");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-if (this.getSize ().height < 0 || this.getSize ().width < 0) {
-return;
-}if (this.$fastPaint) {
-this.$fastPaint = false;
-g.drawImage (this.image, 0, 0, this);
-return;
-}this.imgHeight = this.getSize ().height;
-this.imgHeight -= this.imgHeight % this.av.getCharHeight ();
-if (this.imgHeight < 1) {
-return;
-}if (this.image == null || this.imgHeight != this.image.getHeight (this)) {
-this.image = this.createImage (this.getSize ().width, this.imgHeight);
-this.gg = this.image.getGraphics ();
-this.gg.setFont (this.av.getFont ());
-}this.gg.setColor (java.awt.Color.white);
-var italic = new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
-this.gg.setFont (italic);
-this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-this.drawIds (this.av.startSeq, this.av.endSeq);
-g.drawImage (this.image, 0, 0, this);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "drawIds",
-function (starty, endy) {
-var italic = new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
-this.avcharHeight = this.av.getCharHeight ();
-this.gg.setFont (italic);
-var currentColor = java.awt.Color.white;
-var currentTextColor = java.awt.Color.black;
-var doHiddenCheck = this.av.isDisplayReferenceSeq () || this.av.hasHiddenRows ();
-var hiddenRows = this.av.hasHiddenRows () && this.av.getShowHiddenMarkers ();
-if (this.av.getWrapAlignment ()) {
-var maxwidth = this.av.getAlignment ().getWidth ();
-var alheight = this.av.getAlignment ().getHeight ();
-if (this.av.hasHiddenColumns ()) {
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
-}var annotationHeight = 0;
-var labels = null;
-if (this.av.isShowAnnotation ()) {
-var ap = new jalview.appletgui.AnnotationPanel (this.av);
-annotationHeight = ap.adjustPanelHeight ();
-labels = new jalview.appletgui.AnnotationLabels (this.av);
-}var hgap = this.avcharHeight;
-if (this.av.getScaleAboveWrapped ()) {
-hgap += this.avcharHeight;
-}var cHeight = alheight * this.avcharHeight + hgap + annotationHeight;
-var rowSize = this.av.getEndRes () - this.av.getStartRes ();
-for (var ypos = hgap, row = this.av.startRes; (ypos <= this.getSize ().height) && (row < maxwidth); ypos += cHeight, row += rowSize) {
-for (var i = starty; i < alheight; i++) {
-var s = this.av.getAlignment ().getSequenceAt (i);
-this.gg.setFont (italic);
-if (doHiddenCheck) {
-this.setHiddenFont (s);
-}this.drawIdString (this.gg, hiddenRows, s, i, 0, ypos);
-}
-if (labels != null) {
-this.gg.translate (0, ypos + (alheight * this.avcharHeight));
-labels.drawComponent (this.gg, this.getSize ().width);
-this.gg.translate (0, -ypos - (alheight * this.avcharHeight));
-}}
-} else {
-var seq;
-for (var i = starty; i < endy; i++) {
-seq = this.av.getAlignment ().getSequenceAt (i);
-if (seq == null) {
-continue;
-}this.gg.setFont (italic);
-if (doHiddenCheck) {
-this.setHiddenFont (seq);
-}if ((this.searchResults != null) && this.searchResults.contains (seq)) {
-currentColor = java.awt.Color.black;
-currentTextColor = java.awt.Color.white;
-} else if ((this.av.getSelectionGroup () != null) && this.av.getSelectionGroup ().getSequences (null).contains (seq)) {
-currentColor = java.awt.Color.lightGray;
-currentTextColor = java.awt.Color.black;
-} else {
-currentColor = this.av.getSequenceColour (seq);
-currentTextColor = java.awt.Color.black;
-}this.gg.setColor (currentColor);
-this.gg.fillRect (0, (i - starty) * this.avcharHeight, this.getSize ().width, this.avcharHeight);
-this.gg.setColor (currentTextColor);
-this.gg.drawString (seq.getDisplayId (this.av.getShowJVSuffix ()), 0, (((i - starty) * this.avcharHeight) + this.avcharHeight) - (Clazz.doubleToInt (this.avcharHeight / 5)));
-if (hiddenRows) {
-this.drawMarker (i, starty, 0);
-}}
-}}, "~N,~N");
-Clazz.defineMethod (c$, "setHighlighted",
-function (list) {
-this.searchResults = list;
-this.repaint ();
-}, "java.util.List");
-Clazz.defineMethod (c$, "drawMarker",
-function (i, starty, yoffset) {
-var hseqs = this.av.getAlignment ().getHiddenSequences ().hiddenSequences;
-var hSize = hseqs.length;
-var hiddenIndex = i;
-var lastIndex = i - 1;
-var nextIndex = i + 1;
-for (var j = 0; j < hSize; j++) {
-if (hseqs[j] != null) {
-if (j - 1 < hiddenIndex) {
-hiddenIndex++;
-}if (j - 1 < lastIndex) {
-lastIndex++;
-}if (j - 1 < nextIndex) {
-nextIndex++;
-}}}
-var below = (hiddenIndex > lastIndex + 1);
-var above = (nextIndex > hiddenIndex + 1);
-this.gg.setColor (java.awt.Color.blue);
-if (below) {
-this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]), Clazz.newIntArray (-1, [(i - starty) * this.avcharHeight + yoffset, (i - starty) * this.avcharHeight + yoffset + Clazz.doubleToInt (this.avcharHeight / 4), (i - starty) * this.avcharHeight + yoffset]), 3);
-}if (above) {
-this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]), Clazz.newIntArray (-1, [(i - starty + 1) * this.avcharHeight + yoffset, (i - starty + 1) * this.avcharHeight + yoffset - Clazz.doubleToInt (this.avcharHeight / 4), (i - starty + 1) * this.avcharHeight + yoffset]), 3);
-}}, "~N,~N,~N");
-Clazz.defineMethod (c$, "setHiddenFont",
-function (seq) {
-var bold = new java.awt.Font (this.av.getFont ().getName (), 1, this.av.getFont ().getSize ());
-if (this.av.isHiddenRepSequence (seq)) {
-this.gg.setFont (bold);
-return true;
-}return false;
-}, "jalview.datamodel.SequenceI");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel"], "jalview.appletgui.IdCanvas", ["jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.PaintRefresher", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.showScores = true;
+this.maxIdLength = -1;
+this.maxIdStr = null;
+this.image = null;
+this.gg = null;
+this.imgHeight = 0;
+this.$fastPaint = false;
+this.searchResults = null;
+this.avcharHeight = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "IdCanvas", awt2swing.Panel);
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.IdCanvas, []);
+this.setLayout (null);
+this.av = av;
+jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "drawIdString",
+function (gg, hiddenRows, s, i, starty, ypos) {
+var charHeight = this.av.getCharHeight ();
+if (this.searchResults != null && this.searchResults.contains (s)) {
+gg.setColor (java.awt.Color.black);
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.white);
+} else if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSequences (null).contains (s)) {
+gg.setColor (java.awt.Color.lightGray);
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.white);
+} else {
+gg.setColor (this.av.getSequenceColour (s));
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.black);
+}gg.drawString (s.getDisplayId (this.av.getShowJVSuffix ()), 0, ((i - starty) * charHeight) + ypos + charHeight - (Clazz.doubleToInt (charHeight / 5)));
+if (hiddenRows) {
+this.drawMarker (i, starty, ypos);
+}}, "java.awt.Graphics,~B,jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "fastPaint",
+function (vertical) {
+if (this.gg == null) {
+this.repaint ();
+return;
+}this.gg.copyArea (0, 0, this.getSize ().width, this.imgHeight, 0, -vertical * this.av.getCharHeight ());
+var ss = this.av.startSeq;
+var es = this.av.endSeq;
+var transY = 0;
+if (vertical > 0) {
+ss = es - vertical;
+if (ss < this.av.startSeq) {
+ss = this.av.startSeq;
+} else {
+transY = this.imgHeight - vertical * this.av.getCharHeight ();
+}} else if (vertical < 0) {
+es = ss - vertical;
+if (es > this.av.endSeq) {
+es = this.av.endSeq;
+}}this.gg.translate (0, transY);
+this.drawIds (ss, es);
+this.gg.translate (0, -transY);
+this.$fastPaint = true;
+this.repaint ();
+}, "~N");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+if (this.getSize ().height < 0 || this.getSize ().width < 0) {
+return;
+}if (this.$fastPaint) {
+this.$fastPaint = false;
+g.drawImage (this.image, 0, 0, this);
+return;
+}this.imgHeight = this.getSize ().height;
+this.imgHeight -= this.imgHeight % this.av.getCharHeight ();
+if (this.imgHeight < 1) {
+return;
+}if (this.image == null || this.imgHeight != this.image.getHeight (this)) {
+this.image = this.createImage (this.getSize ().width, this.imgHeight);
+this.gg = this.image.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+}this.gg.setColor (java.awt.Color.white);
+var italic = new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
+this.gg.setFont (italic);
+this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+this.drawIds (this.av.startSeq, this.av.endSeq);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawIds",
+function (starty, endy) {
+var italic = new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
+this.avcharHeight = this.av.getCharHeight ();
+this.gg.setFont (italic);
+var currentColor = java.awt.Color.white;
+var currentTextColor = java.awt.Color.black;
+var doHiddenCheck = this.av.isDisplayReferenceSeq () || this.av.hasHiddenRows ();
+var hiddenRows = this.av.hasHiddenRows () && this.av.getShowHiddenMarkers ();
+if (this.av.getWrapAlignment ()) {
+var maxwidth = this.av.getAlignment ().getWidth ();
+var alheight = this.av.getAlignment ().getHeight ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}var annotationHeight = 0;
+var labels = null;
+if (this.av.isShowAnnotation ()) {
+var ap = new jalview.appletgui.AnnotationPanel (this.av);
+annotationHeight = ap.adjustPanelHeight ();
+labels = new jalview.appletgui.AnnotationLabels (this.av);
+}var hgap = this.avcharHeight;
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.avcharHeight;
+}var cHeight = alheight * this.avcharHeight + hgap + annotationHeight;
+var rowSize = this.av.getEndRes () - this.av.getStartRes ();
+for (var ypos = hgap, row = this.av.startRes; (ypos <= this.getSize ().height) && (row < maxwidth); ypos += cHeight, row += rowSize) {
+for (var i = starty; i < alheight; i++) {
+var s = this.av.getAlignment ().getSequenceAt (i);
+this.gg.setFont (italic);
+if (doHiddenCheck) {
+this.setHiddenFont (s);
+}this.drawIdString (this.gg, hiddenRows, s, i, 0, ypos);
+}
+if (labels != null) {
+this.gg.translate (0, ypos + (alheight * this.avcharHeight));
+labels.drawComponent (this.gg, this.getSize ().width);
+this.gg.translate (0, -ypos - (alheight * this.avcharHeight));
+}}
+} else {
+var seq;
+for (var i = starty; i < endy; i++) {
+seq = this.av.getAlignment ().getSequenceAt (i);
+if (seq == null) {
+continue;
+}this.gg.setFont (italic);
+if (doHiddenCheck) {
+this.setHiddenFont (seq);
+}if ((this.searchResults != null) && this.searchResults.contains (seq)) {
+currentColor = java.awt.Color.black;
+currentTextColor = java.awt.Color.white;
+} else if ((this.av.getSelectionGroup () != null) && this.av.getSelectionGroup ().getSequences (null).contains (seq)) {
+currentColor = java.awt.Color.lightGray;
+currentTextColor = java.awt.Color.black;
+} else {
+currentColor = this.av.getSequenceColour (seq);
+currentTextColor = java.awt.Color.black;
+}this.gg.setColor (currentColor);
+this.gg.fillRect (0, (i - starty) * this.avcharHeight, this.getSize ().width, this.avcharHeight);
+this.gg.setColor (currentTextColor);
+this.gg.drawString (seq.getDisplayId (this.av.getShowJVSuffix ()), 0, (((i - starty) * this.avcharHeight) + this.avcharHeight) - (Clazz.doubleToInt (this.avcharHeight / 5)));
+if (hiddenRows) {
+this.drawMarker (i, starty, 0);
+}}
+}}, "~N,~N");
+Clazz.defineMethod (c$, "setHighlighted",
+function (list) {
+this.searchResults = list;
+this.repaint ();
+}, "java.util.List");
+Clazz.defineMethod (c$, "drawMarker",
+function (i, starty, yoffset) {
+var hseqs = this.av.getAlignment ().getHiddenSequences ().hiddenSequences;
+var hSize = hseqs.length;
+var hiddenIndex = i;
+var lastIndex = i - 1;
+var nextIndex = i + 1;
+for (var j = 0; j < hSize; j++) {
+if (hseqs[j] != null) {
+if (j - 1 < hiddenIndex) {
+hiddenIndex++;
+}if (j - 1 < lastIndex) {
+lastIndex++;
+}if (j - 1 < nextIndex) {
+nextIndex++;
+}}}
+var below = (hiddenIndex > lastIndex + 1);
+var above = (nextIndex > hiddenIndex + 1);
+this.gg.setColor (java.awt.Color.blue);
+if (below) {
+this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]), Clazz.newIntArray (-1, [(i - starty) * this.avcharHeight + yoffset, (i - starty) * this.avcharHeight + yoffset + Clazz.doubleToInt (this.avcharHeight / 4), (i - starty) * this.avcharHeight + yoffset]), 3);
+}if (above) {
+this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]), Clazz.newIntArray (-1, [(i - starty + 1) * this.avcharHeight + yoffset, (i - starty + 1) * this.avcharHeight + yoffset - Clazz.doubleToInt (this.avcharHeight / 4), (i - starty + 1) * this.avcharHeight + yoffset]), 3);
+}}, "~N,~N,~N");
+Clazz.defineMethod (c$, "setHiddenFont",
+function (seq) {
+var bold = new java.awt.Font (this.av.getFont ().getName (), 1, this.av.getFont ().getSize ());
+if (this.av.isHiddenRepSequence (seq)) {
+this.gg.setFont (bold);
+return true;
+}return false;
+}, "jalview.datamodel.SequenceI");
+});
diff --git a/bin/jalview/appletgui/IdPanel.js b/bin/jalview/appletgui/IdPanel.js
index 1419a24..4f70687 100644
--- a/bin/jalview/appletgui/IdPanel.js
+++ b/bin/jalview/appletgui/IdPanel.js
@@ -1,285 +1,285 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread", "java.util.Vector"], "jalview.appletgui.IdPanel", ["jalview.appletgui.APopupMenu", "$.IdCanvas", "$.PaintRefresher", "$.Tooltip", "jalview.datamodel.SequenceGroup", "jalview.util.UrlLink", "java.awt.BorderLayout", "java.lang.Float", "$.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.idCanvas = null;
-this.av = null;
-this.alignPanel = null;
-this.scrollThread = null;
-this.lastid = -1;
-this.mouseDragging = false;
-this.links = null;
-this.tooltip = null;
-if (!Clazz.isClassDefined ("jalview.appletgui.IdPanel.ScrollThread")) {
-jalview.appletgui.IdPanel.$IdPanel$ScrollThread$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "IdPanel", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
-Clazz.prepareFields (c$, function () {
-this.links = new java.util.Vector ();
-});
-Clazz.makeConstructor (c$,
-function (av, parent) {
-Clazz.superConstructor (this, jalview.appletgui.IdPanel, []);
-this.setName ("idPanel");
-this.av = av;
-this.alignPanel = parent;
-this.idCanvas = new jalview.appletgui.IdCanvas (av);
-this.setLayout ( new java.awt.BorderLayout ());
-this.add (this.idCanvas, "Center");
-this.idCanvas.addMouseListener (this);
-this.idCanvas.addMouseMotionListener (this);
-if (av.applet != null) {
-av.applet.getLinkParams (this.links);
-}{
-var srsPos = this.links.indexOf ("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
-if (srsPos > -1) {
-this.links.setElementAt ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$", srsPos);
-}}if (this.links.size () < 1) {
-this.links = new java.util.Vector ();
-this.links.addElement ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");
-}}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (e) {
-var seq = this.alignPanel.seqPanel.findSeq (e);
-var sequence = this.av.getAlignment ().getSequenceAt (seq);
-var tooltiptext = new StringBuffer ();
-if (sequence != null) {
-if (sequence.getDescription () != null) {
-tooltiptext.append (sequence.getDescription ());
-tooltiptext.append ("\n");
-}var sf = sequence.getSequenceFeatures ();
-for (var sl = 0; sf != null && sl < sf.length; sl++) {
-if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
-var nl = false;
-if (sf[sl].getFeatureGroup () != null) {
-tooltiptext.append (sf[sl].getFeatureGroup ());
-nl = true;
-};if (sf[sl].getType () != null) {
-tooltiptext.append (" ");
-tooltiptext.append (sf[sl].getType ());
-nl = true;
-};if (sf[sl].getDescription () != null) {
-tooltiptext.append (" ");
-tooltiptext.append (sf[sl].getDescription ());
-nl = true;
-};if (!Float.isNaN (sf[sl].getScore ()) && sf[sl].getScore () != 0) {
-tooltiptext.append (" Score = ");
-tooltiptext.append (sf[sl].getScore ());
-nl = true;
-};if (sf[sl].getStatus () != null && sf[sl].getStatus ().length > 0) {
-tooltiptext.append (" (");
-tooltiptext.append (sf[sl].getStatus ());
-tooltiptext.append (")");
-nl = true;
-};if (nl) {
-tooltiptext.append ("\n");
-}}}
-}if (tooltiptext.length () == 0) {
-if (this.tooltip != null) {
-this.tooltip.setVisible (false);
-}this.tooltip = null;
-tooltiptext = null;
-return;
-}if (this.tooltip == null) {
-this.tooltip = new jalview.appletgui.Tooltip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString (), this.idCanvas);
-} else {
-this.tooltip.setTip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString ());
-}tooltiptext = null;
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (e) {
-this.mouseDragging = true;
-var seq = Math.max (0, this.alignPanel.seqPanel.findSeq (e));
-if (seq < this.lastid) {
-this.selectSeqs (this.lastid - 1, seq);
-} else if (seq > this.lastid) {
-this.selectSeqs (this.lastid + 1, seq);
-}this.lastid = seq;
-this.alignPanel.paintAlignment (false);
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (e) {
-if (e.getClickCount () < 2) {
-return;
-}var seq = this.alignPanel.seqPanel.findSeq (e);
-var sq = this.av.getAlignment ().getSequenceAt (seq);
-if (sq == null) {
-return;
-}var id = sq.getName ();
-var target = null;
-var url = null;
-var i = 0;
-while (url == null && i < this.links.size ()) {
-url = this.links.elementAt (i++).toString ();
-var urlLink = null;
-try {
-urlLink = new jalview.util.UrlLink (url);
-target = urlLink.getTarget ();
-} catch (foo) {
-if (Clazz.exceptionOf (foo, Exception)) {
-System.err.println ("Exception for URLLink '" + url + "'");
-foo.printStackTrace ();
-url = null;
-continue;
-} else {
-throw foo;
-}
-}
-;if (!urlLink.isValid ()) {
-System.err.println (urlLink.getInvalidMessage ());
-url = null;
-continue;
-}var urls = urlLink.makeUrls (id, true);
-if (urls == null || urls[0] == null || urls[0].length < 1) {
-url = null;
-continue;
-}url = urls[1];
-}
-try {
-this.alignPanel.alignFrame.showURL (url, target);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (e) {
-if (this.scrollThread != null) {
-this.scrollThread.running = false;
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (e) {
-if (this.av.getWrapAlignment ()) {
-return;
-}if (this.mouseDragging && e.getY () < 0 && this.av.getStartSeq () > 0) {
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, true);
-}if (this.mouseDragging && e.getY () >= this.getSize ().height && this.av.getAlignment ().getHeight () > this.av.getEndSeq ()) {
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, false);
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (e) {
-if (e.getClickCount () > 1) {
-return;
-}var y = e.getY ();
-if (this.av.getWrapAlignment ()) {
-y -= 2 * this.av.getCharHeight ();
-}var seq = this.alignPanel.seqPanel.findSeq (e);
-if ((e.getModifiers () & 4) == 4) {
-var sq = this.av.getAlignment ().getSequenceAt (seq);
-var nlinks = new java.util.Vector ();
-for (var l = 0, lSize = this.links.size (); l < lSize; l++) {
-nlinks.addElement (this.links.elementAt (l));
-}
-var sf = sq == null ? null : sq.getSequenceFeatures ();
-for (var sl = 0; sf != null && sl < sf.length; sl++) {
-if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
-if (sf[sl].links != null && sf[sl].links.size () > 0) {
-for (var l = 0, lSize = sf[sl].links.size (); l < lSize; l++) {
-nlinks.addElement (sf[sl].links.elementAt (l));
-}
-}}}
-var popup = new jalview.appletgui.APopupMenu (this.alignPanel, sq, nlinks);
-this.add (popup);
-popup.show (this, e.getX (), e.getY ());
-return;
-}if ((this.av.getSelectionGroup () == null) || ((!e.isControlDown () && !e.isShiftDown ()) && this.av.getSelectionGroup () != null)) {
-this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
-this.av.getSelectionGroup ().setStartRes (0);
-this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
-}if (e.isShiftDown () && this.lastid != -1) {
-this.selectSeqs (this.lastid, seq);
-} else {
-this.selectSeq (seq);
-}this.alignPanel.paintAlignment (false);
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "selectSeq",
-function (seq) {
-this.lastid = seq;
-var pickedSeq = this.av.getAlignment ().getSequenceAt (seq);
-this.av.getSelectionGroup ().addOrRemove (pickedSeq, true);
-}, "~N");
-Clazz.defineMethod (c$, "selectSeqs",
-function (start, end) {
-this.lastid = start;
-if (end >= this.av.getAlignment ().getHeight ()) {
-end = this.av.getAlignment ().getHeight () - 1;
-}if (end < start) {
-var tmp = start;
-start = end;
-end = tmp;
-this.lastid = end;
-}if (this.av.getSelectionGroup () == null) {
-this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
-}for (var i = start; i <= end; i++) {
-this.av.getSelectionGroup ().addSequence (this.av.getAlignment ().getSequenceAt (i), i == end);
-}
-}, "~N,~N");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (e) {
-if (this.scrollThread != null) {
-this.scrollThread.running = false;
-}if (this.av.getSelectionGroup () != null) {
-this.av.getSelectionGroup ().recalcConservation ();
-}this.mouseDragging = false;
-jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
-this.av.sendSelection ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "highlightSearchResults",
-function (list) {
-this.idCanvas.setHighlighted (list);
-if (list == null) {
-return;
-}var index = this.av.getAlignment ().findIndex (list.get (0));
-if (this.av.getStartSeq () > index || this.av.getEndSeq () < index) {
-this.alignPanel.setScrollValues (this.av.getStartRes (), index);
-}}, "java.util.List");
-c$.$IdPanel$ScrollThread$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.running = false;
-this.up = true;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui.IdPanel, "ScrollThread", Thread);
-Clazz.makeConstructor (c$,
-function (a) {
-Clazz.superConstructor (this, jalview.appletgui.IdPanel.ScrollThread, []);
-this.up = a;
-this.start ();
-}, "~B");
-Clazz.defineMethod (c$, "stopScrolling",
-function () {
-this.running = false;
-});
-Clazz.overrideMethod (c$, "run",
-function () {
-this.running = true;
-while (this.running) {
-if (this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp (this.up)) {
-var a = this.b$["jalview.appletgui.IdPanel"].av.getStartSeq ();
-if (!this.up) {
-a = this.b$["jalview.appletgui.IdPanel"].av.getEndSeq ();
-}if (a < this.b$["jalview.appletgui.IdPanel"].lastid) {
-this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid - 1, a);
-} else if (a > this.b$["jalview.appletgui.IdPanel"].lastid && a < this.b$["jalview.appletgui.IdPanel"].av.getAlignment ().getHeight ()) {
-this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid + 1, a);
-}this.b$["jalview.appletgui.IdPanel"].lastid = a;
-} else {
-this.running = false;
-}this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment (true);
-try {
-Thread.sleep (100);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-}
-});
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread", "java.util.Vector"], "jalview.appletgui.IdPanel", ["jalview.appletgui.APopupMenu", "$.IdCanvas", "$.PaintRefresher", "$.Tooltip", "jalview.datamodel.SequenceGroup", "jalview.util.UrlLink", "java.awt.BorderLayout", "java.lang.Float", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.idCanvas = null;
+this.av = null;
+this.alignPanel = null;
+this.scrollThread = null;
+this.lastid = -1;
+this.mouseDragging = false;
+this.links = null;
+this.tooltip = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.IdPanel.ScrollThread")) {
+jalview.appletgui.IdPanel.$IdPanel$ScrollThread$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "IdPanel", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.prepareFields (c$, function () {
+this.links = new java.util.Vector ();
+});
+Clazz.makeConstructor (c$,
+function (av, parent) {
+Clazz.superConstructor (this, jalview.appletgui.IdPanel, []);
+this.setName ("idPanel");
+this.av = av;
+this.alignPanel = parent;
+this.idCanvas = new jalview.appletgui.IdCanvas (av);
+this.setLayout ( new java.awt.BorderLayout ());
+this.add (this.idCanvas, "Center");
+this.idCanvas.addMouseListener (this);
+this.idCanvas.addMouseMotionListener (this);
+if (av.applet != null) {
+av.applet.getLinkParams (this.links);
+}{
+var srsPos = this.links.indexOf ("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
+if (srsPos > -1) {
+this.links.setElementAt ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$", srsPos);
+}}if (this.links.size () < 1) {
+this.links = new java.util.Vector ();
+this.links.addElement ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");
+}}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (e) {
+var seq = this.alignPanel.seqPanel.findSeq (e);
+var sequence = this.av.getAlignment ().getSequenceAt (seq);
+var tooltiptext = new StringBuffer ();
+if (sequence != null) {
+if (sequence.getDescription () != null) {
+tooltiptext.append (sequence.getDescription ());
+tooltiptext.append ("\n");
+}var sf = sequence.getSequenceFeatures ();
+for (var sl = 0; sf != null && sl < sf.length; sl++) {
+if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
+var nl = false;
+if (sf[sl].getFeatureGroup () != null) {
+tooltiptext.append (sf[sl].getFeatureGroup ());
+nl = true;
+};if (sf[sl].getType () != null) {
+tooltiptext.append (" ");
+tooltiptext.append (sf[sl].getType ());
+nl = true;
+};if (sf[sl].getDescription () != null) {
+tooltiptext.append (" ");
+tooltiptext.append (sf[sl].getDescription ());
+nl = true;
+};if (!Float.isNaN (sf[sl].getScore ()) && sf[sl].getScore () != 0) {
+tooltiptext.append (" Score = ");
+tooltiptext.append (sf[sl].getScore ());
+nl = true;
+};if (sf[sl].getStatus () != null && sf[sl].getStatus ().length > 0) {
+tooltiptext.append (" (");
+tooltiptext.append (sf[sl].getStatus ());
+tooltiptext.append (")");
+nl = true;
+};if (nl) {
+tooltiptext.append ("\n");
+}}}
+}if (tooltiptext.length () == 0) {
+if (this.tooltip != null) {
+this.tooltip.setVisible (false);
+}this.tooltip = null;
+tooltiptext = null;
+return;
+}if (this.tooltip == null) {
+this.tooltip = new jalview.appletgui.Tooltip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString (), this.idCanvas);
+} else {
+this.tooltip.setTip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString ());
+}tooltiptext = null;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (e) {
+this.mouseDragging = true;
+var seq = Math.max (0, this.alignPanel.seqPanel.findSeq (e));
+if (seq < this.lastid) {
+this.selectSeqs (this.lastid - 1, seq);
+} else if (seq > this.lastid) {
+this.selectSeqs (this.lastid + 1, seq);
+}this.lastid = seq;
+this.alignPanel.paintAlignment (false);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (e) {
+if (e.getClickCount () < 2) {
+return;
+}var seq = this.alignPanel.seqPanel.findSeq (e);
+var sq = this.av.getAlignment ().getSequenceAt (seq);
+if (sq == null) {
+return;
+}var id = sq.getName ();
+var target = null;
+var url = null;
+var i = 0;
+while (url == null && i < this.links.size ()) {
+url = this.links.elementAt (i++).toString ();
+var urlLink = null;
+try {
+urlLink = new jalview.util.UrlLink (url);
+target = urlLink.getTarget ();
+} catch (foo) {
+if (Clazz.exceptionOf (foo, Exception)) {
+System.err.println ("Exception for URLLink '" + url + "'");
+foo.printStackTrace ();
+url = null;
+continue;
+} else {
+throw foo;
+}
+}
+;if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+url = null;
+continue;
+}var urls = urlLink.makeUrls (id, true);
+if (urls == null || urls[0] == null || urls[0].length < 1) {
+url = null;
+continue;
+}url = urls[1];
+}
+try {
+this.alignPanel.alignFrame.showURL (url, target);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (e) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (e) {
+if (this.av.getWrapAlignment ()) {
+return;
+}if (this.mouseDragging && e.getY () < 0 && this.av.getStartSeq () > 0) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, true);
+}if (this.mouseDragging && e.getY () >= this.getSize ().height && this.av.getAlignment ().getHeight () > this.av.getEndSeq ()) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, false);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (e) {
+if (e.getClickCount () > 1) {
+return;
+}var y = e.getY ();
+if (this.av.getWrapAlignment ()) {
+y -= 2 * this.av.getCharHeight ();
+}var seq = this.alignPanel.seqPanel.findSeq (e);
+if ((e.getModifiers () & 4) == 4) {
+var sq = this.av.getAlignment ().getSequenceAt (seq);
+var nlinks = new java.util.Vector ();
+for (var l = 0, lSize = this.links.size (); l < lSize; l++) {
+nlinks.addElement (this.links.elementAt (l));
+}
+var sf = sq == null ? null : sq.getSequenceFeatures ();
+for (var sl = 0; sf != null && sl < sf.length; sl++) {
+if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
+if (sf[sl].links != null && sf[sl].links.size () > 0) {
+for (var l = 0, lSize = sf[sl].links.size (); l < lSize; l++) {
+nlinks.addElement (sf[sl].links.elementAt (l));
+}
+}}}
+var popup = new jalview.appletgui.APopupMenu (this.alignPanel, sq, nlinks);
+this.add (popup);
+popup.show (this, e.getX (), e.getY ());
+return;
+}if ((this.av.getSelectionGroup () == null) || ((!e.isControlDown () && !e.isShiftDown ()) && this.av.getSelectionGroup () != null)) {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+this.av.getSelectionGroup ().setStartRes (0);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+}if (e.isShiftDown () && this.lastid != -1) {
+this.selectSeqs (this.lastid, seq);
+} else {
+this.selectSeq (seq);
+}this.alignPanel.paintAlignment (false);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "selectSeq",
+function (seq) {
+this.lastid = seq;
+var pickedSeq = this.av.getAlignment ().getSequenceAt (seq);
+this.av.getSelectionGroup ().addOrRemove (pickedSeq, true);
+}, "~N");
+Clazz.defineMethod (c$, "selectSeqs",
+function (start, end) {
+this.lastid = start;
+if (end >= this.av.getAlignment ().getHeight ()) {
+end = this.av.getAlignment ().getHeight () - 1;
+}if (end < start) {
+var tmp = start;
+start = end;
+end = tmp;
+this.lastid = end;
+}if (this.av.getSelectionGroup () == null) {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+}for (var i = start; i <= end; i++) {
+this.av.getSelectionGroup ().addSequence (this.av.getAlignment ().getSequenceAt (i), i == end);
+}
+}, "~N,~N");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (e) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+}if (this.av.getSelectionGroup () != null) {
+this.av.getSelectionGroup ().recalcConservation ();
+}this.mouseDragging = false;
+jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "highlightSearchResults",
+function (list) {
+this.idCanvas.setHighlighted (list);
+if (list == null) {
+return;
+}var index = this.av.getAlignment ().findIndex (list.get (0));
+if (this.av.getStartSeq () > index || this.av.getEndSeq () < index) {
+this.alignPanel.setScrollValues (this.av.getStartRes (), index);
+}}, "java.util.List");
+c$.$IdPanel$ScrollThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.running = false;
+this.up = true;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.IdPanel, "ScrollThread", Thread);
+Clazz.makeConstructor (c$,
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.IdPanel.ScrollThread, []);
+this.up = a;
+this.start ();
+}, "~B");
+Clazz.defineMethod (c$, "stopScrolling",
+function () {
+this.running = false;
+});
+Clazz.overrideMethod (c$, "run",
+function () {
+this.running = true;
+while (this.running) {
+if (this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp (this.up)) {
+var a = this.b$["jalview.appletgui.IdPanel"].av.getStartSeq ();
+if (!this.up) {
+a = this.b$["jalview.appletgui.IdPanel"].av.getEndSeq ();
+}if (a < this.b$["jalview.appletgui.IdPanel"].lastid) {
+this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid - 1, a);
+} else if (a > this.b$["jalview.appletgui.IdPanel"].lastid && a < this.b$["jalview.appletgui.IdPanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid + 1, a);
+}this.b$["jalview.appletgui.IdPanel"].lastid = a;
+} else {
+this.running = false;
+}this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment (true);
+try {
+Thread.sleep (100);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/IdwidthAdjuster.js b/bin/jalview/appletgui/IdwidthAdjuster.js
index 80a0c59..e7b92f7 100644
--- a/bin/jalview/appletgui/IdwidthAdjuster.js
+++ b/bin/jalview/appletgui/IdwidthAdjuster.js
@@ -1,66 +1,66 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.IdwidthAdjuster", ["java.awt.Color", "$.Toolkit"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.active = false;
-this.oldX = 0;
-this.image = null;
-this.ap = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "IdwidthAdjuster", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.IdwidthAdjuster, []);
-this.setName ("IdwidthAdjuster");
-this.setLayout (null);
-this.ap = ap;
-var url = this.getClass ().getResource ("/images/idwidth.gif");
-if (url != null) {
-this.image = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
-}this.addMouseListener (this);
-this.addMouseMotionListener (this);
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-this.oldX = evt.getX ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-this.active = false;
-this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-this.active = true;
-this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-this.active = false;
-this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-this.active = true;
-var d = this.ap.idPanel.idCanvas.getSize ();
-var dif = evt.getX () - this.oldX;
-var newWidth = d.width + dif;
-if (newWidth > 20 || dif > 0) {
-this.ap.setIdWidth (newWidth, d.height);
-this.setSize (newWidth, this.getSize ().height);
-this.oldX = evt.getX ();
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "PaintComponent",
-function (g) {
-g.setColor (java.awt.Color.white);
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-if (this.active) {
-if (this.image != null) {
-g.drawImage (this.image, this.getSize ().width - 20, 2, this);
-}}}, "java.awt.Graphics");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.IdwidthAdjuster", ["java.awt.Color", "$.Toolkit"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.active = false;
+this.oldX = 0;
+this.image = null;
+this.ap = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "IdwidthAdjuster", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.IdwidthAdjuster, []);
+this.setName ("IdwidthAdjuster");
+this.setLayout (null);
+this.ap = ap;
+var url = this.getClass ().getResource ("/images/idwidth.gif");
+if (url != null) {
+this.image = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+this.oldX = evt.getX ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.active = false;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+this.active = true;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+this.active = false;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+this.active = true;
+var d = this.ap.idPanel.idCanvas.getSize ();
+var dif = evt.getX () - this.oldX;
+var newWidth = d.width + dif;
+if (newWidth > 20 || dif > 0) {
+this.ap.setIdWidth (newWidth, d.height);
+this.setSize (newWidth, this.getSize ().height);
+this.oldX = evt.getX ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "PaintComponent",
+function (g) {
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+if (this.active) {
+if (this.image != null) {
+g.drawImage (this.image, this.getSize ().width - 20, 2, this);
+}}}, "java.awt.Graphics");
+});
diff --git a/bin/jalview/appletgui/JVDialog.js b/bin/jalview/appletgui/JVDialog.js
index 6f85ed1..ed9ee14 100644
--- a/bin/jalview/appletgui/JVDialog.js
+++ b/bin/jalview/appletgui/JVDialog.js
@@ -1,40 +1,40 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["java.awt.Dialog", "java.awt.event.ActionListener", "awt2swing.Button"], "jalview.appletgui.JVDialog", ["awt2swing.Panel", "java.awt.FlowLayout"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.ap = null;
-this.buttonPanel = null;
-this.ok = null;
-this.cancel = null;
-this.accept = false;
-this.owner = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "JVDialog", java.awt.Dialog, java.awt.event.ActionListener);
-Clazz.prepareFields (c$, function () {
-this.ok = new awt2swing.Button ("Accept");
-this.cancel = new awt2swing.Button ("Cancel");
-});
-Clazz.makeConstructor (c$,
-function (owner, title, modal, width, height) {
-Clazz.superConstructor (this, jalview.appletgui.JVDialog, [owner, title, modal]);
-this.owner = owner;
-height += owner.getInsets ().top + this.getInsets ().bottom;
-this.setBounds (owner.getBounds ().x + Clazz.doubleToInt ((owner.getSize ().width - width) / 2), owner.getBounds ().y + Clazz.doubleToInt ((owner.getSize ().height - height) / 2), width, height);
-}, "awt2swing.Frame,~S,~B,~N,~N");
-Clazz.defineMethod (c$, "setMainPanel",
-function (panel) {
-this.add (panel, "North");
-this.buttonPanel = new awt2swing.Panel ( new java.awt.FlowLayout ());
-this.buttonPanel.add (this.ok);
-this.buttonPanel.add (this.cancel);
-this.ok.addActionListener (this);
-this.cancel.addActionListener (this);
-this.add (this.buttonPanel, "South");
-this.pack ();
-}, "awt2swing.Panel");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.ok) {
-this.accept = true;
-}this.setVisible (false);
-}, "java.awt.event.ActionEvent");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["java.awt.Dialog", "java.awt.event.ActionListener", "awt2swing.Button"], "jalview.appletgui.JVDialog", ["awt2swing.Panel", "java.awt.FlowLayout"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ap = null;
+this.buttonPanel = null;
+this.ok = null;
+this.cancel = null;
+this.accept = false;
+this.owner = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "JVDialog", java.awt.Dialog, java.awt.event.ActionListener);
+Clazz.prepareFields (c$, function () {
+this.ok = new awt2swing.Button ("Accept");
+this.cancel = new awt2swing.Button ("Cancel");
+});
+Clazz.makeConstructor (c$,
+function (owner, title, modal, width, height) {
+Clazz.superConstructor (this, jalview.appletgui.JVDialog, [owner, title, modal]);
+this.owner = owner;
+height += owner.getInsets ().top + this.getInsets ().bottom;
+this.setBounds (owner.getBounds ().x + Clazz.doubleToInt ((owner.getSize ().width - width) / 2), owner.getBounds ().y + Clazz.doubleToInt ((owner.getSize ().height - height) / 2), width, height);
+}, "awt2swing.Frame,~S,~B,~N,~N");
+Clazz.defineMethod (c$, "setMainPanel",
+function (panel) {
+this.add (panel, "North");
+this.buttonPanel = new awt2swing.Panel ( new java.awt.FlowLayout ());
+this.buttonPanel.add (this.ok);
+this.buttonPanel.add (this.cancel);
+this.ok.addActionListener (this);
+this.cancel.addActionListener (this);
+this.add (this.buttonPanel, "South");
+this.pack ();
+}, "awt2swing.Panel");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.ok) {
+this.accept = true;
+}this.setVisible (false);
+}, "java.awt.event.ActionEvent");
+});
diff --git a/bin/jalview/appletgui/OverviewPanel.class b/bin/jalview/appletgui/OverviewPanel.class
index 58462cbc301532856b8df79eee989663d056be7e..e63efea68145a055c9caabf1ca5197284c92485b 100644
GIT binary patch
delta 89
zcmbQ>*Xy?-OO(-UbGE25laLSt^M8iD49x5djO+~dObiS*n-_{Rvoc=Yyi}&2mB*Dq
r{4awoBctAbhO?6mmBl9KEAvcFQqq`wT}cwm-k{{qXuFwFnV$s!8q^o~
delta 96
zcmeD6o8Y%0OO(-kbGE25ldv!Y%YTNw49x5djO+~dObiT`Oq&;oGqW;Y-@HVopOwd*
uLGmwyEhD4ee}=P@H!4X^&R6D~oT#M1!t|ek2`;cs$)CxJY4blNeii`0J{na3
diff --git a/bin/jalview/appletgui/OverviewPanel.js b/bin/jalview/appletgui/OverviewPanel.js
index cadd6b7..41baadd 100644
--- a/bin/jalview/appletgui/OverviewPanel.js
+++ b/bin/jalview/appletgui/OverviewPanel.js
@@ -1,262 +1,262 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.OverviewPanel", ["awt2swing.Frame", "jalview.appletgui.FeatureRenderer", "$.SequenceRenderer", "java.awt.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.lang.Thread"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.miniMe = null;
-this.offscreen = null;
-this.av = null;
-this.ap = null;
-this.scalew = 1;
-this.scaleh = 1;
-this.$width = 0;
-this.sequencesHeight = 0;
-this.graphHeight = 20;
-this.boxX = -1;
-this.boxY = -1;
-this.boxWidth = -1;
-this.boxHeight = -1;
-this.resizing = false;
-this.sr = null;
-this.fr = null;
-this.nullFrame = null;
-this.resizeAgain = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "OverviewPanel", awt2swing.Panel, [Runnable, java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.OverviewPanel, []);
-this.av = ap.av;
-this.ap = ap;
-this.setLayout (null);
-this.nullFrame = new awt2swing.Frame ();
-this.nullFrame.addNotify ();
-this.sr = new jalview.appletgui.SequenceRenderer (this.av);
-this.sr.graphics = this.nullFrame.getGraphics ();
-this.sr.renderGaps = false;
-this.sr.forOverview = true;
-this.fr = new jalview.appletgui.FeatureRenderer (this.av);
-var initialScale = this.av.getAlignment ().getWidth () / this.av.getAlignment ().getHeight ();
-if (this.av.getSequenceConsensusHash () == null) {
-this.graphHeight = 0;
-}if (this.av.getAlignment ().getWidth () > this.av.getAlignment ().getHeight ()) {
-this.$width = 400;
-this.sequencesHeight = Clazz.floatToInt (400 / initialScale);
-if (this.sequencesHeight < 40) {
-this.sequencesHeight = 40;
-}} else {
-this.$width = Clazz.floatToInt (400 * initialScale);
-this.sequencesHeight = 300;
-if (this.$width < 120) {
-this.$width = 120;
-}}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
-this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.OverviewPanel$1") ? 0 : jalview.appletgui.OverviewPanel.$OverviewPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.OverviewPanel$1, this, null)));
-this.addMouseMotionListener (this);
-this.addMouseListener (this);
-this.updateOverviewImage ();
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-this.boxX = evt.getX ();
-this.boxY = evt.getY ();
-this.checkValid ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-this.boxX = evt.getX ();
-this.boxY = evt.getY ();
-this.checkValid ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-this.boxX = evt.getX ();
-this.boxY = evt.getY ();
-this.checkValid ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "checkValid",
-function () {
-if (this.boxY < 0) {
-this.boxY = 0;
-}if (this.boxY > (this.sequencesHeight - this.boxHeight)) {
-this.boxY = this.sequencesHeight - this.boxHeight + 1;
-}if (this.boxX < 0) {
-this.boxX = 0;
-}if (this.boxX > (this.$width - this.boxWidth)) {
-if (this.av.hasHiddenColumns ()) {
-this.boxWidth = Clazz.floatToInt ((this.av.endRes - this.av.startRes + 1) * this.av.getCharWidth () * this.scalew);
-}this.boxX = this.$width - this.boxWidth;
-}var col = Clazz.floatToInt (this.boxX / this.scalew / this.av.getCharWidth ());
-var row = Clazz.floatToInt (this.boxY / this.scaleh / this.av.getCharHeight ());
-if (this.av.hasHiddenColumns ()) {
-if (!this.av.getColumnSelection ().isVisible (col)) {
-return;
-}col = this.av.getColumnSelection ().findColumnPosition (col);
-}if (this.av.hasHiddenRows ()) {
-row = this.av.getAlignment ().getHiddenSequences ().findIndexWithoutHiddenSeqs (row);
-}this.ap.setScrollValues (col, row);
-this.ap.paintAlignment (false);
-});
-Clazz.defineMethod (c$, "updateOverviewImage",
-function () {
-if (this.resizing) {
-this.resizeAgain = true;
-return;
-}if (this.av.isShowSequenceFeatures ()) {
-this.fr.transferSettings (this.ap.seqPanel.seqCanvas.fr);
-}this.resizing = true;
-if ((this.getSize ().width > 0) && (this.getSize ().height > 0)) {
-this.$width = this.getSize ().width;
-this.sequencesHeight = this.getSize ().height - this.graphHeight;
-}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
-var thread = new Thread (this);
-thread.start ();
-this.repaint ();
-});
-Clazz.overrideMethod (c$, "run",
-function () {
-this.miniMe = null;
-var alwidth = this.av.getAlignment ().getWidth ();
-var alheight = this.av.getAlignment ().getHeight ();
-if (this.av.isShowSequenceFeatures ()) {
-this.fr.transferSettings (this.ap.seqPanel.seqCanvas.getFeatureRenderer ());
-}if (this.getSize ().width > 0 && this.getSize ().height > 0) {
-this.$width = this.getSize ().width;
-this.sequencesHeight = this.getSize ().height - this.graphHeight;
-}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
-var fullsizeWidth = alwidth * this.av.getCharWidth ();
-var fullsizeHeight = alheight * this.av.getCharHeight ();
-this.scalew = this.$width / fullsizeWidth;
-this.scaleh = this.sequencesHeight / fullsizeHeight;
-this.miniMe = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
-this.offscreen = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
-var mg = this.miniMe.getGraphics ();
-var sampleCol = alwidth / this.$width;
-var sampleRow = alheight / this.sequencesHeight;
-var lastcol = 0;
-var lastrow = 0;
-var xstart = 0;
-var ystart = 0;
-var color = java.awt.Color.yellow;
-var row;
-var col;
-var sameRow = 0;
-var sameCol = 0;
-var seq;
-var hasHiddenRows = this.av.hasHiddenRows ();
-var hasHiddenCols = this.av.hasHiddenColumns ();
-var hiddenRow = false;
-var alignment = this.av.getAlignment ();
-for (row = 0; row <= this.sequencesHeight; row++) {
-if (Clazz.floatToInt (row * sampleRow) == lastrow) {
-sameRow++;
-continue;
-}hiddenRow = false;
-if (hasHiddenRows) {
-seq = alignment.getHiddenSequences ().getHiddenSequence (lastrow);
-if (seq == null) {
-var index = alignment.getHiddenSequences ().findIndexWithoutHiddenSeqs (lastrow);
-seq = alignment.getSequenceAt (index);
-} else {
-hiddenRow = true;
-}} else {
-seq = alignment.getSequenceAt (lastrow);
-}for (col = 0; col < this.$width; col++) {
-if (Clazz.floatToInt (col * sampleCol) == lastcol && Clazz.floatToInt (row * sampleRow) == lastrow) {
-sameCol++;
-continue;
-}lastcol = Clazz.floatToInt (col * sampleCol);
-if (seq.getLength () > lastcol) {
-color = this.sr.getResidueBoxColour (seq, lastcol);
-if (this.av.isShowSequenceFeatures ()) {
-color = this.fr.findFeatureColour (color, seq, lastcol);
-}} else {
-color = java.awt.Color.white;
-}if (hiddenRow || (hasHiddenCols && !this.av.getColumnSelection ().isVisible (lastcol))) {
-color = color.darker ().darker ();
-}mg.setColor (color);
-if (sameCol == 1 && sameRow == 1) {
-mg.drawLine (xstart, ystart, xstart, ystart);
-} else {
-mg.fillRect (xstart, ystart, sameCol, sameRow);
-}xstart = col;
-sameCol = 1;
-}
-lastrow = Clazz.floatToInt (row * sampleRow);
-ystart = row;
-sameRow = 1;
-}
-if (this.av.getAlignmentConservationAnnotation () != null) {
-for (col = 0; col < this.$width; col++) {
-lastcol = Clazz.floatToInt (col * sampleCol);
-{
-mg.translate (col, this.sequencesHeight);
-this.ap.annotationPanel.renderer.drawGraph (mg, this.av.getAlignmentConservationAnnotation (), this.av.getAlignmentConservationAnnotation ().annotations, Clazz.floatToInt (sampleCol) + 1, this.graphHeight, Clazz.floatToInt (col * sampleCol), Clazz.floatToInt (col * sampleCol) + 1);
-mg.translate (-col, -this.sequencesHeight);
-}}
-}System.gc ();
-this.resizing = false;
-this.setBoxPosition ();
-if (this.resizeAgain) {
-this.resizeAgain = false;
-this.updateOverviewImage ();
-}});
-Clazz.defineMethod (c$, "setBoxPosition",
-function () {
-var fullsizeWidth = this.av.getAlignment ().getWidth () * this.av.getCharWidth ();
-var fullsizeHeight = (this.av.getAlignment ().getHeight () + this.av.getAlignment ().getHiddenSequences ().getSize ()) * this.av.getCharHeight ();
-var startRes = this.av.getStartRes ();
-var endRes = this.av.getEndRes ();
-if (this.av.hasHiddenColumns ()) {
-startRes = this.av.getColumnSelection ().adjustForHiddenColumns (startRes);
-endRes = this.av.getColumnSelection ().adjustForHiddenColumns (endRes);
-}var startSeq = this.av.startSeq;
-var endSeq = this.av.endSeq;
-if (this.av.hasHiddenRows ()) {
-startSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (startSeq);
-endSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (endSeq);
-}this.scalew = this.$width / fullsizeWidth;
-this.scaleh = this.sequencesHeight / fullsizeHeight;
-this.boxX = Clazz.floatToInt (startRes * this.av.getCharWidth () * this.scalew);
-this.boxY = Clazz.floatToInt (startSeq * this.av.getCharHeight () * this.scaleh);
-if (this.av.hasHiddenColumns ()) {
-this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
-} else {
-this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
-}this.boxHeight = Clazz.floatToInt ((endSeq - startSeq) * this.av.getCharHeight () * this.scaleh);
-this.repaint ();
-});
-Clazz.overrideMethod (c$, "update",
-function (g) {
-this.paint (g);
-}, "java.awt.Graphics");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-var og = this.offscreen.getGraphics ();
-if (this.miniMe != null) {
-og.drawImage (this.miniMe, 0, 0, this);
-og.setColor (java.awt.Color.red);
-og.drawRect (this.boxX, this.boxY, this.boxWidth, this.boxHeight);
-og.drawRect (this.boxX + 1, this.boxY + 1, this.boxWidth - 2, this.boxHeight - 2);
-g.drawImage (this.offscreen, 0, 0, this);
-}}, "java.awt.Graphics");
-c$.$OverviewPanel$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "OverviewPanel$1", java.awt.event.ComponentAdapter);
-Clazz.overrideMethod (c$, "componentResized",
-function (evt) {
-if (this.b$["jalview.appletgui.OverviewPanel"].getSize ().width != this.b$["jalview.appletgui.OverviewPanel"].$width || this.b$["jalview.appletgui.OverviewPanel"].getSize ().height != this.b$["jalview.appletgui.OverviewPanel"].sequencesHeight + this.b$["jalview.appletgui.OverviewPanel"].graphHeight) {
-this.b$["jalview.appletgui.OverviewPanel"].updateOverviewImage ();
-}}, "java.awt.event.ComponentEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.OverviewPanel", ["awt2swing.Frame", "jalview.appletgui.FeatureRenderer", "$.SequenceRenderer", "java.awt.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.lang.Thread"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.miniMe = null;
+this.offscreen = null;
+this.av = null;
+this.ap = null;
+this.scalew = 1;
+this.scaleh = 1;
+this.$width = 0;
+this.sequencesHeight = 0;
+this.graphHeight = 20;
+this.boxX = -1;
+this.boxY = -1;
+this.boxWidth = -1;
+this.boxHeight = -1;
+this.resizing = false;
+this.sr = null;
+this.fr = null;
+this.nullFrame = null;
+this.resizeAgain = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "OverviewPanel", awt2swing.Panel, [Runnable, java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.OverviewPanel, []);
+this.av = ap.av;
+this.ap = ap;
+this.setLayout (null);
+this.nullFrame = new awt2swing.Frame ();
+this.nullFrame.addNotify ();
+this.sr = new jalview.appletgui.SequenceRenderer (this.av);
+this.sr.graphics = this.nullFrame.getGraphics ();
+this.sr.renderGaps = false;
+this.sr.forOverview = true;
+this.fr = new jalview.appletgui.FeatureRenderer (this.av);
+var initialScale = this.av.getAlignment ().getWidth () / this.av.getAlignment ().getHeight ();
+if (this.av.getSequenceConsensusHash () == null) {
+this.graphHeight = 0;
+}if (this.av.getAlignment ().getWidth () > this.av.getAlignment ().getHeight ()) {
+this.$width = 400;
+this.sequencesHeight = Clazz.floatToInt (400 / initialScale);
+if (this.sequencesHeight < 40) {
+this.sequencesHeight = 40;
+}} else {
+this.$width = Clazz.floatToInt (400 * initialScale);
+this.sequencesHeight = 300;
+if (this.$width < 120) {
+this.$width = 120;
+}}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.OverviewPanel$1") ? 0 : jalview.appletgui.OverviewPanel.$OverviewPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.OverviewPanel$1, this, null)));
+this.addMouseMotionListener (this);
+this.addMouseListener (this);
+this.updateOverviewImage ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "checkValid",
+function () {
+if (this.boxY < 0) {
+this.boxY = 0;
+}if (this.boxY > (this.sequencesHeight - this.boxHeight)) {
+this.boxY = this.sequencesHeight - this.boxHeight + 1;
+}if (this.boxX < 0) {
+this.boxX = 0;
+}if (this.boxX > (this.$width - this.boxWidth)) {
+if (this.av.hasHiddenColumns ()) {
+this.boxWidth = Clazz.floatToInt ((this.av.endRes - this.av.startRes + 1) * this.av.getCharWidth () * this.scalew);
+}this.boxX = this.$width - this.boxWidth;
+}var col = Clazz.floatToInt (this.boxX / this.scalew / this.av.getCharWidth ());
+var row = Clazz.floatToInt (this.boxY / this.scaleh / this.av.getCharHeight ());
+if (this.av.hasHiddenColumns ()) {
+if (!this.av.getColumnSelection ().isVisible (col)) {
+return;
+}col = this.av.getColumnSelection ().findColumnPosition (col);
+}if (this.av.hasHiddenRows ()) {
+row = this.av.getAlignment ().getHiddenSequences ().findIndexWithoutHiddenSeqs (row);
+}this.ap.setScrollValues (col, row);
+this.ap.paintAlignment (false);
+});
+Clazz.defineMethod (c$, "updateOverviewImage",
+function () {
+if (this.resizing) {
+this.resizeAgain = true;
+return;
+}if (this.av.isShowSequenceFeatures ()) {
+this.fr.transferSettings (this.ap.seqPanel.seqCanvas.fr);
+}this.resizing = true;
+if ((this.getSize ().width > 0) && (this.getSize ().height > 0)) {
+this.$width = this.getSize ().width;
+this.sequencesHeight = this.getSize ().height - this.graphHeight;
+}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+var thread = new Thread (this);
+thread.start ();
+this.repaint ();
+});
+Clazz.overrideMethod (c$, "run",
+function () {
+this.miniMe = null;
+var alwidth = this.av.getAlignment ().getWidth ();
+var alheight = this.av.getAlignment ().getHeight ();
+if (this.av.isShowSequenceFeatures ()) {
+this.fr.transferSettings (this.ap.seqPanel.seqCanvas.getFeatureRenderer ());
+}if (this.getSize ().width > 0 && this.getSize ().height > 0) {
+this.$width = this.getSize ().width;
+this.sequencesHeight = this.getSize ().height - this.graphHeight;
+}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+var fullsizeWidth = alwidth * this.av.getCharWidth ();
+var fullsizeHeight = alheight * this.av.getCharHeight ();
+this.scalew = this.$width / fullsizeWidth;
+this.scaleh = this.sequencesHeight / fullsizeHeight;
+this.miniMe = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
+this.offscreen = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
+var mg = this.miniMe.getGraphics ();
+var sampleCol = alwidth / this.$width;
+var sampleRow = alheight / this.sequencesHeight;
+var lastcol = 0;
+var lastrow = 0;
+var xstart = 0;
+var ystart = 0;
+var color = java.awt.Color.yellow;
+var row;
+var col;
+var sameRow = 0;
+var sameCol = 0;
+var seq;
+var hasHiddenRows = this.av.hasHiddenRows ();
+var hasHiddenCols = this.av.hasHiddenColumns ();
+var hiddenRow = false;
+var alignment = this.av.getAlignment ();
+for (row = 0; row <= this.sequencesHeight; row++) {
+if (Clazz.floatToInt (row * sampleRow) == lastrow) {
+sameRow++;
+continue;
+}hiddenRow = false;
+if (hasHiddenRows) {
+seq = alignment.getHiddenSequences ().getHiddenSequence (lastrow);
+if (seq == null) {
+var index = alignment.getHiddenSequences ().findIndexWithoutHiddenSeqs (lastrow);
+seq = alignment.getSequenceAt (index);
+} else {
+hiddenRow = true;
+}} else {
+seq = alignment.getSequenceAt (lastrow);
+}for (col = 0; col < this.$width; col++) {
+if (Clazz.floatToInt (col * sampleCol) == lastcol && Clazz.floatToInt (row * sampleRow) == lastrow) {
+sameCol++;
+continue;
+}lastcol = Clazz.floatToInt (col * sampleCol);
+if (seq.getLength () > lastcol) {
+color = this.sr.getResidueBoxColour (seq, lastcol);
+if (this.av.isShowSequenceFeatures ()) {
+color = this.fr.findFeatureColour (color, seq, lastcol);
+}} else {
+color = java.awt.Color.white;
+}if (hiddenRow || (hasHiddenCols && !this.av.getColumnSelection ().isVisible (lastcol))) {
+color = color.darker ().darker ();
+}mg.setColor (color);
+if (sameCol == 1 && sameRow == 1) {
+mg.drawLine (xstart, ystart, xstart, ystart);
+} else {
+mg.fillRect (xstart, ystart, sameCol, sameRow);
+}xstart = col;
+sameCol = 1;
+}
+lastrow = Clazz.floatToInt (row * sampleRow);
+ystart = row;
+sameRow = 1;
+}
+if (this.av.getAlignmentConservationAnnotation () != null) {
+for (col = 0; col < this.$width; col++) {
+lastcol = Clazz.floatToInt (col * sampleCol);
+{
+mg.translate (col, this.sequencesHeight);
+this.ap.annotationPanel.renderer.drawGraph (mg, this.av.getAlignmentConservationAnnotation (), this.av.getAlignmentConservationAnnotation ().annotations, Clazz.floatToInt (sampleCol) + 1, this.graphHeight, Clazz.floatToInt (col * sampleCol), Clazz.floatToInt (col * sampleCol) + 1);
+mg.translate (-col, -this.sequencesHeight);
+}}
+}System.gc ();
+this.resizing = false;
+this.setBoxPosition ();
+if (this.resizeAgain) {
+this.resizeAgain = false;
+this.updateOverviewImage ();
+}});
+Clazz.defineMethod (c$, "setBoxPosition",
+function () {
+var fullsizeWidth = this.av.getAlignment ().getWidth () * this.av.getCharWidth ();
+var fullsizeHeight = (this.av.getAlignment ().getHeight () + this.av.getAlignment ().getHiddenSequences ().getSize ()) * this.av.getCharHeight ();
+var startRes = this.av.getStartRes ();
+var endRes = this.av.getEndRes ();
+if (this.av.hasHiddenColumns ()) {
+startRes = this.av.getColumnSelection ().adjustForHiddenColumns (startRes);
+endRes = this.av.getColumnSelection ().adjustForHiddenColumns (endRes);
+}var startSeq = this.av.startSeq;
+var endSeq = this.av.endSeq;
+if (this.av.hasHiddenRows ()) {
+startSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (startSeq);
+endSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (endSeq);
+}this.scalew = this.$width / fullsizeWidth;
+this.scaleh = this.sequencesHeight / fullsizeHeight;
+this.boxX = Clazz.floatToInt (startRes * this.av.getCharWidth () * this.scalew);
+this.boxY = Clazz.floatToInt (startSeq * this.av.getCharHeight () * this.scaleh);
+if (this.av.hasHiddenColumns ()) {
+this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
+} else {
+this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
+}this.boxHeight = Clazz.floatToInt ((endSeq - startSeq) * this.av.getCharHeight () * this.scaleh);
+this.repaint ();
+});
+Clazz.overrideMethod (c$, "update",
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+var og = this.offscreen.getGraphics ();
+if (this.miniMe != null) {
+og.drawImage (this.miniMe, 0, 0, this);
+og.setColor (java.awt.Color.red);
+og.drawRect (this.boxX, this.boxY, this.boxWidth, this.boxHeight);
+og.drawRect (this.boxX + 1, this.boxY + 1, this.boxWidth - 2, this.boxHeight - 2);
+g.drawImage (this.offscreen, 0, 0, this);
+}}, "java.awt.Graphics");
+c$.$OverviewPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "OverviewPanel$1", java.awt.event.ComponentAdapter);
+Clazz.overrideMethod (c$, "componentResized",
+function (evt) {
+if (this.b$["jalview.appletgui.OverviewPanel"].getSize ().width != this.b$["jalview.appletgui.OverviewPanel"].$width || this.b$["jalview.appletgui.OverviewPanel"].getSize ().height != this.b$["jalview.appletgui.OverviewPanel"].sequencesHeight + this.b$["jalview.appletgui.OverviewPanel"].graphHeight) {
+this.b$["jalview.appletgui.OverviewPanel"].updateOverviewImage ();
+}}, "java.awt.event.ComponentEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/PCAPanel.class b/bin/jalview/appletgui/PCAPanel.class
index 92d23e527ae8ea54793305dc72df08ca8a6a384b..fbccea51faad9e29b6292a88ea0aed3f33d72f13 100644
GIT binary patch
delta 37
tcmeAU>I&MhO_9-f^L9loMqUmEHX%VlAuV+V7RH*%h01E1MU}s?0szFv36TH*
delta 38
ucmeAQ>JHklO_9-L^L9loMm|mkb|FDQA$2Bo1{TJe$py-4n?;nru>t_fzX_56
diff --git a/bin/jalview/appletgui/PCAPanel.js b/bin/jalview/appletgui/PCAPanel.js
index 7813b4d..77168bf 100644
--- a/bin/jalview/appletgui/PCAPanel.js
+++ b/bin/jalview/appletgui/PCAPanel.js
@@ -1,253 +1,253 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.Button", "$.CheckboxMenuItem", "$.Choice", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "$.Panel", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.PCAPanel", ["awt2swing.Frame", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.RotatableCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.util.MessageManager", "jalview.viewmodel.PCAModel", "java.awt.Color", "$.Font", "java.lang.Thread"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.rc = null;
-this.av = null;
-this.pcaModel = null;
-this.top = 0;
-this.jPanel2 = null;
-this.jLabel1 = null;
-this.jLabel2 = null;
-this.jLabel3 = null;
-this.xCombobox = null;
-this.yCombobox = null;
-this.zCombobox = null;
-this.resetButton = null;
-this.flowLayout1 = null;
-this.borderLayout1 = null;
-this.menuBar1 = null;
-this.menu1 = null;
-this.menu2 = null;
-this.calcSettings = null;
-this.labels = null;
-this.protSetting = null;
-this.nuclSetting = null;
-this.values = null;
-this.inputData = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "PCAPanel", jalview.appletgui.EmbmenuFrame, [Runnable, java.awt.event.ActionListener, java.awt.event.ItemListener]);
-Clazz.prepareFields (c$, function () {
-this.jPanel2 = new awt2swing.Panel ();
-this.jLabel1 = new awt2swing.Label ();
-this.jLabel2 = new awt2swing.Label ();
-this.jLabel3 = new awt2swing.Label ();
-this.xCombobox = new awt2swing.Choice ();
-this.yCombobox = new awt2swing.Choice ();
-this.zCombobox = new awt2swing.Choice ();
-this.resetButton = new awt2swing.Button ();
-this.flowLayout1 = new java.awt.FlowLayout ();
-this.borderLayout1 = new java.awt.BorderLayout ();
-this.menuBar1 = new awt2swing.MenuBar ();
-this.menu1 = new awt2swing.Menu ();
-this.menu2 = new awt2swing.Menu ();
-this.calcSettings = new awt2swing.Menu ();
-this.labels = new awt2swing.CheckboxMenuItem ();
-this.protSetting = new awt2swing.CheckboxMenuItem ();
-this.nuclSetting = new awt2swing.CheckboxMenuItem ();
-this.values = new awt2swing.MenuItem ();
-this.inputData = new awt2swing.MenuItem ();
-});
-Clazz.makeConstructor (c$,
-function (av) {
-Clazz.superConstructor (this, jalview.appletgui.PCAPanel, []);
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-for (var i = 1; i < 8; i++) {
-this.xCombobox.addItem ("dim " + i);
-this.yCombobox.addItem ("dim " + i);
-this.zCombobox.addItem ("dim " + i);
-}
-this.av = av;
-var selected = av.getSelectionGroup () != null && av.getSelectionGroup ().getSize () > 0;
-var seqstrings = av.getAlignmentView (selected);
-var nucleotide = av.getAlignment ().isNucleotide ();
-var seqs;
-if (!selected) {
-seqs = av.getAlignment ().getSequencesArray ();
-} else {
-seqs = av.getSelectionGroup ().getSequencesInOrder (av.getAlignment ());
-}var sq = seqstrings.getSequences ();
-var length = sq[0].getWidth ();
-for (var i = 0; i < seqs.length; i++) {
-if (sq[i].getWidth () != length) {
-System.out.println ("Sequences must be equal length for PCA analysis");
-return;
-}}
-this.pcaModel = new jalview.viewmodel.PCAModel (seqstrings, seqs, nucleotide);
-this.rc = new jalview.appletgui.RotatableCanvas (av);
-this.embedMenuIfNeeded (this.rc);
-this.add (this.rc, "Center");
-jalview.bin.JalviewLite.addFrame (this, jalview.util.MessageManager.getString ("label.principal_component_analysis"), 475, 400);
-var worker = new Thread (this);
-worker.start ();
-}, "jalview.appletgui.AlignViewport");
-Clazz.overrideMethod (c$, "run",
-function () {
-this.calcSettings.setEnabled (false);
-this.rc.setEnabled (false);
-try {
-this.nuclSetting.setState (this.pcaModel.isNucleotide ());
-this.protSetting.setState (!this.pcaModel.isNucleotide ());
-this.pcaModel.run ();
-this.xCombobox.select (new Integer (0));
-this.yCombobox.select (new Integer (1));
-this.zCombobox.select (new Integer (2));
-this.pcaModel.updateRc (this.rc);
-this.top = this.pcaModel.getTop ();
-} catch (x) {
-if (Clazz.exceptionOf (x, OutOfMemoryError)) {
-System.err.println ("Out of memory when calculating PCA.");
-return;
-} else {
-throw x;
-}
-}
-this.calcSettings.setEnabled (true);
-this.rc.setEnabled (true);
-this.rc.repaint ();
-this.repaint ();
-});
-Clazz.defineMethod (c$, "doDimensionChange",
-function () {
-if (this.top == 0) {
-return;
-}var dim1 = this.top - this.xCombobox.getSelectedIndex ();
-var dim2 = this.top - this.yCombobox.getSelectedIndex ();
-var dim3 = this.top - this.zCombobox.getSelectedIndex ();
-this.pcaModel.updateRcView (dim1, dim2, dim3);
-this.rc.img = null;
-this.rc.rotmat.setIdentity ();
-this.rc.initAxes ();
-this.rc.paint (this.rc.getGraphics ());
-});
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.inputData) {
-this.showOriginalData ();
-}if (evt.getSource () === this.resetButton) {
-this.xCombobox.select (new Integer (0));
-this.yCombobox.select (new Integer (1));
-this.zCombobox.select (new Integer (2));
-this.doDimensionChange ();
-}if (evt.getSource () === this.values) {
-this.values_actionPerformed ();
-}}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "itemStateChanged",
-function (evt) {
-if (evt.getSource () === this.xCombobox) {
-this.xCombobox_actionPerformed ();
-} else if (evt.getSource () === this.yCombobox) {
-this.yCombobox_actionPerformed ();
-} else if (evt.getSource () === this.zCombobox) {
-this.zCombobox_actionPerformed ();
-} else if (evt.getSource () === this.labels) {
-this.labels_itemStateChanged (evt);
-} else if (evt.getSource () === this.nuclSetting) {
-if (!this.pcaModel.isNucleotide ()) {
-this.pcaModel.setNucleotide (true);
- new Thread (this).start ();
-}} else if (evt.getSource () === this.protSetting) {
-if (this.pcaModel.isNucleotide ()) {
-this.pcaModel.setNucleotide (false);
- new Thread (this).start ();
-}}}, "java.awt.event.ItemEvent");
-Clazz.defineMethod (c$, "xCombobox_actionPerformed",
-function () {
-this.doDimensionChange ();
-});
-Clazz.defineMethod (c$, "yCombobox_actionPerformed",
-function () {
-this.doDimensionChange ();
-});
-Clazz.defineMethod (c$, "zCombobox_actionPerformed",
-function () {
-this.doDimensionChange ();
-});
-Clazz.defineMethod (c$, "values_actionPerformed",
-function () {
-var cap = new jalview.appletgui.CutAndPasteTransfer (false, null);
-var frame = new awt2swing.Frame ();
-frame.add (cap);
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.pca_details"), 500, 500);
-cap.setText (this.pcaModel.getDetails ());
-});
-Clazz.defineMethod (c$, "showOriginalData",
-function () {
-var gc = '-';
-try {
-gc = this.av.getGapCharacter ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-;var alAndColsel = this.pcaModel.getSeqtrings ().getAlignmentAndColumnSelection (gc);
-if (alAndColsel != null && alAndColsel[0] != null) {
-var al = new jalview.datamodel.Alignment (alAndColsel[0]);
-var af = new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for PCA", false);
-af.viewport.setHiddenColumns (alAndColsel[1]);
-}});
-Clazz.defineMethod (c$, "labels_itemStateChanged",
-function (itemEvent) {
-this.rc.showLabels (this.labels.getState ());
-}, "java.awt.event.ItemEvent");
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setLayout (this.borderLayout1);
-this.jPanel2.setLayout (this.flowLayout1);
-this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.jLabel1.setText ("x=");
-this.jLabel2.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.jLabel2.setText ("y=");
-this.jLabel3.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.jLabel3.setText ("z=");
-this.jPanel2.setBackground (java.awt.Color.white);
-this.zCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.zCombobox.addItemListener (this);
-this.yCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.yCombobox.addItemListener (this);
-this.xCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.xCombobox.addItemListener (this);
-this.resetButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.resetButton.setLabel (jalview.util.MessageManager.getString ("action.reset"));
-this.resetButton.addActionListener (this);
-this.setMenuBar (this.menuBar1);
-this.menu1.setLabel (jalview.util.MessageManager.getString ("action.file"));
-this.menu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
-this.calcSettings.setLabel (jalview.util.MessageManager.getString ("action.change_params"));
-this.labels.setLabel (jalview.util.MessageManager.getString ("label.labels"));
-this.labels.addItemListener (this);
-this.values.setLabel (jalview.util.MessageManager.getString ("label.output_values"));
-this.values.addActionListener (this);
-this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
-this.nuclSetting.setLabel (jalview.util.MessageManager.getString ("label.nucleotide_matrix"));
-this.nuclSetting.addItemListener (this);
-this.protSetting.setLabel (jalview.util.MessageManager.getString ("label.protein_matrix"));
-this.protSetting.addItemListener (this);
-this.add (this.jPanel2, "South");
-this.jPanel2.add (this.jLabel1, null);
-this.jPanel2.add (this.xCombobox, null);
-this.jPanel2.add (this.jLabel2, null);
-this.jPanel2.add (this.yCombobox, null);
-this.jPanel2.add (this.jLabel3, null);
-this.jPanel2.add (this.zCombobox, null);
-this.jPanel2.add (this.resetButton, null);
-this.menuBar1.add (this.menu1);
-this.menuBar1.add (this.menu2);
-this.menuBar1.add (this.calcSettings);
-this.menu2.add (this.labels);
-this.menu1.add (this.values);
-this.menu1.add (this.inputData);
-this.calcSettings.add (this.nuclSetting);
-this.calcSettings.add (this.protSetting);
-this.inputData.addActionListener (this);
-}, $fz.isPrivate = true, $fz));
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.Button", "$.CheckboxMenuItem", "$.Choice", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "$.Panel", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.PCAPanel", ["awt2swing.Frame", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.RotatableCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.util.MessageManager", "jalview.viewmodel.PCAModel", "java.awt.Color", "$.Font", "java.lang.Thread"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.rc = null;
+this.av = null;
+this.pcaModel = null;
+this.top = 0;
+this.jPanel2 = null;
+this.jLabel1 = null;
+this.jLabel2 = null;
+this.jLabel3 = null;
+this.xCombobox = null;
+this.yCombobox = null;
+this.zCombobox = null;
+this.resetButton = null;
+this.flowLayout1 = null;
+this.borderLayout1 = null;
+this.menuBar1 = null;
+this.menu1 = null;
+this.menu2 = null;
+this.calcSettings = null;
+this.labels = null;
+this.protSetting = null;
+this.nuclSetting = null;
+this.values = null;
+this.inputData = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "PCAPanel", jalview.appletgui.EmbmenuFrame, [Runnable, java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz.prepareFields (c$, function () {
+this.jPanel2 = new awt2swing.Panel ();
+this.jLabel1 = new awt2swing.Label ();
+this.jLabel2 = new awt2swing.Label ();
+this.jLabel3 = new awt2swing.Label ();
+this.xCombobox = new awt2swing.Choice ();
+this.yCombobox = new awt2swing.Choice ();
+this.zCombobox = new awt2swing.Choice ();
+this.resetButton = new awt2swing.Button ();
+this.flowLayout1 = new java.awt.FlowLayout ();
+this.borderLayout1 = new java.awt.BorderLayout ();
+this.menuBar1 = new awt2swing.MenuBar ();
+this.menu1 = new awt2swing.Menu ();
+this.menu2 = new awt2swing.Menu ();
+this.calcSettings = new awt2swing.Menu ();
+this.labels = new awt2swing.CheckboxMenuItem ();
+this.protSetting = new awt2swing.CheckboxMenuItem ();
+this.nuclSetting = new awt2swing.CheckboxMenuItem ();
+this.values = new awt2swing.MenuItem ();
+this.inputData = new awt2swing.MenuItem ();
+});
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.PCAPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+for (var i = 1; i < 8; i++) {
+this.xCombobox.addItem ("dim " + i);
+this.yCombobox.addItem ("dim " + i);
+this.zCombobox.addItem ("dim " + i);
+}
+this.av = av;
+var selected = av.getSelectionGroup () != null && av.getSelectionGroup ().getSize () > 0;
+var seqstrings = av.getAlignmentView (selected);
+var nucleotide = av.getAlignment ().isNucleotide ();
+var seqs;
+if (!selected) {
+seqs = av.getAlignment ().getSequencesArray ();
+} else {
+seqs = av.getSelectionGroup ().getSequencesInOrder (av.getAlignment ());
+}var sq = seqstrings.getSequences ();
+var length = sq[0].getWidth ();
+for (var i = 0; i < seqs.length; i++) {
+if (sq[i].getWidth () != length) {
+System.out.println ("Sequences must be equal length for PCA analysis");
+return;
+}}
+this.pcaModel = new jalview.viewmodel.PCAModel (seqstrings, seqs, nucleotide);
+this.rc = new jalview.appletgui.RotatableCanvas (av);
+this.embedMenuIfNeeded (this.rc);
+this.add (this.rc, "Center");
+jalview.bin.JalviewLite.addFrame (this, jalview.util.MessageManager.getString ("label.principal_component_analysis"), 475, 400);
+var worker = new Thread (this);
+worker.start ();
+}, "jalview.appletgui.AlignViewport");
+Clazz.overrideMethod (c$, "run",
+function () {
+this.calcSettings.setEnabled (false);
+this.rc.setEnabled (false);
+try {
+this.nuclSetting.setState (this.pcaModel.isNucleotide ());
+this.protSetting.setState (!this.pcaModel.isNucleotide ());
+this.pcaModel.run ();
+this.xCombobox.select (new Integer (0));
+this.yCombobox.select (new Integer (1));
+this.zCombobox.select (new Integer (2));
+this.pcaModel.updateRc (this.rc);
+this.top = this.pcaModel.getTop ();
+} catch (x) {
+if (Clazz.exceptionOf (x, OutOfMemoryError)) {
+System.err.println ("Out of memory when calculating PCA.");
+return;
+} else {
+throw x;
+}
+}
+this.calcSettings.setEnabled (true);
+this.rc.setEnabled (true);
+this.rc.repaint ();
+this.repaint ();
+});
+Clazz.defineMethod (c$, "doDimensionChange",
+function () {
+if (this.top == 0) {
+return;
+}var dim1 = this.top - this.xCombobox.getSelectedIndex ();
+var dim2 = this.top - this.yCombobox.getSelectedIndex ();
+var dim3 = this.top - this.zCombobox.getSelectedIndex ();
+this.pcaModel.updateRcView (dim1, dim2, dim3);
+this.rc.img = null;
+this.rc.rotmat.setIdentity ();
+this.rc.initAxes ();
+this.rc.paint (this.rc.getGraphics ());
+});
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.inputData) {
+this.showOriginalData ();
+}if (evt.getSource () === this.resetButton) {
+this.xCombobox.select (new Integer (0));
+this.yCombobox.select (new Integer (1));
+this.zCombobox.select (new Integer (2));
+this.doDimensionChange ();
+}if (evt.getSource () === this.values) {
+this.values_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+if (evt.getSource () === this.xCombobox) {
+this.xCombobox_actionPerformed ();
+} else if (evt.getSource () === this.yCombobox) {
+this.yCombobox_actionPerformed ();
+} else if (evt.getSource () === this.zCombobox) {
+this.zCombobox_actionPerformed ();
+} else if (evt.getSource () === this.labels) {
+this.labels_itemStateChanged (evt);
+} else if (evt.getSource () === this.nuclSetting) {
+if (!this.pcaModel.isNucleotide ()) {
+this.pcaModel.setNucleotide (true);
+ new Thread (this).start ();
+}} else if (evt.getSource () === this.protSetting) {
+if (this.pcaModel.isNucleotide ()) {
+this.pcaModel.setNucleotide (false);
+ new Thread (this).start ();
+}}}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "xCombobox_actionPerformed",
+function () {
+this.doDimensionChange ();
+});
+Clazz.defineMethod (c$, "yCombobox_actionPerformed",
+function () {
+this.doDimensionChange ();
+});
+Clazz.defineMethod (c$, "zCombobox_actionPerformed",
+function () {
+this.doDimensionChange ();
+});
+Clazz.defineMethod (c$, "values_actionPerformed",
+function () {
+var cap = new jalview.appletgui.CutAndPasteTransfer (false, null);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.pca_details"), 500, 500);
+cap.setText (this.pcaModel.getDetails ());
+});
+Clazz.defineMethod (c$, "showOriginalData",
+function () {
+var gc = '-';
+try {
+gc = this.av.getGapCharacter ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;var alAndColsel = this.pcaModel.getSeqtrings ().getAlignmentAndColumnSelection (gc);
+if (alAndColsel != null && alAndColsel[0] != null) {
+var al = new jalview.datamodel.Alignment (alAndColsel[0]);
+var af = new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for PCA", false);
+af.viewport.setHiddenColumns (alAndColsel[1]);
+}});
+Clazz.defineMethod (c$, "labels_itemStateChanged",
+function (itemEvent) {
+this.rc.showLabels (this.labels.getState ());
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout (this.borderLayout1);
+this.jPanel2.setLayout (this.flowLayout1);
+this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel1.setText ("x=");
+this.jLabel2.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel2.setText ("y=");
+this.jLabel3.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel3.setText ("z=");
+this.jPanel2.setBackground (java.awt.Color.white);
+this.zCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.zCombobox.addItemListener (this);
+this.yCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.yCombobox.addItemListener (this);
+this.xCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.xCombobox.addItemListener (this);
+this.resetButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.resetButton.setLabel (jalview.util.MessageManager.getString ("action.reset"));
+this.resetButton.addActionListener (this);
+this.setMenuBar (this.menuBar1);
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.file"));
+this.menu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
+this.calcSettings.setLabel (jalview.util.MessageManager.getString ("action.change_params"));
+this.labels.setLabel (jalview.util.MessageManager.getString ("label.labels"));
+this.labels.addItemListener (this);
+this.values.setLabel (jalview.util.MessageManager.getString ("label.output_values"));
+this.values.addActionListener (this);
+this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
+this.nuclSetting.setLabel (jalview.util.MessageManager.getString ("label.nucleotide_matrix"));
+this.nuclSetting.addItemListener (this);
+this.protSetting.setLabel (jalview.util.MessageManager.getString ("label.protein_matrix"));
+this.protSetting.addItemListener (this);
+this.add (this.jPanel2, "South");
+this.jPanel2.add (this.jLabel1, null);
+this.jPanel2.add (this.xCombobox, null);
+this.jPanel2.add (this.jLabel2, null);
+this.jPanel2.add (this.yCombobox, null);
+this.jPanel2.add (this.jLabel3, null);
+this.jPanel2.add (this.zCombobox, null);
+this.jPanel2.add (this.resetButton, null);
+this.menuBar1.add (this.menu1);
+this.menuBar1.add (this.menu2);
+this.menuBar1.add (this.calcSettings);
+this.menu2.add (this.labels);
+this.menu1.add (this.values);
+this.menu1.add (this.inputData);
+this.calcSettings.add (this.nuclSetting);
+this.calcSettings.add (this.protSetting);
+this.inputData.addActionListener (this);
+}, $fz.isPrivate = true, $fz));
+});
diff --git a/bin/jalview/appletgui/PaintRefresher.class b/bin/jalview/appletgui/PaintRefresher.class
index 0086f7e114f52cfa44cf1598d6c78a1145d40f12..8d0e0cc084b6dda4da55adb7d38c69071253e3b5 100644
GIT binary patch
delta 24
gcmbQFI#G3l1Q+A+$&y?LSy>sF1ynXa;M&9v09!E!761SM
delta 25
hcmbQJI!Sed1Q+9p$&y?L+1MCZ1QeMz-{;!I4gg>i2N(bV
diff --git a/bin/jalview/appletgui/PaintRefresher.js b/bin/jalview/appletgui/PaintRefresher.js
index 09c8d0a..7bd9686 100644
--- a/bin/jalview/appletgui/PaintRefresher.js
+++ b/bin/jalview/appletgui/PaintRefresher.js
@@ -1,126 +1,126 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (null, "jalview.appletgui.PaintRefresher", ["jalview.appletgui.AlignmentPanel", "java.util.Hashtable", "$.Vector"], function () {
-c$ = Clazz.declareType (jalview.appletgui, "PaintRefresher");
-c$.Register = Clazz.defineMethod (c$, "Register",
-function (comp, seqSetId) {
-if (jalview.appletgui.PaintRefresher.components == null) {
-jalview.appletgui.PaintRefresher.components = new java.util.Hashtable ();
-}if (jalview.appletgui.PaintRefresher.components.containsKey (seqSetId)) {
-var comps = jalview.appletgui.PaintRefresher.components.get (seqSetId);
-if (!comps.contains (comp)) {
-comps.addElement (comp);
-}} else {
-var vcoms = new java.util.Vector ();
-vcoms.addElement (comp);
-jalview.appletgui.PaintRefresher.components.put (seqSetId, vcoms);
-}}, "java.awt.Component,~S");
-c$.RemoveComponent = Clazz.defineMethod (c$, "RemoveComponent",
-function (comp) {
-if (jalview.appletgui.PaintRefresher.components == null) {
-return;
-}var en = jalview.appletgui.PaintRefresher.components.keys ();
-while (en.hasMoreElements ()) {
-var id = en.nextElement ().toString ();
-var comps = jalview.appletgui.PaintRefresher.components.get (id);
-comps.removeElement (comp);
-if (comps.size () == 0) {
-jalview.appletgui.PaintRefresher.components.remove (id);
-}}
-}, "java.awt.Component");
-c$.Refresh = Clazz.defineMethod (c$, "Refresh",
-function (source, id) {
-jalview.appletgui.PaintRefresher.Refresh (source, id, false, false);
-}, "java.awt.Component,~S");
-c$.Refresh = Clazz.defineMethod (c$, "Refresh",
-function (source, id, alignmentChanged, validateSequences) {
-if (jalview.appletgui.PaintRefresher.components == null) {
-return;
-}var comp;
-var comps = jalview.appletgui.PaintRefresher.components.get (id);
-if (comps == null) {
-return;
-}var e = comps.elements ();
-while (e.hasMoreElements ()) {
-comp = e.nextElement ();
-if (comp === source) {
-continue;
-}if (!comp.isValid ()) {
-comps.removeElement (comp);
-} else if (validateSequences && Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && Clazz.instanceOf (source, jalview.appletgui.AlignmentPanel)) {
-jalview.appletgui.PaintRefresher.validateSequences ((source).av.getAlignment (), (comp).av.getAlignment ());
-}if (Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && alignmentChanged) {
-(comp).alignmentChanged ();
-}comp.repaint ();
-}
-}, "java.awt.Component,~S,~B,~B");
-c$.validateSequences = Clazz.defineMethod (c$, "validateSequences",
-function (source, comp) {
-var a1;
-if (source.getHiddenSequences ().getSize () > 0) {
-a1 = source.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
-} else {
-a1 = source.getSequencesArray ();
-}var a2;
-if (comp.getHiddenSequences ().getSize () > 0) {
-a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
-} else {
-a2 = comp.getSequencesArray ();
-}var i;
-var iSize = a1.length;
-var j;
-var jSize = a2.length;
-if (iSize == jSize) {
-return;
-}var exists = false;
-for (i = 0; i < iSize; i++) {
-exists = false;
-for (j = 0; j < jSize; j++) {
-if (a2[j] === a1[i]) {
-exists = true;
-break;
-}}
-if (!exists) {
-if (i < comp.getHeight ()) {
-var alsq;
-{
-alsq.add (i, a1[i]);
-}} else {
-comp.addSequence (a1[i]);
-}if (comp.getHiddenSequences ().getSize () > 0) {
-a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
-} else {
-a2 = comp.getSequencesArray ();
-}jSize = a2.length;
-}}
-iSize = a1.length;
-jSize = a2.length;
-for (j = 0; j < jSize; j++) {
-exists = false;
-for (i = 0; i < iSize; i++) {
-if (a2[j] === a1[i]) {
-exists = true;
-break;
-}}
-if (!exists) {
-comp.deleteSequence (a2[j]);
-}}
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
-c$.getAssociatedPanels = Clazz.defineMethod (c$, "getAssociatedPanels",
-function (id) {
-var comps = jalview.appletgui.PaintRefresher.components.get (id);
-var tmp = new java.util.Vector ();
-var i;
-var iSize = comps.size ();
-for (i = 0; i < iSize; i++) {
-if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
-tmp.addElement (comps.elementAt (i));
-}}
-var result = new Array (tmp.size ());
-for (var ix = 0; ix < result.length; ix++) {
-result[ix] = tmp.elementAt (ix);
-}
-return result;
-}, "~S");
-Clazz.defineStatics (c$,
-"components", null);
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (null, "jalview.appletgui.PaintRefresher", ["jalview.appletgui.AlignmentPanel", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.appletgui, "PaintRefresher");
+c$.Register = Clazz.defineMethod (c$, "Register",
+function (comp, seqSetId) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+jalview.appletgui.PaintRefresher.components = new java.util.Hashtable ();
+}if (jalview.appletgui.PaintRefresher.components.containsKey (seqSetId)) {
+var comps = jalview.appletgui.PaintRefresher.components.get (seqSetId);
+if (!comps.contains (comp)) {
+comps.addElement (comp);
+}} else {
+var vcoms = new java.util.Vector ();
+vcoms.addElement (comp);
+jalview.appletgui.PaintRefresher.components.put (seqSetId, vcoms);
+}}, "java.awt.Component,~S");
+c$.RemoveComponent = Clazz.defineMethod (c$, "RemoveComponent",
+function (comp) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+return;
+}var en = jalview.appletgui.PaintRefresher.components.keys ();
+while (en.hasMoreElements ()) {
+var id = en.nextElement ().toString ();
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+comps.removeElement (comp);
+if (comps.size () == 0) {
+jalview.appletgui.PaintRefresher.components.remove (id);
+}}
+}, "java.awt.Component");
+c$.Refresh = Clazz.defineMethod (c$, "Refresh",
+function (source, id) {
+jalview.appletgui.PaintRefresher.Refresh (source, id, false, false);
+}, "java.awt.Component,~S");
+c$.Refresh = Clazz.defineMethod (c$, "Refresh",
+function (source, id, alignmentChanged, validateSequences) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+return;
+}var comp;
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+if (comps == null) {
+return;
+}var e = comps.elements ();
+while (e.hasMoreElements ()) {
+comp = e.nextElement ();
+if (comp === source) {
+continue;
+}if (!comp.isValid ()) {
+comps.removeElement (comp);
+} else if (validateSequences && Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && Clazz.instanceOf (source, jalview.appletgui.AlignmentPanel)) {
+jalview.appletgui.PaintRefresher.validateSequences ((source).av.getAlignment (), (comp).av.getAlignment ());
+}if (Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && alignmentChanged) {
+(comp).alignmentChanged ();
+}comp.repaint ();
+}
+}, "java.awt.Component,~S,~B,~B");
+c$.validateSequences = Clazz.defineMethod (c$, "validateSequences",
+function (source, comp) {
+var a1;
+if (source.getHiddenSequences ().getSize () > 0) {
+a1 = source.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a1 = source.getSequencesArray ();
+}var a2;
+if (comp.getHiddenSequences ().getSize () > 0) {
+a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a2 = comp.getSequencesArray ();
+}var i;
+var iSize = a1.length;
+var j;
+var jSize = a2.length;
+if (iSize == jSize) {
+return;
+}var exists = false;
+for (i = 0; i < iSize; i++) {
+exists = false;
+for (j = 0; j < jSize; j++) {
+if (a2[j] === a1[i]) {
+exists = true;
+break;
+}}
+if (!exists) {
+if (i < comp.getHeight ()) {
+var alsq;
+{
+alsq.add (i, a1[i]);
+}} else {
+comp.addSequence (a1[i]);
+}if (comp.getHiddenSequences ().getSize () > 0) {
+a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a2 = comp.getSequencesArray ();
+}jSize = a2.length;
+}}
+iSize = a1.length;
+jSize = a2.length;
+for (j = 0; j < jSize; j++) {
+exists = false;
+for (i = 0; i < iSize; i++) {
+if (a2[j] === a1[i]) {
+exists = true;
+break;
+}}
+if (!exists) {
+comp.deleteSequence (a2[j]);
+}}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.getAssociatedPanels = Clazz.defineMethod (c$, "getAssociatedPanels",
+function (id) {
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+var tmp = new java.util.Vector ();
+var i;
+var iSize = comps.size ();
+for (i = 0; i < iSize; i++) {
+if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+tmp.addElement (comps.elementAt (i));
+}}
+var result = new Array (tmp.size ());
+for (var ix = 0; ix < result.length; ix++) {
+result[ix] = tmp.elementAt (ix);
+}
+return result;
+}, "~S");
+Clazz.defineStatics (c$,
+"components", null);
+});
diff --git a/bin/jalview/appletgui/PairwiseAlignPanel.class b/bin/jalview/appletgui/PairwiseAlignPanel.class
index 22c33f930660e49a58c5a7e2a0e56758cd5146c6..202bf5c11334ea6e94ef93a415dbcd14e340eec7 100644
GIT binary patch
delta 32
ocmX@DdrEhMy8vU#W)Fcg%*@jngeQxOq_7yXGvsY<5b 2) {
-System.out.println ("Pairwise alignment scaled similarity score matrix\n");
-for (var i = 0; i < count; i++) {
-jalview.util.Format.print (System.out, "%s \n", ("" + i) + " " + seqs[i].getName ());
-}
-System.out.println ("\n");
-for (var i = 0; i < count; i++) {
-for (var j = 0; j < i; j++) {
-jalview.util.Format.printDouble (System.out, "%7.3f", scores[i][j] / totscore);
-}
-}
-System.out.println ("\n");
-}}, "jalview.appletgui.AlignmentPanel");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.viewInEditorButton) {
-this.viewInEditorButton_actionPerformed ();
-}}, "java.awt.event.ActionEvent");
-Clazz.defineMethod (c$, "viewInEditorButton_actionPerformed",
-function () {
-var seq = new Array (this.sequences.size ());
-for (var i = 0; i < this.sequences.size (); i++) {
-seq[i] = this.sequences.elementAt (i);
-}
- new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (seq), this.ap.av.applet, "Pairwise Aligned Sequences", false);
-});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setLayout (this.borderLayout1);
-this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 12));
-this.textarea.setText ("");
-this.viewInEditorButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
-this.viewInEditorButton.setLabel (jalview.util.MessageManager.getString ("label.view_alignment_editor"));
-this.viewInEditorButton.addActionListener (this);
-this.add (this.scrollPane, "Center");
-this.scrollPane.add (this.textarea);
-this.add (this.jPanel1, "South");
-this.jPanel1.add (this.viewInEditorButton, null);
-}, $fz.isPrivate = true, $fz));
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.ScrollPane", "$.TextArea", "java.awt.BorderLayout", "java.util.Vector"], "jalview.appletgui.PairwiseAlignPanel", ["jalview.analysis.AlignSeq", "jalview.appletgui.AlignFrame", "jalview.datamodel.Alignment", "jalview.util.Format", "$.MessageManager", "java.awt.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sequences = null;
+this.ap = null;
+this.scrollPane = null;
+this.textarea = null;
+this.viewInEditorButton = null;
+this.jPanel1 = null;
+this.borderLayout1 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "PairwiseAlignPanel", awt2swing.Panel, java.awt.event.ActionListener);
+Clazz.prepareFields (c$, function () {
+this.sequences = new java.util.Vector ();
+this.scrollPane = new awt2swing.ScrollPane ();
+this.textarea = new awt2swing.TextArea ();
+this.viewInEditorButton = new awt2swing.Button ();
+this.jPanel1 = new awt2swing.Panel ();
+this.borderLayout1 = new java.awt.BorderLayout ();
+});
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.PairwiseAlignPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.ap = ap;
+this.sequences = new java.util.Vector ();
+var seqs;
+var seqStrings = ap.av.getViewAsString (true);
+if (ap.av.getSelectionGroup () == null) {
+seqs = ap.av.getAlignment ().getSequencesArray ();
+} else {
+seqs = ap.av.getSelectionGroup ().getSequencesInOrder (ap.av.getAlignment ());
+}var scores = Clazz.newFloatArray (seqs.length, seqs.length, 0);
+var totscore = 0;
+var count = ap.av.getSelectionGroup ().getSize ();
+var type = (ap.av.getAlignment ().isNucleotide ()) ? "dna" : "pep";
+var seq;
+for (var i = 1; i < count; i++) {
+for (var j = 0; j < i; j++) {
+var as = new jalview.analysis.AlignSeq (seqs[i], seqStrings[i], seqs[j], seqStrings[j], type);
+if (as.s1str.length == 0 || as.s2str.length == 0) {
+continue;
+}as.calcScoreMatrix ();
+as.traceAlignment ();
+as.printAlignment (System.out);
+scores[i][j] = as.getMaxScore () / as.getASeq1 ().length;
+totscore = totscore + scores[i][j];
+this.textarea.append (as.getOutput ());
+this.sequences.add (as.getAlignedSeq1 ());
+this.sequences.add (as.getAlignedSeq1 ());
+}
+}
+if (count > 2) {
+System.out.println ("Pairwise alignment scaled similarity score matrix\n");
+for (var i = 0; i < count; i++) {
+jalview.util.Format.print (System.out, "%s \n", ("" + i) + " " + seqs[i].getName ());
+}
+System.out.println ("\n");
+for (var i = 0; i < count; i++) {
+for (var j = 0; j < i; j++) {
+jalview.util.Format.printDouble (System.out, "%7.3f", scores[i][j] / totscore);
+}
+}
+System.out.println ("\n");
+}}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.viewInEditorButton) {
+this.viewInEditorButton_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "viewInEditorButton_actionPerformed",
+function () {
+var seq = new Array (this.sequences.size ());
+for (var i = 0; i < this.sequences.size (); i++) {
+seq[i] = this.sequences.elementAt (i);
+}
+ new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (seq), this.ap.av.applet, "Pairwise Aligned Sequences", false);
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout (this.borderLayout1);
+this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 12));
+this.textarea.setText ("");
+this.viewInEditorButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.viewInEditorButton.setLabel (jalview.util.MessageManager.getString ("label.view_alignment_editor"));
+this.viewInEditorButton.addActionListener (this);
+this.add (this.scrollPane, "Center");
+this.scrollPane.add (this.textarea);
+this.add (this.jPanel1, "South");
+this.jPanel1.add (this.viewInEditorButton, null);
+}, $fz.isPrivate = true, $fz));
+});
diff --git a/bin/jalview/appletgui/RedundancyPanel.js b/bin/jalview/appletgui/RedundancyPanel.js
index f6b850d..647ac1b 100644
--- a/bin/jalview/appletgui/RedundancyPanel.js
+++ b/bin/jalview/appletgui/RedundancyPanel.js
@@ -1,165 +1,165 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.appletgui.SliderPanel", "java.awt.event.WindowListener", "java.util.Stack"], "jalview.appletgui.RedundancyPanel", ["awt2swing.Frame", "jalview.analysis.AlignSeq", "jalview.appletgui.PaintRefresher", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "jalview.util.MessageManager", "java.awt.event.AdjustmentListener", "java.lang.Thread", "java.util.ArrayList", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.historyList = null;
-this.redundancy = null;
-this.originalSequences = null;
-this.frame = null;
-this.redundantSeqs = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "RedundancyPanel", jalview.appletgui.SliderPanel, [Runnable, java.awt.event.WindowListener]);
-Clazz.prepareFields (c$, function () {
-this.historyList = new java.util.Stack ();
-});
-Clazz.makeConstructor (c$,
-function (ap) {
-Clazz.superConstructor (this, jalview.appletgui.RedundancyPanel, [ap, 0, false, null]);
-this.redundantSeqs = new java.util.Vector ();
-this.ap = ap;
-this.undoButton.setVisible (true);
-this.applyButton.setVisible (true);
-this.allGroupsCheck.setVisible (false);
-this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
-this.valueField.setText ("100");
-this.slider.setVisibleAmount (1);
-this.slider.setMinimum (0);
-this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
-this.slider.setValue (100);
-this.slider.addAdjustmentListener (((Clazz.isClassDefined ("jalview.appletgui.RedundancyPanel$1") ? 0 : jalview.appletgui.RedundancyPanel.$RedundancyPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.RedundancyPanel$1, this, null)));
-this.frame = new awt2swing.Frame ();
-this.frame.add (this);
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.redundancy_threshold_selection"), 400, 100);
-this.frame.addWindowListener (this);
-var worker = new Thread (this);
-worker.start ();
-}, "jalview.appletgui.AlignmentPanel");
-Clazz.overrideMethod (c$, "run",
-function () {
-this.label.setText (jalview.util.MessageManager.getString ("label.calculating"));
-this.slider.setVisible (false);
-this.applyButton.setEnabled (false);
-this.valueField.setVisible (false);
-this.validate ();
-var omitHidden = null;
-var sg = this.ap.av.getSelectionGroup ();
-var height;
-var start;
-var end;
-if ((sg != null) && (sg.getSize () >= 1)) {
-this.originalSequences = sg.getSequencesInOrder (this.ap.av.getAlignment ());
-start = sg.getStartRes ();
-end = sg.getEndRes ();
-} else {
-this.originalSequences = this.ap.av.getAlignment ().getSequencesArray ();
-start = 0;
-end = this.ap.av.getAlignment ().getWidth ();
-}height = this.originalSequences.length;
-this.redundancy = jalview.analysis.AlignSeq.computeRedundancyMatrix (this.originalSequences, omitHidden, start, end, false);
-this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
-this.slider.setVisible (true);
-this.applyButton.setEnabled (true);
-this.valueField.setVisible (true);
-this.validate ();
-this.sliderValueChanged ();
-});
-Clazz.defineMethod (c$, "sliderValueChanged",
-function () {
-if (this.redundancy == null) {
-return;
-}var value = this.slider.getValue ();
-var redundantSequences = new java.util.ArrayList ();
-for (var i = 0; i < this.redundancy.length; i++) {
-if (value <= this.redundancy[i]) {
-redundantSequences.add (this.originalSequences[i]);
-}}
-this.ap.idPanel.idCanvas.setHighlighted (redundantSequences);
-jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
-});
-Clazz.overrideMethod (c$, "applyButton_actionPerformed",
-function () {
-var del = new java.util.Vector ();
-this.undoButton.setEnabled (true);
-var value = this.slider.getValue ();
-var sg = this.ap.av.getSelectionGroup ();
-for (var i = 0; i < this.redundancy.length; i++) {
-if (value <= this.redundancy[i]) {
-del.addElement (this.originalSequences[i]);
-}}
-if (del.size () > 0) {
-var deleted = new Array (del.size ());
-var width = 0;
-for (var i = 0; i < del.size (); i++) {
-deleted[i] = del.elementAt (i);
-if (deleted[i].getLength () > width) {
-width = deleted[i].getLength ();
-}}
-var cut = new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.remove_redundancy"), jalview.commands.EditCommand.Action.CUT, deleted, 0, width, this.ap.av.getAlignment ());
-var alignment = this.ap.av.getAlignment ();
-for (var i = 0; i < del.size (); i++) {
-alignment.deleteSequence (deleted[i]);
-if (sg != null) {
-sg.deleteSequence (deleted[i], false);
-}}
-this.historyList.push (cut);
-this.ap.alignFrame.addHistoryItem (cut);
-jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
-this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
-}});
-Clazz.overrideMethod (c$, "undoButton_actionPerformed",
-function () {
-var command = this.historyList.pop ();
-command.undoCommand (null);
-if (this.ap.av.getHistoryList ().contains (command)) {
-this.ap.av.getHistoryList ().remove (command);
-this.ap.alignFrame.updateEditMenuBar ();
-this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
-}this.ap.paintAlignment (true);
-if (this.historyList.size () == 0) {
-this.undoButton.setEnabled (false);
-}});
-Clazz.defineMethod (c$, "valueField_actionPerformed",
-function (e) {
-try {
-var i = Integer.parseInt (this.valueField.getText ());
-this.slider.setValue (i);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-this.valueField.setText (this.slider.getValue () + "");
-} else {
-throw ex;
-}
-}
-}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "windowOpened",
-function (evt) {
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowClosing",
-function (evt) {
-this.ap.idPanel.idCanvas.setHighlighted (null);
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowClosed",
-function (evt) {
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowActivated",
-function (evt) {
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowDeactivated",
-function (evt) {
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowIconified",
-function (evt) {
-}, "java.awt.event.WindowEvent");
-Clazz.overrideMethod (c$, "windowDeiconified",
-function (evt) {
-}, "java.awt.event.WindowEvent");
-c$.$RedundancyPanel$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "RedundancyPanel$1", null, java.awt.event.AdjustmentListener);
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-this.b$["jalview.appletgui.RedundancyPanel"].valueField.setText (this.b$["jalview.appletgui.RedundancyPanel"].slider.getValue () + "");
-this.b$["jalview.appletgui.RedundancyPanel"].sliderValueChanged ();
-}, "java.awt.event.AdjustmentEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.SliderPanel", "java.awt.event.WindowListener", "java.util.Stack"], "jalview.appletgui.RedundancyPanel", ["awt2swing.Frame", "jalview.analysis.AlignSeq", "jalview.appletgui.PaintRefresher", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "jalview.util.MessageManager", "java.awt.event.AdjustmentListener", "java.lang.Thread", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.historyList = null;
+this.redundancy = null;
+this.originalSequences = null;
+this.frame = null;
+this.redundantSeqs = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "RedundancyPanel", jalview.appletgui.SliderPanel, [Runnable, java.awt.event.WindowListener]);
+Clazz.prepareFields (c$, function () {
+this.historyList = new java.util.Stack ();
+});
+Clazz.makeConstructor (c$,
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.RedundancyPanel, [ap, 0, false, null]);
+this.redundantSeqs = new java.util.Vector ();
+this.ap = ap;
+this.undoButton.setVisible (true);
+this.applyButton.setVisible (true);
+this.allGroupsCheck.setVisible (false);
+this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
+this.valueField.setText ("100");
+this.slider.setVisibleAmount (1);
+this.slider.setMinimum (0);
+this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
+this.slider.setValue (100);
+this.slider.addAdjustmentListener (((Clazz.isClassDefined ("jalview.appletgui.RedundancyPanel$1") ? 0 : jalview.appletgui.RedundancyPanel.$RedundancyPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.RedundancyPanel$1, this, null)));
+this.frame = new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.redundancy_threshold_selection"), 400, 100);
+this.frame.addWindowListener (this);
+var worker = new Thread (this);
+worker.start ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "run",
+function () {
+this.label.setText (jalview.util.MessageManager.getString ("label.calculating"));
+this.slider.setVisible (false);
+this.applyButton.setEnabled (false);
+this.valueField.setVisible (false);
+this.validate ();
+var omitHidden = null;
+var sg = this.ap.av.getSelectionGroup ();
+var height;
+var start;
+var end;
+if ((sg != null) && (sg.getSize () >= 1)) {
+this.originalSequences = sg.getSequencesInOrder (this.ap.av.getAlignment ());
+start = sg.getStartRes ();
+end = sg.getEndRes ();
+} else {
+this.originalSequences = this.ap.av.getAlignment ().getSequencesArray ();
+start = 0;
+end = this.ap.av.getAlignment ().getWidth ();
+}height = this.originalSequences.length;
+this.redundancy = jalview.analysis.AlignSeq.computeRedundancyMatrix (this.originalSequences, omitHidden, start, end, false);
+this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
+this.slider.setVisible (true);
+this.applyButton.setEnabled (true);
+this.valueField.setVisible (true);
+this.validate ();
+this.sliderValueChanged ();
+});
+Clazz.defineMethod (c$, "sliderValueChanged",
+function () {
+if (this.redundancy == null) {
+return;
+}var value = this.slider.getValue ();
+var redundantSequences = new java.util.ArrayList ();
+for (var i = 0; i < this.redundancy.length; i++) {
+if (value <= this.redundancy[i]) {
+redundantSequences.add (this.originalSequences[i]);
+}}
+this.ap.idPanel.idCanvas.setHighlighted (redundantSequences);
+jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
+});
+Clazz.overrideMethod (c$, "applyButton_actionPerformed",
+function () {
+var del = new java.util.Vector ();
+this.undoButton.setEnabled (true);
+var value = this.slider.getValue ();
+var sg = this.ap.av.getSelectionGroup ();
+for (var i = 0; i < this.redundancy.length; i++) {
+if (value <= this.redundancy[i]) {
+del.addElement (this.originalSequences[i]);
+}}
+if (del.size () > 0) {
+var deleted = new Array (del.size ());
+var width = 0;
+for (var i = 0; i < del.size (); i++) {
+deleted[i] = del.elementAt (i);
+if (deleted[i].getLength () > width) {
+width = deleted[i].getLength ();
+}}
+var cut = new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.remove_redundancy"), jalview.commands.EditCommand.Action.CUT, deleted, 0, width, this.ap.av.getAlignment ());
+var alignment = this.ap.av.getAlignment ();
+for (var i = 0; i < del.size (); i++) {
+alignment.deleteSequence (deleted[i]);
+if (sg != null) {
+sg.deleteSequence (deleted[i], false);
+}}
+this.historyList.push (cut);
+this.ap.alignFrame.addHistoryItem (cut);
+jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}});
+Clazz.overrideMethod (c$, "undoButton_actionPerformed",
+function () {
+var command = this.historyList.pop ();
+command.undoCommand (null);
+if (this.ap.av.getHistoryList ().contains (command)) {
+this.ap.av.getHistoryList ().remove (command);
+this.ap.alignFrame.updateEditMenuBar ();
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}this.ap.paintAlignment (true);
+if (this.historyList.size () == 0) {
+this.undoButton.setEnabled (false);
+}});
+Clazz.defineMethod (c$, "valueField_actionPerformed",
+function (e) {
+try {
+var i = Integer.parseInt (this.valueField.getText ());
+this.slider.setValue (i);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.valueField.setText (this.slider.getValue () + "");
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "windowOpened",
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowClosing",
+function (evt) {
+this.ap.idPanel.idCanvas.setHighlighted (null);
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowClosed",
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowActivated",
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowDeactivated",
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowIconified",
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowDeiconified",
+function (evt) {
+}, "java.awt.event.WindowEvent");
+c$.$RedundancyPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "RedundancyPanel$1", null, java.awt.event.AdjustmentListener);
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+this.b$["jalview.appletgui.RedundancyPanel"].valueField.setText (this.b$["jalview.appletgui.RedundancyPanel"].slider.getValue () + "");
+this.b$["jalview.appletgui.RedundancyPanel"].sliderValueChanged ();
+}, "java.awt.event.AdjustmentEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/RotatableCanvas.js b/bin/jalview/appletgui/RotatableCanvas.js
index 0bb0b4a..5e61dea 100644
--- a/bin/jalview/appletgui/RotatableCanvas.js
+++ b/bin/jalview/appletgui/RotatableCanvas.js
@@ -1,371 +1,371 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "jalview.api.RotatableCanvasI", "java.awt.event.KeyListener", "$.MouseListener", "$.MouseMotionListener", "jalview.math.RotatableMatrix"], "jalview.appletgui.RotatableCanvas", ["jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "jalview.util.Format", "$.MessageManager", "java.awt.Color", "$.Dimension", "$.Font"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.idmat = null;
-this.objmat = null;
-this.rotmat = null;
-this.tooltip = null;
-this.toolx = 0;
-this.tooly = 0;
-this.$drawAxes = true;
-this.omx = 0;
-this.mx = 0;
-this.omy = 0;
-this.my = 0;
-this.img = null;
-this.ig = null;
-this.prefsize = null;
-this.centre = null;
-this.$width = null;
-this.max = null;
-this.min = null;
-this.maxwidth = 0;
-this.scale = 0;
-this.npoint = 0;
-this.points = null;
-this.orig = null;
-this.axes = null;
-this.startx = 0;
-this.starty = 0;
-this.lastx = 0;
-this.lasty = 0;
-this.rectx1 = 0;
-this.recty1 = 0;
-this.rectx2 = 0;
-this.recty2 = 0;
-this.scalefactor = 1;
-this.av = null;
-this.$showLabels = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "RotatableCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener, jalview.api.RotatableCanvasI]);
-Clazz.prepareFields (c$, function () {
-this.idmat = new jalview.math.RotatableMatrix (3, 3);
-this.objmat = new jalview.math.RotatableMatrix (3, 3);
-this.rotmat = new jalview.math.RotatableMatrix (3, 3);
-this.centre = Clazz.newFloatArray (3, 0);
-this.$width = Clazz.newFloatArray (3, 0);
-this.max = Clazz.newFloatArray (3, 0);
-this.min = Clazz.newFloatArray (3, 0);
-});
-Clazz.makeConstructor (c$,
-function (av) {
-Clazz.superConstructor (this, jalview.appletgui.RotatableCanvas, []);
-this.av = av;
-}, "jalview.viewmodel.AlignmentViewport");
-Clazz.defineMethod (c$, "showLabels",
-function (b) {
-this.$showLabels = b;
-this.repaint ();
-}, "~B");
-Clazz.overrideMethod (c$, "setPoints",
-function (points, npoint) {
-this.points = points;
-this.npoint = npoint;
-jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
-this.prefsize = this.getPreferredSize ();
-this.orig = Clazz.newFloatArray (npoint, 3, 0);
-for (var i = 0; i < npoint; i++) {
-var sp = points.elementAt (i);
-for (var j = 0; j < 3; j++) {
-this.orig[i][j] = sp.coord[j];
-}
-}
-for (var i = 0; i < 3; i++) {
-for (var j = 0; j < 3; j++) {
-if (i != j) {
-this.idmat.addElement (i, j, 0);
-this.objmat.addElement (i, j, 0);
-this.rotmat.addElement (i, j, 0);
-} else {
-this.idmat.addElement (i, j, 0);
-this.objmat.addElement (i, j, 0);
-this.rotmat.addElement (i, j, 0);
-}}
-}
-this.axes = Clazz.newFloatArray (3, 3, 0);
-this.initAxes ();
-this.findCentre ();
-this.findWidth ();
-this.scale = this.findScale ();
-this.addMouseListener (this);
-this.addKeyListener (this);
-this.addMouseMotionListener (this);
-}, "java.util.Vector,~N");
-Clazz.defineMethod (c$, "initAxes",
-function () {
-for (var i = 0; i < 3; i++) {
-for (var j = 0; j < 3; j++) {
-if (i != j) {
-this.axes[i][j] = 0;
-} else {
-this.axes[i][j] = 1;
-}}
-}
-});
-Clazz.defineMethod (c$, "findWidth",
-function () {
-this.max = Clazz.newFloatArray (3, 0);
-this.min = Clazz.newFloatArray (3, 0);
-this.max[0] = -1.0E30;
-this.max[1] = -1.0E30;
-this.max[2] = -1.0E30;
-this.min[0] = 1e30;
-this.min[1] = 1e30;
-this.min[2] = 1e30;
-for (var i = 0; i < 3; i++) {
-for (var j = 0; j < this.npoint; j++) {
-var sp = this.points.elementAt (j);
-if (sp.coord[i] >= this.max[i]) {
-this.max[i] = sp.coord[i];
-}if (sp.coord[i] <= this.min[i]) {
-this.min[i] = sp.coord[i];
-}}
-}
-this.$width[0] = Math.abs (this.max[0] - this.min[0]);
-this.$width[1] = Math.abs (this.max[1] - this.min[1]);
-this.$width[2] = Math.abs (this.max[2] - this.min[2]);
-this.maxwidth = this.$width[0];
-if (this.$width[1] > this.$width[0]) {
-this.maxwidth = this.$width[1];
-}if (this.$width[2] > this.$width[1]) {
-this.maxwidth = this.$width[2];
-}});
-Clazz.defineMethod (c$, "findScale",
-function () {
-var dim;
-var width;
-var height;
-if (this.getSize ().width != 0) {
-width = this.getSize ().width;
-height = this.getSize ().height;
-} else {
-width = this.prefsize.width;
-height = this.prefsize.height;
-}if (width < height) {
-dim = width;
-} else {
-dim = height;
-}return dim * this.scalefactor / (2 * this.maxwidth);
-});
-Clazz.defineMethod (c$, "findCentre",
-function () {
-this.findWidth ();
-this.centre[0] = (this.max[0] + this.min[0]) / 2;
-this.centre[1] = (this.max[1] + this.min[1]) / 2;
-this.centre[2] = (this.max[2] + this.min[2]) / 2;
-});
-Clazz.overrideMethod (c$, "getPreferredSize",
-function () {
-if (this.prefsize != null) {
-return this.prefsize;
-} else {
-return new java.awt.Dimension (400, 400);
-}});
-Clazz.overrideMethod (c$, "getMinimumSize",
-function () {
-return this.getPreferredSize ();
-});
-Clazz.overrideMethod (c$, "update",
-function (g) {
-this.paint (g);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "PaintComponent",
-function (g) {
-if (this.points == null) {
-g.setFont ( new java.awt.Font ("Verdana", 0, 18));
-g.drawString (jalview.util.MessageManager.getString ("label.calculating_pca") + "....", 20, Clazz.doubleToInt (this.getSize ().height / 2));
-} else {
-if ((this.img == null) || (this.prefsize.width != this.getSize ().width) || (this.prefsize.height != this.getSize ().height)) {
-this.prefsize.width = this.getSize ().width;
-this.prefsize.height = this.getSize ().height;
-this.scale = this.findScale ();
-this.img = this.createImage (this.getSize ().width, this.getSize ().height);
-this.ig = this.img.getGraphics ();
-}this.drawBackground (this.ig, java.awt.Color.black);
-this.drawScene (this.ig);
-if (this.$drawAxes == true) {
-this.drawAxes (this.ig);
-}if (this.tooltip != null) {
-this.ig.setColor (java.awt.Color.red);
-this.ig.drawString (this.tooltip, this.toolx, this.tooly);
-}g.drawImage (this.img, 0, 0, this);
-}}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "drawAxes",
-function (g) {
-g.setColor (java.awt.Color.yellow);
-for (var i = 0; i < 3; i++) {
-g.drawLine (Clazz.doubleToInt (this.getSize ().width / 2), Clazz.doubleToInt (this.getSize ().height / 2), Clazz.floatToInt (this.axes[i][0] * this.scale * this.max[0] + Clazz.doubleToInt (this.getSize ().width / 2)), Clazz.floatToInt (this.axes[i][1] * this.scale * this.max[1] + Clazz.doubleToInt (this.getSize ().height / 2)));
-}
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "drawBackground",
-function (g, col) {
-g.setColor (col);
-g.fillRect (0, 0, this.prefsize.width, this.prefsize.height);
-}, "java.awt.Graphics,java.awt.Color");
-Clazz.defineMethod (c$, "drawScene",
-function (g) {
-var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);
-var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);
-for (var i = 0; i < this.npoint; i++) {
-var sp = this.points.elementAt (i);
-var x = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
-var y = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
-var z = sp.coord[1] - this.centre[2];
-if (this.av.getSequenceColour (sp.sequence) === java.awt.Color.black) {
-g.setColor (java.awt.Color.white);
-} else {
-g.setColor (this.av.getSequenceColour (sp.sequence));
-}if (this.av.getSelectionGroup () != null) {
-if (this.av.getSelectionGroup ().getSequences (null).contains ((this.points.elementAt (i)).sequence)) {
-g.setColor (java.awt.Color.gray);
-}}if (z < 0) {
-g.setColor (g.getColor ().darker ());
-}g.fillRect (x - 3, y - 3, 6, 6);
-if (this.$showLabels) {
-g.setColor (java.awt.Color.red);
-g.drawString ((this.points.elementAt (i)).sequence.getName (), x - 3, y - 4);
-}}
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "minimumsize",
-function () {
-return this.prefsize;
-});
-Clazz.defineMethod (c$, "preferredsize",
-function () {
-return this.prefsize;
-});
-Clazz.overrideMethod (c$, "keyTyped",
-function (evt) {
-}, "java.awt.event.KeyEvent");
-Clazz.overrideMethod (c$, "keyReleased",
-function (evt) {
-}, "java.awt.event.KeyEvent");
-Clazz.overrideMethod (c$, "keyPressed",
-function (evt) {
-if (evt.getKeyCode () == 38) {
-this.scalefactor = (this.scalefactor * 1.1);
-this.scale = this.findScale ();
-} else if (evt.getKeyCode () == 40) {
-this.scalefactor = (this.scalefactor * 0.9);
-this.scale = this.findScale ();
-} else if (evt.getKeyChar () == 's') {
-System.err.println ("DEBUG: Rectangle selection");
-if (this.rectx2 != -1 && this.recty2 != -1) {
-this.rectSelect (this.rectx1, this.recty1, this.rectx2, this.recty2);
-}}this.repaint ();
-}, "java.awt.event.KeyEvent");
-Clazz.defineMethod (c$, "printPoints",
-function () {
-for (var i = 0; i < this.npoint; i++) {
-var sp = this.points.elementAt (i);
-jalview.util.Format.printLong (System.out, "%5d ", i);
-for (var j = 0; j < 3; j++) {
-jalview.util.Format.printDouble (System.out, "%13.3f ", sp.coord[j]);
-}
-System.out.println ();
-}
-});
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-var x = evt.getX ();
-var y = evt.getY ();
-this.mx = x;
-this.my = y;
-this.omx = this.mx;
-this.omy = this.my;
-this.startx = x;
-this.starty = y;
-this.rectx1 = x;
-this.recty1 = y;
-this.rectx2 = -1;
-this.recty2 = -1;
-var found = this.findPoint (x, y);
-if (found != null) {
-if (this.av.getSelectionGroup () != null) {
-this.av.getSelectionGroup ().addOrRemove (found, true);
-this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
-} else {
-this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
-this.av.getSelectionGroup ().addOrRemove (found, true);
-this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
-}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
-this.av.sendSelection ();
-}this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-var found = this.findPoint (evt.getX (), evt.getY ());
-if (found == null) {
-this.tooltip = null;
-} else {
-this.tooltip = found.getName ();
-this.toolx = evt.getX ();
-this.tooly = evt.getY ();
-}this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-this.mx = evt.getX ();
-this.my = evt.getY ();
-this.rotmat.setIdentity ();
-this.rotmat.rotate (this.my - this.omy, 'x');
-this.rotmat.rotate (this.mx - this.omx, 'y');
-for (var i = 0; i < this.npoint; i++) {
-var sp = this.points.elementAt (i);
-sp.coord[0] -= this.centre[0];
-sp.coord[1] -= this.centre[1];
-sp.coord[2] -= this.centre[2];
-sp.coord = this.rotmat.vectorMultiply (sp.coord);
-sp.coord[0] += this.centre[0];
-sp.coord[1] += this.centre[1];
-sp.coord[2] += this.centre[2];
-}
-for (var i = 0; i < 3; i++) {
-this.axes[i] = this.rotmat.vectorMultiply (this.axes[i]);
-}
-this.omx = this.mx;
-this.omy = this.my;
-this.paint (this.getGraphics ());
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "rectSelect",
-function (x1, y1, x2, y2) {
-for (var i = 0; i < this.npoint; i++) {
-var sp = this.points.elementAt (i);
-var tmp1 = Clazz.doubleToInt ((sp.coord[0] - this.centre[0]) * this.scale + this.getSize ().width / 2.0);
-var tmp2 = Clazz.doubleToInt ((sp.coord[1] - this.centre[1]) * this.scale + this.getSize ().height / 2.0);
-if (tmp1 > x1 && tmp1 < x2 && tmp2 > y1 && tmp2 < y2) {
-if (this.av != null) {
-if (!this.av.getSelectionGroup ().getSequences (null).contains (sp.sequence)) {
-this.av.getSelectionGroup ().addSequence (sp.sequence, true);
-}}}}
-}, "~N,~N,~N,~N");
-Clazz.defineMethod (c$, "findPoint",
-function (x, y) {
-var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);
-var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);
-var found = -1;
-for (var i = 0; i < this.npoint; i++) {
-var sp = this.points.elementAt (i);
-var px = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
-var py = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
-if (Math.abs (px - x) < 3 && Math.abs (py - y) < 3) {
-found = i;
-}}
-if (found != -1) {
-return (this.points.elementAt (found)).sequence;
-} else {
-return null;
-}}, "~N,~N");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.api.RotatableCanvasI", "java.awt.event.KeyListener", "$.MouseListener", "$.MouseMotionListener", "jalview.math.RotatableMatrix"], "jalview.appletgui.RotatableCanvas", ["jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "jalview.util.Format", "$.MessageManager", "java.awt.Color", "$.Dimension", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.idmat = null;
+this.objmat = null;
+this.rotmat = null;
+this.tooltip = null;
+this.toolx = 0;
+this.tooly = 0;
+this.$drawAxes = true;
+this.omx = 0;
+this.mx = 0;
+this.omy = 0;
+this.my = 0;
+this.img = null;
+this.ig = null;
+this.prefsize = null;
+this.centre = null;
+this.$width = null;
+this.max = null;
+this.min = null;
+this.maxwidth = 0;
+this.scale = 0;
+this.npoint = 0;
+this.points = null;
+this.orig = null;
+this.axes = null;
+this.startx = 0;
+this.starty = 0;
+this.lastx = 0;
+this.lasty = 0;
+this.rectx1 = 0;
+this.recty1 = 0;
+this.rectx2 = 0;
+this.recty2 = 0;
+this.scalefactor = 1;
+this.av = null;
+this.$showLabels = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "RotatableCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener, jalview.api.RotatableCanvasI]);
+Clazz.prepareFields (c$, function () {
+this.idmat = new jalview.math.RotatableMatrix (3, 3);
+this.objmat = new jalview.math.RotatableMatrix (3, 3);
+this.rotmat = new jalview.math.RotatableMatrix (3, 3);
+this.centre = Clazz.newFloatArray (3, 0);
+this.$width = Clazz.newFloatArray (3, 0);
+this.max = Clazz.newFloatArray (3, 0);
+this.min = Clazz.newFloatArray (3, 0);
+});
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.RotatableCanvas, []);
+this.av = av;
+}, "jalview.viewmodel.AlignmentViewport");
+Clazz.defineMethod (c$, "showLabels",
+function (b) {
+this.$showLabels = b;
+this.repaint ();
+}, "~B");
+Clazz.overrideMethod (c$, "setPoints",
+function (points, npoint) {
+this.points = points;
+this.npoint = npoint;
+jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
+this.prefsize = this.getPreferredSize ();
+this.orig = Clazz.newFloatArray (npoint, 3, 0);
+for (var i = 0; i < npoint; i++) {
+var sp = points.elementAt (i);
+for (var j = 0; j < 3; j++) {
+this.orig[i][j] = sp.coord[j];
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+if (i != j) {
+this.idmat.addElement (i, j, 0);
+this.objmat.addElement (i, j, 0);
+this.rotmat.addElement (i, j, 0);
+} else {
+this.idmat.addElement (i, j, 0);
+this.objmat.addElement (i, j, 0);
+this.rotmat.addElement (i, j, 0);
+}}
+}
+this.axes = Clazz.newFloatArray (3, 3, 0);
+this.initAxes ();
+this.findCentre ();
+this.findWidth ();
+this.scale = this.findScale ();
+this.addMouseListener (this);
+this.addKeyListener (this);
+this.addMouseMotionListener (this);
+}, "java.util.Vector,~N");
+Clazz.defineMethod (c$, "initAxes",
+function () {
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+if (i != j) {
+this.axes[i][j] = 0;
+} else {
+this.axes[i][j] = 1;
+}}
+}
+});
+Clazz.defineMethod (c$, "findWidth",
+function () {
+this.max = Clazz.newFloatArray (3, 0);
+this.min = Clazz.newFloatArray (3, 0);
+this.max[0] = -1.0E30;
+this.max[1] = -1.0E30;
+this.max[2] = -1.0E30;
+this.min[0] = 1e30;
+this.min[1] = 1e30;
+this.min[2] = 1e30;
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < this.npoint; j++) {
+var sp = this.points.elementAt (j);
+if (sp.coord[i] >= this.max[i]) {
+this.max[i] = sp.coord[i];
+}if (sp.coord[i] <= this.min[i]) {
+this.min[i] = sp.coord[i];
+}}
+}
+this.$width[0] = Math.abs (this.max[0] - this.min[0]);
+this.$width[1] = Math.abs (this.max[1] - this.min[1]);
+this.$width[2] = Math.abs (this.max[2] - this.min[2]);
+this.maxwidth = this.$width[0];
+if (this.$width[1] > this.$width[0]) {
+this.maxwidth = this.$width[1];
+}if (this.$width[2] > this.$width[1]) {
+this.maxwidth = this.$width[2];
+}});
+Clazz.defineMethod (c$, "findScale",
+function () {
+var dim;
+var width;
+var height;
+if (this.getSize ().width != 0) {
+width = this.getSize ().width;
+height = this.getSize ().height;
+} else {
+width = this.prefsize.width;
+height = this.prefsize.height;
+}if (width < height) {
+dim = width;
+} else {
+dim = height;
+}return dim * this.scalefactor / (2 * this.maxwidth);
+});
+Clazz.defineMethod (c$, "findCentre",
+function () {
+this.findWidth ();
+this.centre[0] = (this.max[0] + this.min[0]) / 2;
+this.centre[1] = (this.max[1] + this.min[1]) / 2;
+this.centre[2] = (this.max[2] + this.min[2]) / 2;
+});
+Clazz.overrideMethod (c$, "getPreferredSize",
+function () {
+if (this.prefsize != null) {
+return this.prefsize;
+} else {
+return new java.awt.Dimension (400, 400);
+}});
+Clazz.overrideMethod (c$, "getMinimumSize",
+function () {
+return this.getPreferredSize ();
+});
+Clazz.overrideMethod (c$, "update",
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "PaintComponent",
+function (g) {
+if (this.points == null) {
+g.setFont ( new java.awt.Font ("Verdana", 0, 18));
+g.drawString (jalview.util.MessageManager.getString ("label.calculating_pca") + "....", 20, Clazz.doubleToInt (this.getSize ().height / 2));
+} else {
+if ((this.img == null) || (this.prefsize.width != this.getSize ().width) || (this.prefsize.height != this.getSize ().height)) {
+this.prefsize.width = this.getSize ().width;
+this.prefsize.height = this.getSize ().height;
+this.scale = this.findScale ();
+this.img = this.createImage (this.getSize ().width, this.getSize ().height);
+this.ig = this.img.getGraphics ();
+}this.drawBackground (this.ig, java.awt.Color.black);
+this.drawScene (this.ig);
+if (this.$drawAxes == true) {
+this.drawAxes (this.ig);
+}if (this.tooltip != null) {
+this.ig.setColor (java.awt.Color.red);
+this.ig.drawString (this.tooltip, this.toolx, this.tooly);
+}g.drawImage (this.img, 0, 0, this);
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawAxes",
+function (g) {
+g.setColor (java.awt.Color.yellow);
+for (var i = 0; i < 3; i++) {
+g.drawLine (Clazz.doubleToInt (this.getSize ().width / 2), Clazz.doubleToInt (this.getSize ().height / 2), Clazz.floatToInt (this.axes[i][0] * this.scale * this.max[0] + Clazz.doubleToInt (this.getSize ().width / 2)), Clazz.floatToInt (this.axes[i][1] * this.scale * this.max[1] + Clazz.doubleToInt (this.getSize ().height / 2)));
+}
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawBackground",
+function (g, col) {
+g.setColor (col);
+g.fillRect (0, 0, this.prefsize.width, this.prefsize.height);
+}, "java.awt.Graphics,java.awt.Color");
+Clazz.defineMethod (c$, "drawScene",
+function (g) {
+var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);
+var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var x = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
+var y = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
+var z = sp.coord[1] - this.centre[2];
+if (this.av.getSequenceColour (sp.sequence) === java.awt.Color.black) {
+g.setColor (java.awt.Color.white);
+} else {
+g.setColor (this.av.getSequenceColour (sp.sequence));
+}if (this.av.getSelectionGroup () != null) {
+if (this.av.getSelectionGroup ().getSequences (null).contains ((this.points.elementAt (i)).sequence)) {
+g.setColor (java.awt.Color.gray);
+}}if (z < 0) {
+g.setColor (g.getColor ().darker ());
+}g.fillRect (x - 3, y - 3, 6, 6);
+if (this.$showLabels) {
+g.setColor (java.awt.Color.red);
+g.drawString ((this.points.elementAt (i)).sequence.getName (), x - 3, y - 4);
+}}
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "minimumsize",
+function () {
+return this.prefsize;
+});
+Clazz.defineMethod (c$, "preferredsize",
+function () {
+return this.prefsize;
+});
+Clazz.overrideMethod (c$, "keyTyped",
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "keyReleased",
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "keyPressed",
+function (evt) {
+if (evt.getKeyCode () == 38) {
+this.scalefactor = (this.scalefactor * 1.1);
+this.scale = this.findScale ();
+} else if (evt.getKeyCode () == 40) {
+this.scalefactor = (this.scalefactor * 0.9);
+this.scale = this.findScale ();
+} else if (evt.getKeyChar () == 's') {
+System.err.println ("DEBUG: Rectangle selection");
+if (this.rectx2 != -1 && this.recty2 != -1) {
+this.rectSelect (this.rectx1, this.recty1, this.rectx2, this.recty2);
+}}this.repaint ();
+}, "java.awt.event.KeyEvent");
+Clazz.defineMethod (c$, "printPoints",
+function () {
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+jalview.util.Format.printLong (System.out, "%5d ", i);
+for (var j = 0; j < 3; j++) {
+jalview.util.Format.printDouble (System.out, "%13.3f ", sp.coord[j]);
+}
+System.out.println ();
+}
+});
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+var x = evt.getX ();
+var y = evt.getY ();
+this.mx = x;
+this.my = y;
+this.omx = this.mx;
+this.omy = this.my;
+this.startx = x;
+this.starty = y;
+this.rectx1 = x;
+this.recty1 = y;
+this.rectx2 = -1;
+this.recty2 = -1;
+var found = this.findPoint (x, y);
+if (found != null) {
+if (this.av.getSelectionGroup () != null) {
+this.av.getSelectionGroup ().addOrRemove (found, true);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+} else {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+this.av.getSelectionGroup ().addOrRemove (found, true);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.av.sendSelection ();
+}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+var found = this.findPoint (evt.getX (), evt.getY ());
+if (found == null) {
+this.tooltip = null;
+} else {
+this.tooltip = found.getName ();
+this.toolx = evt.getX ();
+this.tooly = evt.getY ();
+}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+this.mx = evt.getX ();
+this.my = evt.getY ();
+this.rotmat.setIdentity ();
+this.rotmat.rotate (this.my - this.omy, 'x');
+this.rotmat.rotate (this.mx - this.omx, 'y');
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+sp.coord[0] -= this.centre[0];
+sp.coord[1] -= this.centre[1];
+sp.coord[2] -= this.centre[2];
+sp.coord = this.rotmat.vectorMultiply (sp.coord);
+sp.coord[0] += this.centre[0];
+sp.coord[1] += this.centre[1];
+sp.coord[2] += this.centre[2];
+}
+for (var i = 0; i < 3; i++) {
+this.axes[i] = this.rotmat.vectorMultiply (this.axes[i]);
+}
+this.omx = this.mx;
+this.omy = this.my;
+this.paint (this.getGraphics ());
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "rectSelect",
+function (x1, y1, x2, y2) {
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var tmp1 = Clazz.doubleToInt ((sp.coord[0] - this.centre[0]) * this.scale + this.getSize ().width / 2.0);
+var tmp2 = Clazz.doubleToInt ((sp.coord[1] - this.centre[1]) * this.scale + this.getSize ().height / 2.0);
+if (tmp1 > x1 && tmp1 < x2 && tmp2 > y1 && tmp2 < y2) {
+if (this.av != null) {
+if (!this.av.getSelectionGroup ().getSequences (null).contains (sp.sequence)) {
+this.av.getSelectionGroup ().addSequence (sp.sequence, true);
+}}}}
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "findPoint",
+function (x, y) {
+var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);
+var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);
+var found = -1;
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var px = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
+var py = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
+if (Math.abs (px - x) < 3 && Math.abs (py - y) < 3) {
+found = i;
+}}
+if (found != -1) {
+return (this.points.elementAt (found)).sequence;
+} else {
+return null;
+}}, "~N,~N");
+});
diff --git a/bin/jalview/appletgui/ScalePanel.class b/bin/jalview/appletgui/ScalePanel.class
index 66ccdcbc301ce1614b7fc4761be9ab4c49f7bfa7..332e353f97240d915fd50282bd0cb744c0e578a1 100644
GIT binary patch
delta 77
zcmbQ>*5|e%L71^?bE0q%vy?dl_a6p5#y<>g#Mvz9ZU=sn0vtbib0~ this.av.getAlignment ().getWidth ()) {
-res = this.av.getAlignment ().getWidth () - 1;
-}if (this.av.hasHiddenColumns ()) {
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
-}if (!this.stretchingGroup) {
-this.ap.paintAlignment (false);
-return;
-}var sg = this.av.getSelectionGroup ();
-if (res > sg.getStartRes ()) {
-sg.setEndRes (res);
-} else if (res < sg.getStartRes ()) {
-sg.setStartRes (res);
-}this.stretchingGroup = false;
-this.ap.paintAlignment (false);
-this.av.sendSelection ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-this.mouseDragging = true;
-var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
-if (res < 0) {
-res = 0;
-}if (this.av.hasHiddenColumns ()) {
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
-}if (res > this.av.getAlignment ().getWidth ()) {
-res = this.av.getAlignment ().getWidth () - 1;
-}if (res < this.min) {
-this.min = res;
-}if (res > this.max) {
-this.max = res;
-}var sg = this.av.getSelectionGroup ();
-if (sg != null) {
-this.stretchingGroup = true;
-if (!this.av.getColumnSelection ().contains (res)) {
-this.av.getColumnSelection ().addElement (res);
-}if (res > sg.getStartRes ()) {
-sg.setEndRes (res);
-}if (res < sg.getStartRes ()) {
-sg.setStartRes (res);
-}var col;
-for (var i = this.min; i <= this.max; i++) {
-col = this.av.getColumnSelection ().adjustForHiddenColumns (i);
-if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {
-this.av.getColumnSelection ().removeElement (col);
-} else {
-this.av.getColumnSelection ().addElement (col);
-}}
-this.ap.paintAlignment (false);
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-if (this.mouseDragging) {
-this.ap.seqPanel.scrollCanvas (null);
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-if (this.mouseDragging) {
-this.ap.seqPanel.scrollCanvas (evt);
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-if (!this.av.hasHiddenColumns ()) {
-return;
-}var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
-this.reveal = null;
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
-if (res + 1 == region[0] || res - 1 == region[1]) {
-this.reveal = region;
-break;
-}}
-this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-if (this.av.getWrapAlignment ()) return;
-this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "drawScale",
-function (gg, startx, endx, width, height) {
-gg.setFont (this.av.getFont ());
-gg.setColor (java.awt.Color.white);
-gg.fillRect (0, 0, width, height);
-gg.setColor (java.awt.Color.black);
-var cs = this.av.getColumnSelection ();
-gg.setColor ( new java.awt.Color (220, 0, 0));
-var avcharWidth = this.av.getCharWidth ();
-var avcharHeight = this.av.getCharHeight ();
-for (var i = 0; i < cs.size (); i++) {
-var sel = cs.columnAt (i);
-if (this.av.hasHiddenColumns ()) {
-sel = this.av.getColumnSelection ().findColumnPosition (sel);
-}if ((sel >= startx) && (sel <= endx)) {
-gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);
-}}
-gg.setColor (java.awt.Color.black);
-var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;
-var fm = gg.getFontMetrics (this.av.getFont ());
-var y = avcharHeight - fm.getDescent ();
-if ((scalestartx % 10) == 0) {
-scalestartx += 5;
-}var string;
-var maxX = 0;
-for (var i = scalestartx; i < endx; i += 5) {
-if ((i % 10) == 0) {
-string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));
-if ((i - startx - 1) * avcharWidth > maxX) {
-gg.drawString (string, (i - startx - 1) * avcharWidth, y);
-maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);
-}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
-} else {
-gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
-}}
-if (this.av.hasHiddenColumns ()) {
-gg.setColor (java.awt.Color.blue);
-var res;
-if (this.av.getShowHiddenMarkers ()) {
-for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
-res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;
-if (res < 0 || res > endx - scalestartx) {
-continue;
-}gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]), Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);
-}
-}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {
-gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);
-}}}, "java.awt.Graphics,~N,~N,~N,~N");
-c$.$ScalePanel$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
-this.b$["jalview.appletgui.ScalePanel"].reveal = null;
-this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
-}}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$ScalePanel$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();
-this.b$["jalview.appletgui.ScalePanel"].reveal = null;
-this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
-}}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$ScalePanel$3$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);
-if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {
-this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);
-}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
-}}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.offy = 4;
+this.$width = 0;
+this.av = null;
+this.ap = null;
+this.stretchingGroup = false;
+this.min = 0;
+this.max = 0;
+this.mouseDragging = false;
+this.reveal = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz.makeConstructor (c$,
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.ScalePanel, []);
+this.setName ("scalePanel");
+this.setLayout (null);
+this.av = av;
+this.ap = ap;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+var x = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+var res;
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (x);
+} else {
+res = x;
+}this.min = res;
+this.max = res;
+if ((evt.getModifiers () & 4) == 4) {
+var pop = new awt2swing.PopupMenu ();
+if (this.reveal != null) {
+var item = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));
+pop.add (item);
+if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {
+item = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));
+pop.add (item);
+}this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+} else if (this.av.getColumnSelection ().contains (res)) {
+var item = new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz.cloneFinals ("res", res))));
+pop.add (item);
+this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+}} else {
+if (!evt.isControlDown () && !evt.isShiftDown ()) {
+this.av.getColumnSelection ().clear ();
+}this.av.getColumnSelection ().addElement (res);
+var sg = new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+sg.setStartRes (res);
+sg.setEndRes (res);
+this.av.setSelectionGroup (sg);
+if (evt.isShiftDown ()) {
+var min = Math.min (this.av.getColumnSelection ().getMin (), res);
+var max = Math.max (this.av.getColumnSelection ().getMax (), res);
+for (var i = min; i < max; i++) {
+this.av.getColumnSelection ().addElement (i);
+}
+sg.setStartRes (min);
+sg.setEndRes (max);
+}}this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.mouseDragging = false;
+var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (!this.stretchingGroup) {
+this.ap.paintAlignment (false);
+return;
+}var sg = this.av.getSelectionGroup ();
+if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+} else if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}this.stretchingGroup = false;
+this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+this.mouseDragging = true;
+var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res < 0) {
+res = 0;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (res < this.min) {
+this.min = res;
+}if (res > this.max) {
+this.max = res;
+}var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+this.stretchingGroup = true;
+if (!this.av.getColumnSelection ().contains (res)) {
+this.av.getColumnSelection ().addElement (res);
+}if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+}if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}var col;
+for (var i = this.min; i <= this.max; i++) {
+col = this.av.getColumnSelection ().adjustForHiddenColumns (i);
+if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {
+this.av.getColumnSelection ().removeElement (col);
+} else {
+this.av.getColumnSelection ().addElement (col);
+}}
+this.ap.paintAlignment (false);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (null);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+if (!this.av.hasHiddenColumns ()) {
+return;
+}var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+this.reveal = null;
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+if (res + 1 == region[0] || res - 1 == region[1]) {
+this.reveal = region;
+break;
+}}
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+if (this.av.getWrapAlignment ()) return;
+this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawScale",
+function (gg, startx, endx, width, height) {
+gg.setFont (this.av.getFont ());
+gg.setColor (java.awt.Color.white);
+gg.fillRect (0, 0, width, height);
+gg.setColor (java.awt.Color.black);
+var cs = this.av.getColumnSelection ();
+gg.setColor ( new java.awt.Color (220, 0, 0));
+var avcharWidth = this.av.getCharWidth ();
+var avcharHeight = this.av.getCharHeight ();
+for (var i = 0; i < cs.size (); i++) {
+var sel = cs.columnAt (i);
+if (this.av.hasHiddenColumns ()) {
+sel = this.av.getColumnSelection ().findColumnPosition (sel);
+}if ((sel >= startx) && (sel <= endx)) {
+gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);
+}}
+gg.setColor (java.awt.Color.black);
+var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;
+var fm = gg.getFontMetrics (this.av.getFont ());
+var y = avcharHeight - fm.getDescent ();
+if ((scalestartx % 10) == 0) {
+scalestartx += 5;
+}var string;
+var maxX = 0;
+for (var i = scalestartx; i < endx; i += 5) {
+if ((i % 10) == 0) {
+string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));
+if ((i - startx - 1) * avcharWidth > maxX) {
+gg.drawString (string, (i - startx - 1) * avcharWidth, y);
+maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);
+}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+} else {
+gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+}}
+if (this.av.hasHiddenColumns ()) {
+gg.setColor (java.awt.Color.blue);
+var res;
+if (this.av.getShowHiddenMarkers ()) {
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;
+if (res < 0 || res > endx - scalestartx) {
+continue;
+}gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]), Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);
+}
+}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {
+gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);
+}}}, "java.awt.Graphics,~N,~N,~N,~N");
+c$.$ScalePanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$ScalePanel$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$ScalePanel$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);
+if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);
+}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/SeqCanvas.class b/bin/jalview/appletgui/SeqCanvas.class
index a5ce5f0d9c90908b872baf320a7eb6b5f4e6017b..c3feb048d8e8a1bfe47824aee5b7a027494a7db7 100644
GIT binary patch
delta 162
zcmZ2fIJa=aDS5`M&8Ox4n53l{IQSS8{xftiaI!Nn!TA1UM(@ot)lyhQ
zo-qjhWzc13Sj5h-U+fQq1mk~({KZP!
wV&I>wr!BU5k@h4uMxM>4M$=iDOBfU;pEtMWaRw?0=HQoQmf>KUEMn0K0MDHyz5oCK
diff --git a/bin/jalview/appletgui/SeqCanvas.js b/bin/jalview/appletgui/SeqCanvas.js
index ac84c24..af5372b 100644
--- a/bin/jalview/appletgui/SeqCanvas.js
+++ b/bin/jalview/appletgui/SeqCanvas.js
@@ -1,411 +1,411 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel"], "jalview.appletgui.SeqCanvas", ["jalview.appletgui.AnnotationPanel", "$.FeatureRenderer", "$.PaintRefresher", "$.SequenceRenderer", "jalview.util.Comparison", "java.awt.Color"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.fr = null;
-this.sr = null;
-this.img = null;
-this.gg = null;
-this.imgWidth = 0;
-this.imgHeight = 0;
-this.av = null;
-this.searchResults = null;
-this.$fastPaint = false;
-this.cursorX = 0;
-this.cursorY = 0;
-this.avcharHeight = 0;
-this.avcharWidth = 0;
-this.lastsr = 0;
-this.LABEL_WEST = 0;
-this.LABEL_EAST = 0;
-this.annotations = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "SeqCanvas", awt2swing.Panel);
-Clazz.makeConstructor (c$,
-function (av) {
-Clazz.superConstructor (this, jalview.appletgui.SeqCanvas, []);
-this.av = av;
-this.fr = new jalview.appletgui.FeatureRenderer (av);
-this.sr = new jalview.appletgui.SequenceRenderer (av);
-jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
-this.updateViewport ();
-}, "jalview.appletgui.AlignViewport");
-Clazz.defineMethod (c$, "updateViewport",
-($fz = function () {
-this.avcharHeight = this.av.getCharHeight ();
-this.avcharWidth = this.av.getCharWidth ();
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "getViewport",
-function () {
-return this.av;
-});
-Clazz.defineMethod (c$, "getFeatureRenderer",
-function () {
-return this.fr;
-});
-Clazz.defineMethod (c$, "getSequenceRenderer",
-function () {
-return this.sr;
-});
-Clazz.defineMethod (c$, "drawNorthScale",
-($fz = function (g, startx, endx, ypos) {
-var scalestartx = startx - startx % 10 + 10;
-g.setColor (java.awt.Color.black);
-for (var i = scalestartx; i < endx; i += 10) {
-var value = i;
-if (this.av.hasHiddenColumns ()) {
-value = this.av.getColumnSelection ().adjustForHiddenColumns (value);
-}g.drawString (String.valueOf (value), (i - startx - 1) * this.avcharWidth, ypos - (Clazz.doubleToInt (this.avcharHeight / 2)));
-g.drawLine (((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), (ypos + 2) - (Clazz.doubleToInt (this.avcharHeight / 2)), ((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), ypos - 2);
-}
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
-Clazz.defineMethod (c$, "drawWestScale",
-($fz = function (g, startx, endx, ypos) {
-var fm = this.getFontMetrics (this.av.getFont ());
-ypos += this.avcharHeight;
-if (this.av.hasHiddenColumns ()) {
-startx = this.av.getColumnSelection ().adjustForHiddenColumns (startx);
-endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
-}var maxwidth = this.av.getAlignment ().getWidth ();
-if (this.av.hasHiddenColumns ()) {
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
-}for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
-var seq = this.av.getAlignment ().getSequenceAt (i);
-var index = startx;
-var value = -1;
-while (index < endx) {
-if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
-index++;
-continue;
-}value = this.av.getAlignment ().getSequenceAt (i).findPosition (index);
-break;
-}
-if (value != -1) {
-var x = this.LABEL_WEST - fm.stringWidth (String.valueOf (value)) - Clazz.doubleToInt (this.avcharWidth / 2);
-g.drawString (value + "", x, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));
-}}
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
-Clazz.defineMethod (c$, "drawEastScale",
-($fz = function (g, startx, endx, ypos) {
-ypos += this.avcharHeight;
-if (this.av.hasHiddenColumns ()) {
-endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
-}var seq;
-for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
-seq = this.av.getAlignment ().getSequenceAt (i);
-var index = endx;
-var value = -1;
-while (index > startx) {
-if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
-index--;
-continue;
-}value = seq.findPosition (index);
-break;
-}
-if (value != -1) {
-g.drawString (String.valueOf (value), 0, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));
-}}
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
-Clazz.defineMethod (c$, "fastPaint",
-function (horizontal, vertical) {
-if (this.$fastPaint || this.gg == null) {
-return;
-}this.updateViewport ();
-if (this.lastsr + horizontal != this.av.startRes) {
-horizontal = this.av.startRes - this.lastsr;
-}this.lastsr = this.av.startRes;
-this.$fastPaint = true;
-this.gg.copyArea (horizontal * this.avcharWidth, vertical * this.avcharHeight, this.imgWidth - horizontal * this.avcharWidth, this.imgHeight - vertical * this.avcharHeight, -horizontal * this.avcharWidth, -vertical * this.avcharHeight);
-var sr = this.av.startRes;
-var er = this.av.endRes;
-var ss = this.av.startSeq;
-var es = this.av.endSeq;
-var transX = 0;
-var transY = 0;
-if (horizontal > 0) {
-transX = (er - sr - horizontal) * this.avcharWidth;
-sr = er - horizontal;
-} else if (horizontal < 0) {
-er = sr - horizontal;
-} else if (vertical > 0) {
-ss = es - vertical;
-if (ss < this.av.startSeq) {
-ss = this.av.startSeq;
-} else {
-transY = this.imgHeight - vertical * this.avcharHeight;
-}} else if (vertical < 0) {
-es = ss - vertical;
-if (es > this.av.endSeq) {
-es = this.av.endSeq;
-}}this.gg.translate (transX, transY);
-this.drawPanel (this.gg, sr, er, ss, es, 0);
-this.gg.translate (-transX, -transY);
-this.repaint ();
-}, "~N,~N");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-if (this.img != null && (this.$fastPaint || (this.getSize ().width != g.getClipBounds ().width) || (this.getSize ().height != g.getClipBounds ().height))) {
-g.drawImage (this.img, 0, 0, this);
-this.$fastPaint = false;
-return;
-}if (this.$fastPaint) {
-g.drawImage (this.img, 0, 0, this);
-this.$fastPaint = false;
-return;
-}this.updateViewport ();
-this.imgWidth = this.getSize ().width;
-this.imgHeight = this.getSize ().height;
-this.imgWidth -= this.imgWidth % this.avcharWidth;
-this.imgHeight -= this.imgHeight % this.avcharHeight;
-if (this.imgWidth < 1 || this.imgHeight < 1) {
-return;
-}if (this.img == null || this.imgWidth != this.img.getWidth (this) || this.imgHeight != this.img.getHeight (this)) {
-this.img = this.createImage (this.imgWidth, this.imgHeight);
-this.gg = this.img.getGraphics ();
-this.gg.setFont (this.av.getFont ());
-}this.gg.setColor (java.awt.Color.white);
-this.gg.fillRect (0, 0, this.imgWidth, this.imgHeight);
-if (this.av.getWrapAlignment ()) {
-this.drawWrappedPanel (this.gg, this.imgWidth, this.imgHeight, this.av.startRes);
-} else {
-this.drawPanel (this.gg, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq, 0);
-}g.drawImage (this.img, 0, 0, this);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "getWrappedCanvasWidth",
-function (cwidth) {
-cwidth -= cwidth % this.av.getCharWidth ();
-var fm = this.getFontMetrics (this.av.getFont ());
-this.LABEL_EAST = 0;
-this.LABEL_WEST = 0;
-if (this.av.getScaleRightWrapped ()) {
-this.LABEL_EAST = fm.stringWidth (this.getMask ());
-}if (this.av.getScaleLeftWrapped ()) {
-this.LABEL_WEST = fm.stringWidth (this.getMask ());
-}return Clazz.doubleToInt ((cwidth - this.LABEL_EAST - this.LABEL_WEST) / this.av.getCharWidth ());
-}, "~N");
-Clazz.defineMethod (c$, "getMask",
-function () {
-var mask = "0";
-var maxWidth = 0;
-var tmp;
-var alignment = this.av.getAlignment ();
-for (var i = 0; i < alignment.getHeight (); i++) {
-tmp = alignment.getSequenceAt (i).getEnd ();
-if (tmp > maxWidth) {
-maxWidth = tmp;
-}}
-for (var i = maxWidth; i > 0; i /= 10) {
-mask += "0";
-}
-return mask;
-});
-Clazz.defineMethod (c$, "drawWrappedPanel",
-($fz = function (g, canvasWidth, canvasHeight, startRes) {
-var al = this.av.getAlignment ();
-var fm = this.getFontMetrics (this.av.getFont ());
-if (this.av.getScaleRightWrapped ()) {
-this.LABEL_EAST = fm.stringWidth (this.getMask ());
-}if (this.av.getScaleLeftWrapped ()) {
-this.LABEL_WEST = fm.stringWidth (this.getMask ());
-}var hgap = this.avcharHeight;
-if (this.av.getScaleAboveWrapped ()) {
-hgap += this.avcharHeight;
-}var cWidth = Clazz.doubleToInt ((canvasWidth - this.LABEL_EAST - this.LABEL_WEST) / this.avcharWidth);
-var cHeight = this.av.getAlignment ().getHeight () * this.avcharHeight;
-this.av.setWrappedWidth (cWidth);
-this.av.endRes = this.av.startRes + cWidth;
-var endx;
-var ypos = hgap;
-var maxwidth = this.av.getAlignment ().getWidth () - 1;
-if (this.av.hasHiddenColumns ()) {
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
-}while ((ypos <= canvasHeight) && (startRes < maxwidth)) {
-endx = startRes + cWidth - 1;
-if (endx > maxwidth) {
-endx = maxwidth;
-}g.setColor (java.awt.Color.black);
-if (this.av.getScaleLeftWrapped ()) {
-this.drawWestScale (g, startRes, endx, ypos);
-}if (this.av.getScaleRightWrapped ()) {
-g.translate (canvasWidth - this.LABEL_EAST, 0);
-this.drawEastScale (g, startRes, endx, ypos);
-g.translate (-(canvasWidth - this.LABEL_EAST), 0);
-}g.translate (this.LABEL_WEST, 0);
-if (this.av.getScaleAboveWrapped ()) {
-this.drawNorthScale (g, startRes, endx, ypos);
-}if (this.av.hasHiddenColumns () && this.av.getShowHiddenMarkers ()) {
-g.setColor (java.awt.Color.blue);
-var res;
-for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
-res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startRes;
-if (res < 0 || res > endx - startRes) {
-continue;
-}this.gg.fillPolygon ( Clazz.newIntArray (-1, [res * this.avcharWidth - Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth + Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth]), Clazz.newIntArray (-1, [ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)) + 8]), 3);
-}
-}if (g.getClip () == null) {
-g.setClip (0, 0, cWidth * this.avcharWidth, canvasHeight);
-}this.drawPanel (g, startRes, endx, 0, al.getHeight (), ypos);
-g.setClip (null);
-if (this.av.isShowAnnotation ()) {
-g.translate (0, cHeight + ypos + 4);
-if (this.annotations == null) {
-this.annotations = new jalview.appletgui.AnnotationPanel (this.av);
-}this.annotations.drawComponent (g, startRes, endx + 1);
-g.translate (0, -cHeight - ypos - 4);
-}g.translate (-this.LABEL_WEST, 0);
-ypos += cHeight + this.getAnnotationHeight () + hgap;
-startRes += cWidth;
-}
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
-Clazz.defineMethod (c$, "getAnnotationHeight",
-function () {
-if (!this.av.isShowAnnotation ()) {
-return 0;
-}if (this.annotations == null) {
-this.annotations = new jalview.appletgui.AnnotationPanel (this.av);
-}return this.annotations.adjustPanelHeight ();
-});
-Clazz.defineMethod (c$, "drawPanel",
-($fz = function (g1, startRes, endRes, startSeq, endSeq, offset) {
-if (!this.av.hasHiddenColumns ()) {
-this.draw (g1, startRes, endRes, startSeq, endSeq, offset);
-} else {
-var screenY = 0;
-var blockStart = startRes;
-var blockEnd = endRes;
-if (this.av.hasHiddenColumns ()) {
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
-var hideStart = region[0];
-var hideEnd = region[1];
-if (hideStart <= blockStart) {
-blockStart += (hideEnd - hideStart) + 1;
-continue;
-}blockEnd = hideStart - 1;
-g1.translate (screenY * this.avcharWidth, 0);
-this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
-if (this.av.getShowHiddenMarkers ()) {
-g1.setColor (java.awt.Color.blue);
-g1.drawLine ((blockEnd - blockStart + 1) * this.avcharWidth - 1, 0 + offset, (blockEnd - blockStart + 1) * this.avcharWidth - 1, (endSeq - startSeq) * this.avcharHeight + offset);
-}g1.translate (-screenY * this.avcharWidth, 0);
-screenY += blockEnd - blockStart + 1;
-blockStart = hideEnd + 1;
-}
-}if (screenY <= (endRes - startRes)) {
-blockEnd = blockStart + (endRes - startRes) - screenY;
-g1.translate (screenY * this.avcharWidth, 0);
-this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
-g1.translate (-screenY * this.avcharWidth, 0);
-}}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");
-Clazz.defineMethod (c$, "draw",
-function (g, startRes, endRes, startSeq, endSeq, offset) {
-g.setFont (this.av.getFont ());
-this.sr.prepare (g, this.av.isRenderGaps ());
-this.updateViewport ();
-var nextSeq;
-for (var i = startSeq; i < endSeq; i++) {
-nextSeq = this.av.getAlignment ().getSequenceAt (i);
-if (nextSeq == null) {
-continue;
-}this.sr.drawSequence (nextSeq, this.av.getAlignment ().findAllGroups (nextSeq), startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
-if (this.av.isShowSequenceFeatures ()) {
-this.fr.drawSequence (g, nextSeq, startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
-}if (this.searchResults != null) {
-var visibleResults = this.searchResults.getResults (nextSeq, startRes, endRes);
-if (visibleResults != null) {
-for (var r = 0; r < visibleResults.length; r += 2) {
-this.sr.drawHighlightedText (nextSeq, visibleResults[r], visibleResults[r + 1], (visibleResults[r] - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
-}
-}}if (this.av.cursorMode && this.cursorY == i && this.cursorX >= startRes && this.cursorX <= endRes) {
-this.sr.drawCursor (nextSeq, this.cursorX, (this.cursorX - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
-}}
-if (this.av.getSelectionGroup () != null || this.av.getAlignment ().getGroups ().size () > 0) {
-this.drawGroupsBoundaries (g, startRes, endRes, startSeq, endSeq, offset);
-}}, "java.awt.Graphics,~N,~N,~N,~N,~N");
-Clazz.defineMethod (c$, "drawGroupsBoundaries",
-($fz = function (g, startRes, endRes, startSeq, endSeq, offset) {
-var group = this.av.getSelectionGroup ();
-var sx = -1;
-var sy = -1;
-var ex = -1;
-var groupIndex = -1;
-if ((group == null) && (this.av.getAlignment ().getGroups ().size () > 0)) {
-group = this.av.getAlignment ().getGroups ().get (0);
-groupIndex = 0;
-}if (group != null) {
-do {
-var oldY = -1;
-var i = 0;
-var inGroup = false;
-var top = -1;
-var bottom = -1;
-var alHeight = this.av.getAlignment ().getHeight () - 1;
-for (i = startSeq; i < endSeq; i++) {
-sx = (group.getStartRes () - startRes) * this.avcharWidth;
-sy = offset + ((i - startSeq) * this.avcharHeight);
-ex = (((group.getEndRes () + 1) - group.getStartRes ()) * this.avcharWidth) - 1;
-if (sx + ex < 0 || sx > this.imgWidth) {
-continue;
-}if ((sx <= (endRes - startRes) * this.avcharWidth) && group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i))) {
-if ((bottom == -1) && (i >= alHeight || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i + 1)))) {
-bottom = sy + this.avcharHeight;
-}if (!inGroup) {
-if (((top == -1) && (i == 0)) || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i - 1))) {
-top = sy;
-}oldY = sy;
-inGroup = true;
-if (group === this.av.getSelectionGroup ()) {
-g.setColor (java.awt.Color.red);
-} else {
-g.setColor (group.getOutlineColour ());
-}}} else {
-if (inGroup) {
-if (sx >= 0 && sx < this.imgWidth) {
-g.drawLine (sx, oldY, sx, sy);
-}if (sx + ex < this.imgWidth) {
-g.drawLine (sx + ex, oldY, sx + ex, sy);
-}if (sx < 0) {
-ex += sx;
-sx = 0;
-}if (sx + ex > this.imgWidth) {
-ex = this.imgWidth;
-} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
-ex = (endRes - startRes + 1) * this.avcharWidth;
-}if (top != -1) {
-g.drawLine (sx, top, sx + ex, top);
-top = -1;
-}if (bottom != -1) {
-g.drawLine (sx, bottom, sx + ex, bottom);
-bottom = -1;
-}inGroup = false;
-}}}
-if (inGroup) {
-sy = offset + ((i - startSeq) * this.avcharHeight);
-if (sx >= 0 && sx < this.imgWidth) {
-g.drawLine (sx, oldY, sx, sy);
-}if (sx + ex < this.imgWidth) {
-g.drawLine (sx + ex, oldY, sx + ex, sy);
-}if (sx < 0) {
-ex += sx;
-sx = 0;
-}if (sx + ex > this.imgWidth) {
-ex = this.imgWidth;
-} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
-ex = (endRes - startRes + 1) * this.avcharWidth;
-}if (top != -1) {
-g.drawLine (sx, top, sx + ex, top);
-top = -1;
-}if (bottom != -1) {
-g.drawLine (sx, bottom - 1, sx + ex, bottom - 1);
-bottom = -1;
-}inGroup = false;
-}groupIndex++;
-if (groupIndex >= this.av.getAlignment ().getGroups ().size ()) {
-break;
-}group = this.av.getAlignment ().getGroups ().get (groupIndex);
-} while (groupIndex < this.av.getAlignment ().getGroups ().size ());
-}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");
-Clazz.defineMethod (c$, "highlightSearchResults",
-function (results) {
-this.searchResults = results;
-this.repaint ();
-}, "jalview.datamodel.SearchResults");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel"], "jalview.appletgui.SeqCanvas", ["jalview.appletgui.AnnotationPanel", "$.FeatureRenderer", "$.PaintRefresher", "$.SequenceRenderer", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fr = null;
+this.sr = null;
+this.img = null;
+this.gg = null;
+this.imgWidth = 0;
+this.imgHeight = 0;
+this.av = null;
+this.searchResults = null;
+this.$fastPaint = false;
+this.cursorX = 0;
+this.cursorY = 0;
+this.avcharHeight = 0;
+this.avcharWidth = 0;
+this.lastsr = 0;
+this.LABEL_WEST = 0;
+this.LABEL_EAST = 0;
+this.annotations = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SeqCanvas", awt2swing.Panel);
+Clazz.makeConstructor (c$,
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.SeqCanvas, []);
+this.av = av;
+this.fr = new jalview.appletgui.FeatureRenderer (av);
+this.sr = new jalview.appletgui.SequenceRenderer (av);
+jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
+this.updateViewport ();
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "updateViewport",
+($fz = function () {
+this.avcharHeight = this.av.getCharHeight ();
+this.avcharWidth = this.av.getCharWidth ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getViewport",
+function () {
+return this.av;
+});
+Clazz.defineMethod (c$, "getFeatureRenderer",
+function () {
+return this.fr;
+});
+Clazz.defineMethod (c$, "getSequenceRenderer",
+function () {
+return this.sr;
+});
+Clazz.defineMethod (c$, "drawNorthScale",
+($fz = function (g, startx, endx, ypos) {
+var scalestartx = startx - startx % 10 + 10;
+g.setColor (java.awt.Color.black);
+for (var i = scalestartx; i < endx; i += 10) {
+var value = i;
+if (this.av.hasHiddenColumns ()) {
+value = this.av.getColumnSelection ().adjustForHiddenColumns (value);
+}g.drawString (String.valueOf (value), (i - startx - 1) * this.avcharWidth, ypos - (Clazz.doubleToInt (this.avcharHeight / 2)));
+g.drawLine (((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), (ypos + 2) - (Clazz.doubleToInt (this.avcharHeight / 2)), ((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), ypos - 2);
+}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "drawWestScale",
+($fz = function (g, startx, endx, ypos) {
+var fm = this.getFontMetrics (this.av.getFont ());
+ypos += this.avcharHeight;
+if (this.av.hasHiddenColumns ()) {
+startx = this.av.getColumnSelection ().adjustForHiddenColumns (startx);
+endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
+}var maxwidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
+var seq = this.av.getAlignment ().getSequenceAt (i);
+var index = startx;
+var value = -1;
+while (index < endx) {
+if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
+index++;
+continue;
+}value = this.av.getAlignment ().getSequenceAt (i).findPosition (index);
+break;
+}
+if (value != -1) {
+var x = this.LABEL_WEST - fm.stringWidth (String.valueOf (value)) - Clazz.doubleToInt (this.avcharWidth / 2);
+g.drawString (value + "", x, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));
+}}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "drawEastScale",
+($fz = function (g, startx, endx, ypos) {
+ypos += this.avcharHeight;
+if (this.av.hasHiddenColumns ()) {
+endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
+}var seq;
+for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
+seq = this.av.getAlignment ().getSequenceAt (i);
+var index = endx;
+var value = -1;
+while (index > startx) {
+if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
+index--;
+continue;
+}value = seq.findPosition (index);
+break;
+}
+if (value != -1) {
+g.drawString (String.valueOf (value), 0, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));
+}}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "fastPaint",
+function (horizontal, vertical) {
+if (this.$fastPaint || this.gg == null) {
+return;
+}this.updateViewport ();
+if (this.lastsr + horizontal != this.av.startRes) {
+horizontal = this.av.startRes - this.lastsr;
+}this.lastsr = this.av.startRes;
+this.$fastPaint = true;
+this.gg.copyArea (horizontal * this.avcharWidth, vertical * this.avcharHeight, this.imgWidth - horizontal * this.avcharWidth, this.imgHeight - vertical * this.avcharHeight, -horizontal * this.avcharWidth, -vertical * this.avcharHeight);
+var sr = this.av.startRes;
+var er = this.av.endRes;
+var ss = this.av.startSeq;
+var es = this.av.endSeq;
+var transX = 0;
+var transY = 0;
+if (horizontal > 0) {
+transX = (er - sr - horizontal) * this.avcharWidth;
+sr = er - horizontal;
+} else if (horizontal < 0) {
+er = sr - horizontal;
+} else if (vertical > 0) {
+ss = es - vertical;
+if (ss < this.av.startSeq) {
+ss = this.av.startSeq;
+} else {
+transY = this.imgHeight - vertical * this.avcharHeight;
+}} else if (vertical < 0) {
+es = ss - vertical;
+if (es > this.av.endSeq) {
+es = this.av.endSeq;
+}}this.gg.translate (transX, transY);
+this.drawPanel (this.gg, sr, er, ss, es, 0);
+this.gg.translate (-transX, -transY);
+this.repaint ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+if (this.img != null && (this.$fastPaint || (this.getSize ().width != g.getClipBounds ().width) || (this.getSize ().height != g.getClipBounds ().height))) {
+g.drawImage (this.img, 0, 0, this);
+this.$fastPaint = false;
+return;
+}if (this.$fastPaint) {
+g.drawImage (this.img, 0, 0, this);
+this.$fastPaint = false;
+return;
+}this.updateViewport ();
+this.imgWidth = this.getSize ().width;
+this.imgHeight = this.getSize ().height;
+this.imgWidth -= this.imgWidth % this.avcharWidth;
+this.imgHeight -= this.imgHeight % this.avcharHeight;
+if (this.imgWidth < 1 || this.imgHeight < 1) {
+return;
+}if (this.img == null || this.imgWidth != this.img.getWidth (this) || this.imgHeight != this.img.getHeight (this)) {
+this.img = this.createImage (this.imgWidth, this.imgHeight);
+this.gg = this.img.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+}this.gg.setColor (java.awt.Color.white);
+this.gg.fillRect (0, 0, this.imgWidth, this.imgHeight);
+if (this.av.getWrapAlignment ()) {
+this.drawWrappedPanel (this.gg, this.imgWidth, this.imgHeight, this.av.startRes);
+} else {
+this.drawPanel (this.gg, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq, 0);
+}g.drawImage (this.img, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "getWrappedCanvasWidth",
+function (cwidth) {
+cwidth -= cwidth % this.av.getCharWidth ();
+var fm = this.getFontMetrics (this.av.getFont ());
+this.LABEL_EAST = 0;
+this.LABEL_WEST = 0;
+if (this.av.getScaleRightWrapped ()) {
+this.LABEL_EAST = fm.stringWidth (this.getMask ());
+}if (this.av.getScaleLeftWrapped ()) {
+this.LABEL_WEST = fm.stringWidth (this.getMask ());
+}return Clazz.doubleToInt ((cwidth - this.LABEL_EAST - this.LABEL_WEST) / this.av.getCharWidth ());
+}, "~N");
+Clazz.defineMethod (c$, "getMask",
+function () {
+var mask = "0";
+var maxWidth = 0;
+var tmp;
+var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+tmp = alignment.getSequenceAt (i).getEnd ();
+if (tmp > maxWidth) {
+maxWidth = tmp;
+}}
+for (var i = maxWidth; i > 0; i /= 10) {
+mask += "0";
+}
+return mask;
+});
+Clazz.defineMethod (c$, "drawWrappedPanel",
+($fz = function (g, canvasWidth, canvasHeight, startRes) {
+var al = this.av.getAlignment ();
+var fm = this.getFontMetrics (this.av.getFont ());
+if (this.av.getScaleRightWrapped ()) {
+this.LABEL_EAST = fm.stringWidth (this.getMask ());
+}if (this.av.getScaleLeftWrapped ()) {
+this.LABEL_WEST = fm.stringWidth (this.getMask ());
+}var hgap = this.avcharHeight;
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.avcharHeight;
+}var cWidth = Clazz.doubleToInt ((canvasWidth - this.LABEL_EAST - this.LABEL_WEST) / this.avcharWidth);
+var cHeight = this.av.getAlignment ().getHeight () * this.avcharHeight;
+this.av.setWrappedWidth (cWidth);
+this.av.endRes = this.av.startRes + cWidth;
+var endx;
+var ypos = hgap;
+var maxwidth = this.av.getAlignment ().getWidth () - 1;
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}while ((ypos <= canvasHeight) && (startRes < maxwidth)) {
+endx = startRes + cWidth - 1;
+if (endx > maxwidth) {
+endx = maxwidth;
+}g.setColor (java.awt.Color.black);
+if (this.av.getScaleLeftWrapped ()) {
+this.drawWestScale (g, startRes, endx, ypos);
+}if (this.av.getScaleRightWrapped ()) {
+g.translate (canvasWidth - this.LABEL_EAST, 0);
+this.drawEastScale (g, startRes, endx, ypos);
+g.translate (-(canvasWidth - this.LABEL_EAST), 0);
+}g.translate (this.LABEL_WEST, 0);
+if (this.av.getScaleAboveWrapped ()) {
+this.drawNorthScale (g, startRes, endx, ypos);
+}if (this.av.hasHiddenColumns () && this.av.getShowHiddenMarkers ()) {
+g.setColor (java.awt.Color.blue);
+var res;
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startRes;
+if (res < 0 || res > endx - startRes) {
+continue;
+}this.gg.fillPolygon ( Clazz.newIntArray (-1, [res * this.avcharWidth - Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth + Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth]), Clazz.newIntArray (-1, [ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)) + 8]), 3);
+}
+}if (g.getClip () == null) {
+g.setClip (0, 0, cWidth * this.avcharWidth, canvasHeight);
+}this.drawPanel (g, startRes, endx, 0, al.getHeight (), ypos);
+g.setClip (null);
+if (this.av.isShowAnnotation ()) {
+g.translate (0, cHeight + ypos + 4);
+if (this.annotations == null) {
+this.annotations = new jalview.appletgui.AnnotationPanel (this.av);
+}this.annotations.drawComponent (g, startRes, endx + 1);
+g.translate (0, -cHeight - ypos - 4);
+}g.translate (-this.LABEL_WEST, 0);
+ypos += cHeight + this.getAnnotationHeight () + hgap;
+startRes += cWidth;
+}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "getAnnotationHeight",
+function () {
+if (!this.av.isShowAnnotation ()) {
+return 0;
+}if (this.annotations == null) {
+this.annotations = new jalview.appletgui.AnnotationPanel (this.av);
+}return this.annotations.adjustPanelHeight ();
+});
+Clazz.defineMethod (c$, "drawPanel",
+($fz = function (g1, startRes, endRes, startSeq, endSeq, offset) {
+if (!this.av.hasHiddenColumns ()) {
+this.draw (g1, startRes, endRes, startSeq, endSeq, offset);
+} else {
+var screenY = 0;
+var blockStart = startRes;
+var blockEnd = endRes;
+if (this.av.hasHiddenColumns ()) {
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+var hideStart = region[0];
+var hideEnd = region[1];
+if (hideStart <= blockStart) {
+blockStart += (hideEnd - hideStart) + 1;
+continue;
+}blockEnd = hideStart - 1;
+g1.translate (screenY * this.avcharWidth, 0);
+this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
+if (this.av.getShowHiddenMarkers ()) {
+g1.setColor (java.awt.Color.blue);
+g1.drawLine ((blockEnd - blockStart + 1) * this.avcharWidth - 1, 0 + offset, (blockEnd - blockStart + 1) * this.avcharWidth - 1, (endSeq - startSeq) * this.avcharHeight + offset);
+}g1.translate (-screenY * this.avcharWidth, 0);
+screenY += blockEnd - blockStart + 1;
+blockStart = hideEnd + 1;
+}
+}if (screenY <= (endRes - startRes)) {
+blockEnd = blockStart + (endRes - startRes) - screenY;
+g1.translate (screenY * this.avcharWidth, 0);
+this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
+g1.translate (-screenY * this.avcharWidth, 0);
+}}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "draw",
+function (g, startRes, endRes, startSeq, endSeq, offset) {
+g.setFont (this.av.getFont ());
+this.sr.prepare (g, this.av.isRenderGaps ());
+this.updateViewport ();
+var nextSeq;
+for (var i = startSeq; i < endSeq; i++) {
+nextSeq = this.av.getAlignment ().getSequenceAt (i);
+if (nextSeq == null) {
+continue;
+}this.sr.drawSequence (nextSeq, this.av.getAlignment ().findAllGroups (nextSeq), startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
+if (this.av.isShowSequenceFeatures ()) {
+this.fr.drawSequence (g, nextSeq, startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
+}if (this.searchResults != null) {
+var visibleResults = this.searchResults.getResults (nextSeq, startRes, endRes);
+if (visibleResults != null) {
+for (var r = 0; r < visibleResults.length; r += 2) {
+this.sr.drawHighlightedText (nextSeq, visibleResults[r], visibleResults[r + 1], (visibleResults[r] - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
+}
+}}if (this.av.cursorMode && this.cursorY == i && this.cursorX >= startRes && this.cursorX <= endRes) {
+this.sr.drawCursor (nextSeq, this.cursorX, (this.cursorX - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
+}}
+if (this.av.getSelectionGroup () != null || this.av.getAlignment ().getGroups ().size () > 0) {
+this.drawGroupsBoundaries (g, startRes, endRes, startSeq, endSeq, offset);
+}}, "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "drawGroupsBoundaries",
+($fz = function (g, startRes, endRes, startSeq, endSeq, offset) {
+var group = this.av.getSelectionGroup ();
+var sx = -1;
+var sy = -1;
+var ex = -1;
+var groupIndex = -1;
+if ((group == null) && (this.av.getAlignment ().getGroups ().size () > 0)) {
+group = this.av.getAlignment ().getGroups ().get (0);
+groupIndex = 0;
+}if (group != null) {
+do {
+var oldY = -1;
+var i = 0;
+var inGroup = false;
+var top = -1;
+var bottom = -1;
+var alHeight = this.av.getAlignment ().getHeight () - 1;
+for (i = startSeq; i < endSeq; i++) {
+sx = (group.getStartRes () - startRes) * this.avcharWidth;
+sy = offset + ((i - startSeq) * this.avcharHeight);
+ex = (((group.getEndRes () + 1) - group.getStartRes ()) * this.avcharWidth) - 1;
+if (sx + ex < 0 || sx > this.imgWidth) {
+continue;
+}if ((sx <= (endRes - startRes) * this.avcharWidth) && group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i))) {
+if ((bottom == -1) && (i >= alHeight || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i + 1)))) {
+bottom = sy + this.avcharHeight;
+}if (!inGroup) {
+if (((top == -1) && (i == 0)) || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i - 1))) {
+top = sy;
+}oldY = sy;
+inGroup = true;
+if (group === this.av.getSelectionGroup ()) {
+g.setColor (java.awt.Color.red);
+} else {
+g.setColor (group.getOutlineColour ());
+}}} else {
+if (inGroup) {
+if (sx >= 0 && sx < this.imgWidth) {
+g.drawLine (sx, oldY, sx, sy);
+}if (sx + ex < this.imgWidth) {
+g.drawLine (sx + ex, oldY, sx + ex, sy);
+}if (sx < 0) {
+ex += sx;
+sx = 0;
+}if (sx + ex > this.imgWidth) {
+ex = this.imgWidth;
+} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
+ex = (endRes - startRes + 1) * this.avcharWidth;
+}if (top != -1) {
+g.drawLine (sx, top, sx + ex, top);
+top = -1;
+}if (bottom != -1) {
+g.drawLine (sx, bottom, sx + ex, bottom);
+bottom = -1;
+}inGroup = false;
+}}}
+if (inGroup) {
+sy = offset + ((i - startSeq) * this.avcharHeight);
+if (sx >= 0 && sx < this.imgWidth) {
+g.drawLine (sx, oldY, sx, sy);
+}if (sx + ex < this.imgWidth) {
+g.drawLine (sx + ex, oldY, sx + ex, sy);
+}if (sx < 0) {
+ex += sx;
+sx = 0;
+}if (sx + ex > this.imgWidth) {
+ex = this.imgWidth;
+} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
+ex = (endRes - startRes + 1) * this.avcharWidth;
+}if (top != -1) {
+g.drawLine (sx, top, sx + ex, top);
+top = -1;
+}if (bottom != -1) {
+g.drawLine (sx, bottom - 1, sx + ex, bottom - 1);
+bottom = -1;
+}inGroup = false;
+}groupIndex++;
+if (groupIndex >= this.av.getAlignment ().getGroups ().size ()) {
+break;
+}group = this.av.getAlignment ().getGroups ().get (groupIndex);
+} while (groupIndex < this.av.getAlignment ().getGroups ().size ());
+}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "highlightSearchResults",
+function (results) {
+this.searchResults = results;
+this.repaint ();
+}, "jalview.datamodel.SearchResults");
+});
diff --git a/bin/jalview/appletgui/SeqPanel.class b/bin/jalview/appletgui/SeqPanel.class
index 90a222210441e3c3fb09cb26bb91d92ae2268843..f3e19d0caafc4fb6e7b8e19c54ad5781b1737012 100644
GIT binary patch
delta 339
zcmXAiKTASk6o=36UiH0||F~W?Q7@E5BnDAqCfHC8rBYN91TBRWh!}!fLv0NXLQ^f#
z2MEp{^ad2#Id=@Flhi&f0_f5vH}h`_+WfThV4KQO
zutzh1mn@14YRVNtpGs0V(lo9LN$l}+VGV8{IrRlXp_36pjZAq$-<0UsFG{{IupVXo4E9od{(foYOnqdovGO|skyk%?AUTUk7;b0)nagRc1Vj0@G17^k9eP?Z%
PqQ}9~99t}Fr6%nMv4mUy
diff --git a/bin/jalview/appletgui/SeqPanel.js b/bin/jalview/appletgui/SeqPanel.js
index 7f97353..d500d0e 100644
--- a/bin/jalview/appletgui/SeqPanel.js
+++ b/bin/jalview/appletgui/SeqPanel.js
@@ -1,962 +1,962 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "jalview.structure.SelectionListener", "$.SequenceListener", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread"], "jalview.appletgui.SeqPanel", ["jalview.api.AlignViewportI", "jalview.appletgui.APopupMenu", "$.AlignViewport", "$.PaintRefresher", "$.SeqCanvas", "$.SliderPanel", "$.Tooltip", "jalview.commands.EditCommand", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.SequenceGroup", "jalview.schemes.ResidueProperties", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "$.MessageManager", "java.awt.BorderLayout", "$.Font", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.seqCanvas = null;
-this.ap = null;
-this.lastres = 0;
-this.startseq = 0;
-this.av = null;
-this.seqEditOccurred = false;
-this.scrollThread = null;
-this.mouseDragging = false;
-this.editingSeqs = false;
-this.groupEditing = false;
-this.oldSeq = -1;
-this.changeEndSeq = false;
-this.changeStartSeq = false;
-this.changeEndRes = false;
-this.changeStartRes = false;
-this.stretchGroup = null;
-this.keyboardNo1 = null;
-this.keyboardNo2 = null;
-this.mouseWheelPressed = false;
-this.lastMousePress = null;
-this.editCommand = null;
-this.ssm = null;
-this.startWrapBlock = -1;
-this.wrappedBlock = -1;
-this.lastMessage = null;
-this.tooltip = null;
-if (!Clazz.isClassDefined ("jalview.appletgui.SeqPanel.ScrollThread")) {
-jalview.appletgui.SeqPanel.$SeqPanel$ScrollThread$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "SeqPanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener, jalview.structure.SequenceListener, jalview.structure.SelectionListener]);
-Clazz.makeConstructor (c$,
-function (avp, p) {
-Clazz.superConstructor (this, jalview.appletgui.SeqPanel, []);
-this.av = avp;
-this.setName ("seqPanel");
-this.seqCanvas = new jalview.appletgui.SeqCanvas (avp);
-this.setLayout ( new java.awt.BorderLayout ());
-this.add (this.seqCanvas);
-this.ap = p;
-this.seqCanvas.addMouseMotionListener (this);
-this.seqCanvas.addMouseListener (this);
-this.ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
-this.ssm.addStructureViewerListener (this);
-this.ssm.addSelectionListener (this);
-this.seqCanvas.repaint ();
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
-Clazz.defineMethod (c$, "endEditing",
-function () {
-if (this.editCommand != null && this.editCommand.getSize () > 0) {
-this.ap.alignFrame.addHistoryItem (this.editCommand);
-this.av.firePropertyChange ("alignment", null, this.av.getAlignment ().getSequences ());
-}this.startseq = -1;
-this.lastres = -1;
-this.editingSeqs = false;
-this.groupEditing = false;
-this.keyboardNo1 = null;
-this.keyboardNo2 = null;
-this.editCommand = null;
-});
-Clazz.defineMethod (c$, "setCursorRow",
-function () {
-this.seqCanvas.cursorY = this.getKeyboardNo1 () - 1;
-this.scrollToVisible ();
-});
-Clazz.defineMethod (c$, "setCursorColumn",
-function () {
-this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
-this.scrollToVisible ();
-});
-Clazz.defineMethod (c$, "setCursorRowAndColumn",
-function () {
-if (this.keyboardNo2 == null) {
-this.keyboardNo2 = new StringBuffer ();
-} else {
-this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
-this.seqCanvas.cursorY = this.getKeyboardNo2 () - 1;
-this.scrollToVisible ();
-}});
-Clazz.defineMethod (c$, "setCursorPosition",
-function () {
-var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
-this.seqCanvas.cursorX = sequence.findIndex (this.getKeyboardNo1 ()) - 1;
-this.scrollToVisible ();
-});
-Clazz.defineMethod (c$, "moveCursor",
-function (dx, dy) {
-this.seqCanvas.cursorX += dx;
-this.seqCanvas.cursorY += dy;
-if (this.av.hasHiddenColumns () && !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
-var original = this.seqCanvas.cursorX - dx;
-var maxWidth = this.av.getAlignment ().getWidth ();
-while (!this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX) && this.seqCanvas.cursorX < maxWidth && this.seqCanvas.cursorX > 0) {
-this.seqCanvas.cursorX += dx;
-}
-if (this.seqCanvas.cursorX >= maxWidth || !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
-this.seqCanvas.cursorX = original;
-}}this.scrollToVisible ();
-}, "~N,~N");
-Clazz.defineMethod (c$, "scrollToVisible",
-function () {
-if (this.seqCanvas.cursorX < 0) {
-this.seqCanvas.cursorX = 0;
-} else if (this.seqCanvas.cursorX > this.av.getAlignment ().getWidth () - 1) {
-this.seqCanvas.cursorX = this.av.getAlignment ().getWidth () - 1;
-}if (this.seqCanvas.cursorY < 0) {
-this.seqCanvas.cursorY = 0;
-} else if (this.seqCanvas.cursorY > this.av.getAlignment ().getHeight () - 1) {
-this.seqCanvas.cursorY = this.av.getAlignment ().getHeight () - 1;
-}this.endEditing ();
-if (this.av.getWrapAlignment ()) {
-this.ap.scrollToWrappedVisible (this.seqCanvas.cursorX);
-} else {
-while (this.seqCanvas.cursorY < this.av.startSeq) {
-this.ap.scrollUp (true);
-}
-while (this.seqCanvas.cursorY + 1 > this.av.endSeq) {
-this.ap.scrollUp (false);
-}
-while (this.seqCanvas.cursorX < this.av.getColumnSelection ().adjustForHiddenColumns (this.av.startRes)) {
-if (!this.ap.scrollRight (false)) {
-break;
-}}
-while (this.seqCanvas.cursorX > this.av.getColumnSelection ().adjustForHiddenColumns (this.av.endRes)) {
-if (!this.ap.scrollRight (true)) {
-break;
-}}
-}this.setStatusMessage (this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY), this.seqCanvas.cursorX, this.seqCanvas.cursorY);
-this.seqCanvas.repaint ();
-});
-Clazz.defineMethod (c$, "setSelectionAreaAtCursor",
-function (topLeft) {
-var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
-if (this.av.getSelectionGroup () != null) {
-var sg = this.av.getSelectionGroup ();
-var min = this.av.getAlignment ().getHeight ();
-var max = 0;
-for (var i = 0; i < sg.getSize (); i++) {
-var index = this.av.getAlignment ().findIndex (sg.getSequenceAt (i));
-if (index > max) {
-max = index;
-}if (index < min) {
-min = index;
-}}
-max++;
-if (topLeft) {
-sg.setStartRes (this.seqCanvas.cursorX);
-if (sg.getEndRes () < this.seqCanvas.cursorX) {
-sg.setEndRes (this.seqCanvas.cursorX);
-}min = this.seqCanvas.cursorY;
-} else {
-sg.setEndRes (this.seqCanvas.cursorX);
-if (sg.getStartRes () > this.seqCanvas.cursorX) {
-sg.setStartRes (this.seqCanvas.cursorX);
-}max = this.seqCanvas.cursorY + 1;
-}if (min > max) {
-this.av.setSelectionGroup (null);
-} else {
-sg.clear ();
-for (var i = min; i < max; i++) {
-sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
-}
-}}if (this.av.getSelectionGroup () == null) {
-var sg = new jalview.datamodel.SequenceGroup ();
-sg.setStartRes (this.seqCanvas.cursorX);
-sg.setEndRes (this.seqCanvas.cursorX);
-sg.addSequence (sequence, false);
-this.av.setSelectionGroup (sg);
-}this.ap.paintAlignment (false);
-this.av.sendSelection ();
-}, "~B");
-Clazz.defineMethod (c$, "insertGapAtCursor",
-function (group) {
-this.groupEditing = group;
-this.startseq = this.seqCanvas.cursorY;
-this.lastres = this.seqCanvas.cursorX;
-this.editSequence (true, this.seqCanvas.cursorX + this.getKeyboardNo1 ());
-this.endEditing ();
-}, "~B");
-Clazz.defineMethod (c$, "deleteGapAtCursor",
-function (group) {
-this.groupEditing = group;
-this.startseq = this.seqCanvas.cursorY;
-this.lastres = this.seqCanvas.cursorX + this.getKeyboardNo1 ();
-this.editSequence (false, this.seqCanvas.cursorX);
-this.endEditing ();
-}, "~B");
-Clazz.defineMethod (c$, "numberPressed",
-function (value) {
-if (this.keyboardNo1 == null) {
-this.keyboardNo1 = new StringBuffer ();
-}if (this.keyboardNo2 != null) {
-this.keyboardNo2.append (value);
-} else {
-this.keyboardNo1.append (value);
-}}, "~S");
-Clazz.defineMethod (c$, "getKeyboardNo1",
-function () {
-try {
-if (this.keyboardNo1 != null) {
-var value = Integer.parseInt (this.keyboardNo1.toString ());
-this.keyboardNo1 = null;
-return value;
-}} catch (x) {
-if (Clazz.exceptionOf (x, Exception)) {
-} else {
-throw x;
-}
-}
-this.keyboardNo1 = null;
-return 1;
-});
-Clazz.defineMethod (c$, "getKeyboardNo2",
-function () {
-try {
-if (this.keyboardNo2 != null) {
-var value = Integer.parseInt (this.keyboardNo2.toString ());
-this.keyboardNo2 = null;
-return value;
-}} catch (x) {
-if (Clazz.exceptionOf (x, Exception)) {
-} else {
-throw x;
-}
-}
-this.keyboardNo2 = null;
-return 1;
-});
-Clazz.defineMethod (c$, "setStatusMessage",
-function (sequence, res, seq) {
-var text = new StringBuilder (32);
-var seqno = seq == -1 ? "" : " " + (seq + 1);
-text.append ("Sequence" + seqno + " ID: " + sequence.getName ());
-var residue = null;
-var displayChar = String.valueOf (sequence.getCharAt (res));
-if (this.av.getAlignment ().isNucleotide ()) {
-residue = jalview.schemes.ResidueProperties.nucleotideName.get (displayChar);
-if (residue != null) {
-text.append (" Nucleotide: ").append (residue);
-}} else {
-residue = "X".equalsIgnoreCase (displayChar) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (displayChar);
-if (residue != null) {
-text.append (" Residue: ").append (residue);
-}}var pos = -1;
-if (residue != null) {
-pos = sequence.findPosition (res);
-text.append (" (").append (Integer.toString (pos)).append (")");
-}this.ap.alignFrame.setStatus (text.toString ());
-}, "jalview.datamodel.SequenceI,~N,~N");
-Clazz.defineMethod (c$, "setStatusMessage",
-($fz = function (results) {
-var matches = results.getResults ();
-if (!matches.isEmpty ()) {
-var m = matches.get (0);
-var seq = m.getSequence ();
-var sequenceIndex = this.av.getAlignment ().findIndex (seq);
-var start = m.getStart () - 1;
-this.setStatusMessage (seq, start, sequenceIndex);
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SearchResults");
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-this.lastMousePress = evt.getPoint ();
-if ((evt.getModifiers () & 8) == 8 && !this.av.MAC) {
-this.mouseWheelPressed = true;
-return;
-}if (evt.isShiftDown () || evt.isControlDown () || evt.isAltDown ()) {
-if (evt.isControlDown () || evt.isAltDown ()) {
-this.groupEditing = true;
-}this.editingSeqs = true;
-} else {
-this.doMousePressedDefineMode (evt);
-return;
-}var seq = this.findSeq (evt);
-var res = this.findRes (evt);
-if (seq < 0 || res < 0) {
-return;
-}if ((seq < this.av.getAlignment ().getHeight ()) && (res < this.av.getAlignment ().getSequenceAt (seq).getLength ())) {
-this.startseq = seq;
-this.lastres = res;
-} else {
-this.startseq = -1;
-this.lastres = -1;
-}return;
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-var sequence = this.av.getAlignment ().getSequenceAt (this.findSeq (evt));
-if (evt.getClickCount () > 1) {
-if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSize () == 1 && this.av.getSelectionGroup ().getEndRes () - this.av.getSelectionGroup ().getStartRes () < 2) {
-this.av.setSelectionGroup (null);
-}var features = this.findFeaturesAtRes (sequence, sequence.findPosition (this.findRes (evt)));
-if (features != null && features.length > 0) {
-var highlight = new jalview.datamodel.SearchResults ();
-highlight.addResult (sequence, features[0].getBegin (), features[0].getEnd ());
-this.seqCanvas.highlightSearchResults (highlight);
-}if (features != null && features.length > 0) {
-this.seqCanvas.getFeatureRenderer ().amendFeatures ( Clazz.newArray (-1, [sequence]), features, false, this.ap);
-this.seqCanvas.highlightSearchResults (null);
-}}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-this.mouseDragging = false;
-this.mouseWheelPressed = false;
-this.ap.paintAlignment (true);
-if (!this.editingSeqs) {
-this.doMouseReleasedDefineMode (evt);
-return;
-}this.endEditing ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "findRes",
-function (evt) {
-var res = 0;
-var x = evt.getX ();
-if (this.av.getWrapAlignment ()) {
-var hgap = this.av.getCharHeight ();
-if (this.av.getScaleAboveWrapped ()) {
-hgap += this.av.getCharHeight ();
-}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
-var y = evt.getY ();
-y -= hgap;
-x -= this.seqCanvas.LABEL_WEST;
-var cwidth = this.seqCanvas.getWrappedCanvasWidth (this.getSize ().width);
-if (cwidth < 1) {
-return 0;
-}this.wrappedBlock = Clazz.doubleToInt (y / cHeight);
-this.wrappedBlock += Clazz.doubleToInt (this.av.getStartRes () / cwidth);
-res = this.wrappedBlock * cwidth + Clazz.doubleToInt (x / this.av.getCharWidth ());
-} else {
-res = (Clazz.doubleToInt (x / this.av.getCharWidth ())) + this.av.getStartRes ();
-}if (this.av.hasHiddenColumns ()) {
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
-}return res;
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "findSeq",
-function (evt) {
-var sqnum = this.findAlRow (evt);
-return (sqnum < 0) ? 0 : sqnum;
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "findAlRow",
-($fz = function (evt) {
-var seq = 0;
-var y = evt.getY ();
-if (this.av.getWrapAlignment ()) {
-var hgap = this.av.getCharHeight ();
-if (this.av.getScaleAboveWrapped ()) {
-hgap += this.av.getCharHeight ();
-}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
-y -= hgap;
-seq = Math.min (Clazz.doubleToInt ((y % cHeight) / this.av.getCharHeight ()), this.av.getAlignment ().getHeight () - 1);
-if (seq < 0) {
-seq = -1;
-}} else {
-seq = Math.min ((Clazz.doubleToInt (y / this.av.getCharHeight ())) + this.av.getStartSeq (), this.av.getAlignment ().getHeight () - 1);
-if (seq < 0) {
-seq = -1;
-}}return seq;
-}, $fz.isPrivate = true, $fz), "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "doMousePressed",
-function (evt) {
-var seq = this.findSeq (evt);
-var res = this.findRes (evt);
-if (seq < this.av.getAlignment ().getHeight () && res < this.av.getAlignment ().getSequenceAt (seq).getLength ()) {
-this.startseq = seq;
-this.lastres = res;
-} else {
-this.startseq = -1;
-this.lastres = -1;
-}return;
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseOverSequence",
-function (sequence, index, pos) {
-var tmp = sequence.hashCode () + index + "";
-if (this.lastMessage == null || !this.lastMessage.equals (tmp)) {
-this.ssm.mouseOverSequence (sequence, index, pos, this.av);
-}this.lastMessage = tmp;
-}, "jalview.datamodel.SequenceI,~N,~N");
-Clazz.overrideMethod (c$, "highlightSequence",
-function (results) {
-if (this.av.isFollowHighlight ()) {
-if (this.ap.scrollToPosition (results, true)) {
-this.ap.alignFrame.repaint ();
-}}this.setStatusMessage (results);
-this.seqCanvas.highlightSearchResults (results);
-}, "jalview.datamodel.SearchResults");
-Clazz.overrideMethod (c$, "getVamsasSource",
-function () {
-return this.ap == null ? null : this.ap.av;
-});
-Clazz.overrideMethod (c$, "updateColours",
-function (seq, index) {
-System.out.println ("update the seqPanel colours");
-}, "jalview.datamodel.SequenceI,~N");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-var res = this.findRes (evt);
-var seq = this.findSeq (evt);
-if (seq >= this.av.getAlignment ().getHeight () || seq < 0 || res < 0) {
-if (this.tooltip != null) {
-this.tooltip.setTip ("");
-}return;
-}var sequence = this.av.getAlignment ().getSequenceAt (seq);
-if (res > sequence.getLength ()) {
-if (this.tooltip != null) {
-this.tooltip.setTip ("");
-}return;
-}var respos = sequence.findPosition (res);
-if (this.ssm != null) {
-this.mouseOverSequence (sequence, res, respos);
-}var text = new StringBuilder ();
-text.append ("Sequence ").append (Integer.toString (seq + 1)).append (" ID: ").append (sequence.getName ());
-var obj = null;
-var ch = String.valueOf (sequence.getCharAt (res));
-if (this.av.getAlignment ().isNucleotide ()) {
-obj = jalview.schemes.ResidueProperties.nucleotideName.get (ch);
-if (obj != null) {
-text.append (" Nucleotide: ").append (obj);
-}} else {
-obj = "X".equalsIgnoreCase (ch) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (ch);
-if (obj != null) {
-text.append (" Residue: ").append (obj);
-}}if (obj != null) {
-text.append (" (").append (Integer.toString (respos)).append (")");
-}this.ap.alignFrame.setStatus (text.toString ());
-var tooltipText = new StringBuilder ();
-var groups = this.av.getAlignment ().findAllGroups (sequence);
-if (groups != null) {
-for (var g = 0; g < groups.length; g++) {
-if (groups[g].getStartRes () <= res && groups[g].getEndRes () >= res) {
-if (!groups[g].getName ().startsWith ("JTreeGroup") && !groups[g].getName ().startsWith ("JGroup")) {
-tooltipText.append (groups[g].getName ()).append (" ");
-}if (groups[g].getDescription () != null) {
-tooltipText.append (groups[g].getDescription ());
-}tooltipText.append ("\n");
-}}
-}var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
-var index = 0;
-while (index < allFeatures.length) {
-var sf = allFeatures[index];
-tooltipText.append (sf.getType () + " " + sf.begin + ":" + sf.end);
-if (sf.getDescription () != null) {
-tooltipText.append (" " + sf.getDescription ());
-}if (sf.getValue ("status") != null) {
-var status = sf.getValue ("status").toString ();
-if (status.length > 0) {
-tooltipText.append (" (" + sf.getValue ("status") + ")");
-}}tooltipText.append ("\n");
-index++;
-}
-if (this.tooltip == null) {
-this.tooltip = new jalview.appletgui.Tooltip (tooltipText.toString (), this.seqCanvas);
-} else {
-this.tooltip.setTip (tooltipText.toString ());
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "findFeaturesAtRes",
-function (sequence, res) {
-var tmp = new java.util.Vector ();
-var features = sequence.getSequenceFeatures ();
-if (features != null) {
-for (var i = 0; i < features.length; i++) {
-if (this.av.getFeaturesDisplayed () == null || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {
-continue;
-}if (features[i].featureGroup != null && !this.seqCanvas.fr.checkGroupVisibility (features[i].featureGroup, false)) {
-continue;
-}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {
-tmp.addElement (features[i]);
-}}
-}features = new Array (tmp.size ());
-tmp.copyInto (features);
-return features;
-}, "jalview.datamodel.SequenceI,~N");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (evt) {
-if (this.mouseWheelPressed) {
-var oldWidth = this.av.getCharWidth ();
-if (Math.abs (evt.getY () - this.lastMousePress.y) > Math.abs (evt.getX () - this.lastMousePress.x)) {
-var fontSize = this.av.font.getSize ();
-if (evt.getY () < this.lastMousePress.y && this.av.getCharHeight () > 1) {
-fontSize--;
-} else if (evt.getY () > this.lastMousePress.y) {
-fontSize++;
-}if (fontSize < 1) {
-fontSize = 1;
-}this.av.setFont ( new java.awt.Font (this.av.font.getName (), this.av.font.getStyle (), fontSize));
-this.av.setCharWidth (oldWidth);
-} else {
-if (evt.getX () < this.lastMousePress.x && this.av.getCharWidth () > 1) {
-this.av.setCharWidth (this.av.getCharWidth () - 1);
-} else if (evt.getX () > this.lastMousePress.x) {
-this.av.setCharWidth (this.av.getCharWidth () + 1);
-}if (this.av.getCharWidth () < 1) {
-this.av.setCharWidth (1);
-}}this.ap.fontChanged ();
-var fm = this.getFontMetrics (this.av.getFont ());
-this.av.validCharWidth = fm.charWidth ('M') <= this.av.getCharWidth ();
-this.lastMousePress = evt.getPoint ();
-this.ap.paintAlignment (false);
-this.ap.annotationPanel.image = null;
-return;
-}if (!this.editingSeqs) {
-this.doMouseDraggedDefineMode (evt);
-return;
-}var res = this.findRes (evt);
-if (res < 0) {
-res = 0;
-}if ((this.lastres == -1) || (this.lastres == res)) {
-return;
-}if ((res < this.av.getAlignment ().getWidth ()) && (res < this.lastres)) {
-this.editSequence (false, res);
-} else {
-this.editSequence (true, res);
-}this.mouseDragging = true;
-if (this.scrollThread != null) {
-this.scrollThread.setEvent (evt);
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "editSequence",
-function (insertGap, startres) {
-var fixedLeft = -1;
-var fixedRight = -1;
-var fixedColumns = false;
-var sg = this.av.getSelectionGroup ();
-var seq = this.av.getAlignment ().getSequenceAt (this.startseq);
-if (!this.groupEditing && this.av.hasHiddenRows ()) {
-if (this.av.isHiddenRepSequence (seq)) {
-sg = this.av.getRepresentedSequences (seq);
-this.groupEditing = true;
-}}var message = new StringBuffer ();
-if (this.groupEditing) {
-message.append (jalview.util.MessageManager.getString ("action.edit_group")).append (":");
-if (this.editCommand == null) {
-this.editCommand = new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.edit_group"));
-}} else {
-message.append (jalview.util.MessageManager.getString ("label.edit_sequence")).append (" " + seq.getName ());
-var label = seq.getName ();
-if (label.length > 10) {
-label = label.substring (0, 10);
-}if (this.editCommand == null) {
-this.editCommand = new jalview.commands.EditCommand (jalview.util.MessageManager.formatMessage ("label.edit_params", Clazz.newArray (-1, [label])));
-}}if (insertGap) {
-message.append (" insert ");
-} else {
-message.append (" delete ");
-}message.append (Math.abs (startres - this.lastres) + " gaps.");
-this.ap.alignFrame.setStatus (message.toString ());
-if (this.groupEditing || (sg != null && sg.getSequences (this.av.getHiddenRepSequences ()).contains (seq))) {
-fixedColumns = true;
-if (sg == null) {
-if (!this.av.isHiddenRepSequence (seq)) {
-this.endEditing ();
-return;
-}sg = this.av.getRepresentedSequences (seq);
-}fixedLeft = sg.getStartRes ();
-fixedRight = sg.getEndRes ();
-if ((startres < fixedLeft && this.lastres >= fixedLeft) || (startres >= fixedLeft && this.lastres < fixedLeft) || (startres > fixedRight && this.lastres <= fixedRight) || (startres <= fixedRight && this.lastres > fixedRight)) {
-this.endEditing ();
-return;
-}if (fixedLeft > startres) {
-fixedRight = fixedLeft - 1;
-fixedLeft = 0;
-} else if (fixedRight < startres) {
-fixedLeft = fixedRight;
-fixedRight = -1;
-}}if (this.av.hasHiddenColumns ()) {
-fixedColumns = true;
-var y1 = this.av.getColumnSelection ().getHiddenBoundaryLeft (startres);
-var y2 = this.av.getColumnSelection ().getHiddenBoundaryRight (startres);
-if ((insertGap && startres > y1 && this.lastres < y1) || (!insertGap && startres < y2 && this.lastres > y2)) {
-this.endEditing ();
-return;
-}if (fixedLeft < y1 && (fixedRight > y2 || fixedRight == -1)) {
-if (startres >= y2) {
-fixedLeft = y2;
-} else {
-fixedRight = y2 - 1;
-}}}if (this.groupEditing) {
-var groupSeqs = sg.getSequences (this.av.getHiddenRepSequences ()).toArray ( new Array (0));
-if (insertGap) {
-if (sg.getStartRes () == 0 && sg.getEndRes () == fixedRight && sg.getEndRes () == this.av.getAlignment ().getWidth () - 1) {
-sg.setEndRes (this.av.getAlignment ().getWidth () + startres - this.lastres);
-fixedRight = sg.getEndRes ();
-}var blank = false;
-for (fixedRight = fixedRight; fixedRight > this.lastres; fixedRight--) {
-blank = true;
-for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
-for (var j = 0; j < startres - this.lastres; j++) {
-if (!jalview.util.Comparison.isGap (gs.getCharAt (fixedRight - j))) {
-blank = false;
-break;
-}}
-}
-if (blank) {
-break;
-}}
-if (!blank) {
-if (sg.getSize () == this.av.getAlignment ().getHeight ()) {
-if ((this.av.hasHiddenColumns () && startres < this.av.getColumnSelection ().getHiddenBoundaryRight (startres))) {
-this.endEditing ();
-return;
-}var alWidth = this.av.getAlignment ().getWidth ();
-if (this.av.hasHiddenRows ()) {
-var hwidth = this.av.getAlignment ().getHiddenSequences ().getWidth ();
-if (hwidth > alWidth) {
-alWidth = hwidth;
-}}sg.setEndRes (sg.getEndRes () + startres - this.lastres);
-fixedRight = alWidth + startres - this.lastres;
-} else {
-this.endEditing ();
-return;
-}}} else if (!insertGap) {
-for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
-for (var j = startres; j < this.lastres; j++) {
-if (gs.getLength () <= j) {
-continue;
-}if (!jalview.util.Comparison.isGap (gs.getCharAt (j))) {
-this.endEditing ();
-return;
-}}
-}
-}if (insertGap) {
-if (fixedColumns && fixedRight != -1) {
-for (var j = this.lastres; j < startres; j++) {
-this.insertChar (j, groupSeqs, fixedRight);
-}
-} else {
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, groupSeqs, startres, startres - this.lastres, this.av.getAlignment (), true);
-}} else {
-if (fixedColumns && fixedRight != -1) {
-for (var j = this.lastres; j > startres; j--) {
-this.deleteChar (startres, groupSeqs, fixedRight);
-}
-} else {
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, groupSeqs, startres, this.lastres - startres, this.av.getAlignment (), true);
-}}} else {
-if (insertGap) {
-if (fixedColumns && fixedRight != -1) {
-for (var j = this.lastres; j < startres; j++) {
-this.insertChar (j, Clazz.newArray (-1, [seq]), fixedRight);
-}
-} else {
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, Clazz.newArray (-1, [seq]), this.lastres, startres - this.lastres, this.av.getAlignment (), true);
-}} else {
-if (fixedColumns && fixedRight != -1) {
-for (var j = this.lastres; j > startres; j--) {
-if (!jalview.util.Comparison.isGap (seq.getCharAt (startres))) {
-this.endEditing ();
-break;
-}this.deleteChar (startres, Clazz.newArray (-1, [seq]), fixedRight);
-}
-} else {
-var max = 0;
-for (var m = startres; m < this.lastres; m++) {
-if (!jalview.util.Comparison.isGap (seq.getCharAt (m))) {
-break;
-}max++;
-}
-if (max > 0) {
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, Clazz.newArray (-1, [seq]), startres, max, this.av.getAlignment (), true);
-}}}}this.lastres = startres;
-this.seqCanvas.repaint ();
-}, "~B,~N");
-Clazz.defineMethod (c$, "insertChar",
-function (j, seq, fixedColumn) {
-var blankColumn = fixedColumn;
-for (var s = 0; s < seq.length; s++) {
-for (blankColumn = fixedColumn; blankColumn > j; blankColumn--) {
-if (jalview.util.Comparison.isGap (seq[s].getCharAt (blankColumn))) {
-break;
-}}
-if (blankColumn <= j) {
-blankColumn = fixedColumn;
-this.endEditing ();
-return;
-}}
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, blankColumn, 1, this.av.getAlignment (), true);
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, j, 1, this.av.getAlignment (), true);
-}, "~N,~A,~N");
-Clazz.defineMethod (c$, "deleteChar",
-function (j, seq, fixedColumn) {
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, j, 1, this.av.getAlignment (), true);
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, fixedColumn, 1, this.av.getAlignment (), true);
-}, "~N,~A,~N");
-Clazz.defineMethod (c$, "doMousePressedDefineMode",
-function (evt) {
-if (this.scrollThread != null) {
-this.scrollThread.running = false;
-this.scrollThread = null;
-}var res = this.findRes (evt);
-var seq = this.findSeq (evt);
-this.oldSeq = seq;
-this.startWrapBlock = this.wrappedBlock;
-if (seq == -1) {
-return;
-}var sequence = this.av.getAlignment ().getSequenceAt (seq);
-if (sequence == null || res > sequence.getLength ()) {
-return;
-}this.stretchGroup = this.av.getSelectionGroup ();
-if (this.stretchGroup == null) {
-this.stretchGroup = this.av.getAlignment ().findGroup (sequence);
-if (this.stretchGroup != null && res > this.stretchGroup.getStartRes () && res < this.stretchGroup.getEndRes ()) {
-this.av.setSelectionGroup (this.stretchGroup);
-} else {
-this.stretchGroup = null;
-}} else if (!this.stretchGroup.getSequences (null).contains (sequence) || this.stretchGroup.getStartRes () > res || this.stretchGroup.getEndRes () < res) {
-this.stretchGroup = null;
-var allGroups = this.av.getAlignment ().findAllGroups (sequence);
-if (allGroups != null) {
-for (var i = 0; i < allGroups.length; i++) {
-if (allGroups[i].getStartRes () <= res && allGroups[i].getEndRes () >= res) {
-this.stretchGroup = allGroups[i];
-break;
-}}
-}this.av.setSelectionGroup (this.stretchGroup);
-}if ((evt.getModifiers () & 4) == 4) {
-var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
-var links = null;
-if (allFeatures != null) {
-for (var i = 0; i < allFeatures.length; i++) {
-if (allFeatures[i].links != null) {
-if (links == null) {
-links = new java.util.Vector ();
-}for (var j = 0; j < allFeatures[i].links.size (); j++) {
-links.addElement (allFeatures[i].links.elementAt (j));
-}
-}}
-}var popup = new jalview.appletgui.APopupMenu (this.ap, null, links);
-this.add (popup);
-popup.show (this, evt.getX (), evt.getY ());
-return;
-}if (this.av.cursorMode) {
-this.seqCanvas.cursorX = this.findRes (evt);
-this.seqCanvas.cursorY = this.findSeq (evt);
-this.seqCanvas.repaint ();
-return;
-}if (this.stretchGroup == null) {
-var sg = new jalview.datamodel.SequenceGroup ();
-sg.setStartRes (res);
-sg.setEndRes (res);
-sg.addSequence (sequence, false);
-this.av.setSelectionGroup (sg);
-this.stretchGroup = sg;
-if (this.av.getConservationSelected ()) {
-jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.av.getGlobalColourScheme (), "Background");
-}if (this.av.getAbovePIDThreshold ()) {
-jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.av.getGlobalColourScheme (), "Background");
-}}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "doMouseReleasedDefineMode",
-function (evt) {
-if (this.stretchGroup == null) {
-return;
-}this.stretchGroup.recalcConservation ();
-if (this.stretchGroup.cs != null) {
-this.stretchGroup.cs.alignmentChanged (this.stretchGroup, this.av.getHiddenRepSequences ());
-if (this.stretchGroup.cs.conservationApplied ()) {
-jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
-} else {
-jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
-}}this.changeEndRes = false;
-this.changeStartRes = false;
-this.stretchGroup = null;
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.av.getSequenceSetId ());
-this.ap.paintAlignment (true);
-this.av.sendSelection ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "doMouseDraggedDefineMode",
-function (evt) {
-var res = this.findRes (evt);
-var y = this.findSeq (evt);
-if (this.wrappedBlock != this.startWrapBlock) {
-return;
-}if (this.stretchGroup == null) {
-return;
-}this.mouseDragging = true;
-if (y > this.av.getAlignment ().getHeight ()) {
-y = this.av.getAlignment ().getHeight () - 1;
-}if (res >= this.av.getAlignment ().getWidth ()) {
-res = this.av.getAlignment ().getWidth () - 1;
-}if (this.stretchGroup.getEndRes () == res) {
-this.changeEndRes = true;
-} else if (this.stretchGroup.getStartRes () == res) {
-this.changeStartRes = true;
-}if (res < 0) {
-res = 0;
-}if (this.changeEndRes) {
-if (res > (this.stretchGroup.getStartRes () - 1)) {
-this.stretchGroup.setEndRes (res);
-}} else if (this.changeStartRes) {
-if (res < (this.stretchGroup.getEndRes () + 1)) {
-this.stretchGroup.setStartRes (res);
-}}var dragDirection = 0;
-if (y > this.oldSeq) {
-dragDirection = 1;
-} else if (y < this.oldSeq) {
-dragDirection = -1;
-}while ((y != this.oldSeq) && (this.oldSeq > -1) && (y < this.av.getAlignment ().getHeight ())) {
-var seq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
-this.oldSeq += dragDirection;
-if (this.oldSeq < 0) {
-break;
-}var nextSeq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
-if (this.stretchGroup.getSequences (null).contains (nextSeq)) {
-this.stretchGroup.deleteSequence (seq, false);
-} else {
-if (seq != null) {
-this.stretchGroup.addSequence (seq, false);
-}this.stretchGroup.addSequence (nextSeq, false);
-}}
-if (this.oldSeq < 0) {
-this.oldSeq = -1;
-}if (res > this.av.endRes || res < this.av.startRes || y < this.av.startSeq || y > this.av.endSeq) {
-this.mouseExited (evt);
-}if (this.scrollThread != null) {
-this.scrollThread.setEvent (evt);
-}this.seqCanvas.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (e) {
-if (this.oldSeq < 0) {
-this.oldSeq = 0;
-}if (this.scrollThread != null) {
-this.scrollThread.running = false;
-this.scrollThread = null;
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (e) {
-if (this.av.getWrapAlignment ()) {
-return;
-}if (this.mouseDragging && this.scrollThread == null) {
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "scrollCanvas",
-function (evt) {
-if (evt == null) {
-if (this.scrollThread != null) {
-this.scrollThread.running = false;
-this.scrollThread = null;
-}this.mouseDragging = false;
-} else {
-if (this.scrollThread == null) {
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
-}this.mouseDragging = true;
-this.scrollThread.setEvent (evt);
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "selection",
-function (seqsel, colsel, source) {
-if (this.av != null && (this.av === source || !this.av.followSelection || (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).getSequenceSetId ().equals (this.av.getSequenceSetId ())))) {
-return;
-}if (this.selectionFromTranslation (seqsel, colsel, source)) {
-return;
-}var repaint = false;
-var copycolsel = true;
-if (this.av.getSelectionGroup () == null || !this.av.isSelectionGroupChanged (true)) {
-var sgroup = null;
-if (seqsel != null && seqsel.getSize () > 0) {
-if (this.av.getAlignment () == null) {
-System.out.println ("Selection message: alignviewport av SeqSetId=" + this.av.getSequenceSetId () + " ViewId=" + this.av.getViewId () + " 's alignment is NULL! returning immediatly.");
-return;
-}sgroup = seqsel.intersect (this.av.getAlignment (), (this.av.hasHiddenRows ()) ? this.av.getHiddenRepSequences () : null);
-if ((sgroup == null || sgroup.getSize () == 0) && (colsel == null || colsel.size () == 0)) {
-copycolsel = false;
-}}if (sgroup != null && sgroup.getSize () > 0) {
-this.av.setSelectionGroup (sgroup);
-} else {
-this.av.setSelectionGroup (null);
-}repaint = this.av.isSelectionGroupChanged (true);
-}if (copycolsel && (this.av.getColumnSelection () == null || !this.av.isColSelChanged (true))) {
-if (colsel == null || colsel.size () == 0) {
-if (this.av.getColumnSelection () != null) {
-this.av.getColumnSelection ().clear ();
-}} else {
-if (this.av.getColumnSelection () == null) {
-this.av.setColumnSelection ( new jalview.datamodel.ColumnSelection (colsel));
-} else {
-this.av.getColumnSelection ().setElementsFrom (colsel);
-}}repaint = new Boolean (repaint | this.av.isColSelChanged (true)).valueOf ();
-}if (copycolsel && this.av.hasHiddenColumns () && (this.av.getColumnSelection () == null || this.av.getColumnSelection ().getHiddenColumns () == null)) {
-System.err.println ("Bad things");
-}if (repaint) {
-this.ap.scalePanelHolder.repaint ();
-this.ap.repaint ();
-}}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
-Clazz.defineMethod (c$, "scrollTo",
-function (row, column) {
-row = row < 0 ? this.ap.av.startSeq : row;
-column = column < 0 ? this.ap.av.startRes : column;
-this.ap.scrollTo (column, column, row, true, true);
-}, "~N,~N");
-Clazz.defineMethod (c$, "scrollToRow",
-function (row) {
-row = row < 0 ? this.ap.av.startSeq : row;
-this.ap.scrollTo (this.ap.av.startRes, this.ap.av.startRes, row, true, true);
-}, "~N");
-Clazz.defineMethod (c$, "scrollToColumn",
-function (column) {
-column = column < 0 ? this.ap.av.startRes : column;
-this.ap.scrollTo (column, column, this.ap.av.startSeq, true, true);
-}, "~N");
-Clazz.defineMethod (c$, "selectionFromTranslation",
-function (seqsel, colsel, source) {
-if (!(Clazz.instanceOf (source, jalview.api.AlignViewportI))) {
-return false;
-}var sourceAv = source;
-if (sourceAv.getCodingComplement () !== this.av && this.av.getCodingComplement () !== sourceAv) {
-return false;
-}var sg = jalview.util.MappingUtils.mapSequenceGroup (seqsel, sourceAv, this.av);
-this.av.setSelectionGroup (sg);
-this.av.isSelectionGroupChanged (true);
-var cs = jalview.util.MappingUtils.mapColumnSelection (colsel, sourceAv, this.av);
-this.av.setColumnSelection (cs);
-this.av.isColSelChanged (true);
-this.ap.scalePanelHolder.repaint ();
-this.ap.repaint ();
-return true;
-}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
-c$.$SeqPanel$ScrollThread$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.evt = null;
-this.running = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui.SeqPanel, "ScrollThread", Thread);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, jalview.appletgui.SeqPanel.ScrollThread, []);
-this.start ();
-});
-Clazz.defineMethod (c$, "setEvent",
-function (a) {
-this.evt = a;
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "stopScrolling",
-function () {
-this.running = false;
-});
-Clazz.overrideMethod (c$, "run",
-function () {
-this.running = true;
-while (this.running) {
-if (this.evt != null) {
-if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () < 0 && this.b$["jalview.appletgui.SeqPanel"].av.getStartSeq () > 0) {
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (true);
-}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().height && this.b$["jalview.appletgui.SeqPanel"].av.getAlignment ().getHeight () > this.b$["jalview.appletgui.SeqPanel"].av.getEndSeq ()) {
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (false);
-}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () < 0) {
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (false);
-} else if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().width) {
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (true);
-}}try {
-Thread.sleep (75);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-}
-});
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.structure.SelectionListener", "$.SequenceListener", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread"], "jalview.appletgui.SeqPanel", ["jalview.api.AlignViewportI", "jalview.appletgui.APopupMenu", "$.AlignViewport", "$.PaintRefresher", "$.SeqCanvas", "$.SliderPanel", "$.Tooltip", "jalview.commands.EditCommand", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.SequenceGroup", "jalview.schemes.ResidueProperties", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "$.MessageManager", "java.awt.BorderLayout", "$.Font", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.seqCanvas = null;
+this.ap = null;
+this.lastres = 0;
+this.startseq = 0;
+this.av = null;
+this.seqEditOccurred = false;
+this.scrollThread = null;
+this.mouseDragging = false;
+this.editingSeqs = false;
+this.groupEditing = false;
+this.oldSeq = -1;
+this.changeEndSeq = false;
+this.changeStartSeq = false;
+this.changeEndRes = false;
+this.changeStartRes = false;
+this.stretchGroup = null;
+this.keyboardNo1 = null;
+this.keyboardNo2 = null;
+this.mouseWheelPressed = false;
+this.lastMousePress = null;
+this.editCommand = null;
+this.ssm = null;
+this.startWrapBlock = -1;
+this.wrappedBlock = -1;
+this.lastMessage = null;
+this.tooltip = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.SeqPanel.ScrollThread")) {
+jalview.appletgui.SeqPanel.$SeqPanel$ScrollThread$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SeqPanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener, jalview.structure.SequenceListener, jalview.structure.SelectionListener]);
+Clazz.makeConstructor (c$,
+function (avp, p) {
+Clazz.superConstructor (this, jalview.appletgui.SeqPanel, []);
+this.av = avp;
+this.setName ("seqPanel");
+this.seqCanvas = new jalview.appletgui.SeqCanvas (avp);
+this.setLayout ( new java.awt.BorderLayout ());
+this.add (this.seqCanvas);
+this.ap = p;
+this.seqCanvas.addMouseMotionListener (this);
+this.seqCanvas.addMouseListener (this);
+this.ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
+this.ssm.addStructureViewerListener (this);
+this.ssm.addSelectionListener (this);
+this.seqCanvas.repaint ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "endEditing",
+function () {
+if (this.editCommand != null && this.editCommand.getSize () > 0) {
+this.ap.alignFrame.addHistoryItem (this.editCommand);
+this.av.firePropertyChange ("alignment", null, this.av.getAlignment ().getSequences ());
+}this.startseq = -1;
+this.lastres = -1;
+this.editingSeqs = false;
+this.groupEditing = false;
+this.keyboardNo1 = null;
+this.keyboardNo2 = null;
+this.editCommand = null;
+});
+Clazz.defineMethod (c$, "setCursorRow",
+function () {
+this.seqCanvas.cursorY = this.getKeyboardNo1 () - 1;
+this.scrollToVisible ();
+});
+Clazz.defineMethod (c$, "setCursorColumn",
+function () {
+this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
+this.scrollToVisible ();
+});
+Clazz.defineMethod (c$, "setCursorRowAndColumn",
+function () {
+if (this.keyboardNo2 == null) {
+this.keyboardNo2 = new StringBuffer ();
+} else {
+this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
+this.seqCanvas.cursorY = this.getKeyboardNo2 () - 1;
+this.scrollToVisible ();
+}});
+Clazz.defineMethod (c$, "setCursorPosition",
+function () {
+var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
+this.seqCanvas.cursorX = sequence.findIndex (this.getKeyboardNo1 ()) - 1;
+this.scrollToVisible ();
+});
+Clazz.defineMethod (c$, "moveCursor",
+function (dx, dy) {
+this.seqCanvas.cursorX += dx;
+this.seqCanvas.cursorY += dy;
+if (this.av.hasHiddenColumns () && !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
+var original = this.seqCanvas.cursorX - dx;
+var maxWidth = this.av.getAlignment ().getWidth ();
+while (!this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX) && this.seqCanvas.cursorX < maxWidth && this.seqCanvas.cursorX > 0) {
+this.seqCanvas.cursorX += dx;
+}
+if (this.seqCanvas.cursorX >= maxWidth || !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
+this.seqCanvas.cursorX = original;
+}}this.scrollToVisible ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "scrollToVisible",
+function () {
+if (this.seqCanvas.cursorX < 0) {
+this.seqCanvas.cursorX = 0;
+} else if (this.seqCanvas.cursorX > this.av.getAlignment ().getWidth () - 1) {
+this.seqCanvas.cursorX = this.av.getAlignment ().getWidth () - 1;
+}if (this.seqCanvas.cursorY < 0) {
+this.seqCanvas.cursorY = 0;
+} else if (this.seqCanvas.cursorY > this.av.getAlignment ().getHeight () - 1) {
+this.seqCanvas.cursorY = this.av.getAlignment ().getHeight () - 1;
+}this.endEditing ();
+if (this.av.getWrapAlignment ()) {
+this.ap.scrollToWrappedVisible (this.seqCanvas.cursorX);
+} else {
+while (this.seqCanvas.cursorY < this.av.startSeq) {
+this.ap.scrollUp (true);
+}
+while (this.seqCanvas.cursorY + 1 > this.av.endSeq) {
+this.ap.scrollUp (false);
+}
+while (this.seqCanvas.cursorX < this.av.getColumnSelection ().adjustForHiddenColumns (this.av.startRes)) {
+if (!this.ap.scrollRight (false)) {
+break;
+}}
+while (this.seqCanvas.cursorX > this.av.getColumnSelection ().adjustForHiddenColumns (this.av.endRes)) {
+if (!this.ap.scrollRight (true)) {
+break;
+}}
+}this.setStatusMessage (this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY), this.seqCanvas.cursorX, this.seqCanvas.cursorY);
+this.seqCanvas.repaint ();
+});
+Clazz.defineMethod (c$, "setSelectionAreaAtCursor",
+function (topLeft) {
+var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
+if (this.av.getSelectionGroup () != null) {
+var sg = this.av.getSelectionGroup ();
+var min = this.av.getAlignment ().getHeight ();
+var max = 0;
+for (var i = 0; i < sg.getSize (); i++) {
+var index = this.av.getAlignment ().findIndex (sg.getSequenceAt (i));
+if (index > max) {
+max = index;
+}if (index < min) {
+min = index;
+}}
+max++;
+if (topLeft) {
+sg.setStartRes (this.seqCanvas.cursorX);
+if (sg.getEndRes () < this.seqCanvas.cursorX) {
+sg.setEndRes (this.seqCanvas.cursorX);
+}min = this.seqCanvas.cursorY;
+} else {
+sg.setEndRes (this.seqCanvas.cursorX);
+if (sg.getStartRes () > this.seqCanvas.cursorX) {
+sg.setStartRes (this.seqCanvas.cursorX);
+}max = this.seqCanvas.cursorY + 1;
+}if (min > max) {
+this.av.setSelectionGroup (null);
+} else {
+sg.clear ();
+for (var i = min; i < max; i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+}}if (this.av.getSelectionGroup () == null) {
+var sg = new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (this.seqCanvas.cursorX);
+sg.setEndRes (this.seqCanvas.cursorX);
+sg.addSequence (sequence, false);
+this.av.setSelectionGroup (sg);
+}this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "~B");
+Clazz.defineMethod (c$, "insertGapAtCursor",
+function (group) {
+this.groupEditing = group;
+this.startseq = this.seqCanvas.cursorY;
+this.lastres = this.seqCanvas.cursorX;
+this.editSequence (true, this.seqCanvas.cursorX + this.getKeyboardNo1 ());
+this.endEditing ();
+}, "~B");
+Clazz.defineMethod (c$, "deleteGapAtCursor",
+function (group) {
+this.groupEditing = group;
+this.startseq = this.seqCanvas.cursorY;
+this.lastres = this.seqCanvas.cursorX + this.getKeyboardNo1 ();
+this.editSequence (false, this.seqCanvas.cursorX);
+this.endEditing ();
+}, "~B");
+Clazz.defineMethod (c$, "numberPressed",
+function (value) {
+if (this.keyboardNo1 == null) {
+this.keyboardNo1 = new StringBuffer ();
+}if (this.keyboardNo2 != null) {
+this.keyboardNo2.append (value);
+} else {
+this.keyboardNo1.append (value);
+}}, "~S");
+Clazz.defineMethod (c$, "getKeyboardNo1",
+function () {
+try {
+if (this.keyboardNo1 != null) {
+var value = Integer.parseInt (this.keyboardNo1.toString ());
+this.keyboardNo1 = null;
+return value;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+this.keyboardNo1 = null;
+return 1;
+});
+Clazz.defineMethod (c$, "getKeyboardNo2",
+function () {
+try {
+if (this.keyboardNo2 != null) {
+var value = Integer.parseInt (this.keyboardNo2.toString ());
+this.keyboardNo2 = null;
+return value;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+this.keyboardNo2 = null;
+return 1;
+});
+Clazz.defineMethod (c$, "setStatusMessage",
+function (sequence, res, seq) {
+var text = new StringBuilder (32);
+var seqno = seq == -1 ? "" : " " + (seq + 1);
+text.append ("Sequence" + seqno + " ID: " + sequence.getName ());
+var residue = null;
+var displayChar = String.valueOf (sequence.getCharAt (res));
+if (this.av.getAlignment ().isNucleotide ()) {
+residue = jalview.schemes.ResidueProperties.nucleotideName.get (displayChar);
+if (residue != null) {
+text.append (" Nucleotide: ").append (residue);
+}} else {
+residue = "X".equalsIgnoreCase (displayChar) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (displayChar);
+if (residue != null) {
+text.append (" Residue: ").append (residue);
+}}var pos = -1;
+if (residue != null) {
+pos = sequence.findPosition (res);
+text.append (" (").append (Integer.toString (pos)).append (")");
+}this.ap.alignFrame.setStatus (text.toString ());
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "setStatusMessage",
+($fz = function (results) {
+var matches = results.getResults ();
+if (!matches.isEmpty ()) {
+var m = matches.get (0);
+var seq = m.getSequence ();
+var sequenceIndex = this.av.getAlignment ().findIndex (seq);
+var start = m.getStart () - 1;
+this.setStatusMessage (seq, start, sequenceIndex);
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SearchResults");
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+this.lastMousePress = evt.getPoint ();
+if ((evt.getModifiers () & 8) == 8 && !this.av.MAC) {
+this.mouseWheelPressed = true;
+return;
+}if (evt.isShiftDown () || evt.isControlDown () || evt.isAltDown ()) {
+if (evt.isControlDown () || evt.isAltDown ()) {
+this.groupEditing = true;
+}this.editingSeqs = true;
+} else {
+this.doMousePressedDefineMode (evt);
+return;
+}var seq = this.findSeq (evt);
+var res = this.findRes (evt);
+if (seq < 0 || res < 0) {
+return;
+}if ((seq < this.av.getAlignment ().getHeight ()) && (res < this.av.getAlignment ().getSequenceAt (seq).getLength ())) {
+this.startseq = seq;
+this.lastres = res;
+} else {
+this.startseq = -1;
+this.lastres = -1;
+}return;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+var sequence = this.av.getAlignment ().getSequenceAt (this.findSeq (evt));
+if (evt.getClickCount () > 1) {
+if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSize () == 1 && this.av.getSelectionGroup ().getEndRes () - this.av.getSelectionGroup ().getStartRes () < 2) {
+this.av.setSelectionGroup (null);
+}var features = this.findFeaturesAtRes (sequence, sequence.findPosition (this.findRes (evt)));
+if (features != null && features.length > 0) {
+var highlight = new jalview.datamodel.SearchResults ();
+highlight.addResult (sequence, features[0].getBegin (), features[0].getEnd ());
+this.seqCanvas.highlightSearchResults (highlight);
+}if (features != null && features.length > 0) {
+this.seqCanvas.getFeatureRenderer ().amendFeatures ( Clazz.newArray (-1, [sequence]), features, false, this.ap);
+this.seqCanvas.highlightSearchResults (null);
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.mouseDragging = false;
+this.mouseWheelPressed = false;
+this.ap.paintAlignment (true);
+if (!this.editingSeqs) {
+this.doMouseReleasedDefineMode (evt);
+return;
+}this.endEditing ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findRes",
+function (evt) {
+var res = 0;
+var x = evt.getX ();
+if (this.av.getWrapAlignment ()) {
+var hgap = this.av.getCharHeight ();
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.av.getCharHeight ();
+}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
+var y = evt.getY ();
+y -= hgap;
+x -= this.seqCanvas.LABEL_WEST;
+var cwidth = this.seqCanvas.getWrappedCanvasWidth (this.getSize ().width);
+if (cwidth < 1) {
+return 0;
+}this.wrappedBlock = Clazz.doubleToInt (y / cHeight);
+this.wrappedBlock += Clazz.doubleToInt (this.av.getStartRes () / cwidth);
+res = this.wrappedBlock * cwidth + Clazz.doubleToInt (x / this.av.getCharWidth ());
+} else {
+res = (Clazz.doubleToInt (x / this.av.getCharWidth ())) + this.av.getStartRes ();
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}return res;
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findSeq",
+function (evt) {
+var sqnum = this.findAlRow (evt);
+return (sqnum < 0) ? 0 : sqnum;
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findAlRow",
+($fz = function (evt) {
+var seq = 0;
+var y = evt.getY ();
+if (this.av.getWrapAlignment ()) {
+var hgap = this.av.getCharHeight ();
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.av.getCharHeight ();
+}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
+y -= hgap;
+seq = Math.min (Clazz.doubleToInt ((y % cHeight) / this.av.getCharHeight ()), this.av.getAlignment ().getHeight () - 1);
+if (seq < 0) {
+seq = -1;
+}} else {
+seq = Math.min ((Clazz.doubleToInt (y / this.av.getCharHeight ())) + this.av.getStartSeq (), this.av.getAlignment ().getHeight () - 1);
+if (seq < 0) {
+seq = -1;
+}}return seq;
+}, $fz.isPrivate = true, $fz), "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "doMousePressed",
+function (evt) {
+var seq = this.findSeq (evt);
+var res = this.findRes (evt);
+if (seq < this.av.getAlignment ().getHeight () && res < this.av.getAlignment ().getSequenceAt (seq).getLength ()) {
+this.startseq = seq;
+this.lastres = res;
+} else {
+this.startseq = -1;
+this.lastres = -1;
+}return;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseOverSequence",
+function (sequence, index, pos) {
+var tmp = sequence.hashCode () + index + "";
+if (this.lastMessage == null || !this.lastMessage.equals (tmp)) {
+this.ssm.mouseOverSequence (sequence, index, pos, this.av);
+}this.lastMessage = tmp;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.overrideMethod (c$, "highlightSequence",
+function (results) {
+if (this.av.isFollowHighlight ()) {
+if (this.ap.scrollToPosition (results, true)) {
+this.ap.alignFrame.repaint ();
+}}this.setStatusMessage (results);
+this.seqCanvas.highlightSearchResults (results);
+}, "jalview.datamodel.SearchResults");
+Clazz.overrideMethod (c$, "getVamsasSource",
+function () {
+return this.ap == null ? null : this.ap.av;
+});
+Clazz.overrideMethod (c$, "updateColours",
+function (seq, index) {
+System.out.println ("update the seqPanel colours");
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+var res = this.findRes (evt);
+var seq = this.findSeq (evt);
+if (seq >= this.av.getAlignment ().getHeight () || seq < 0 || res < 0) {
+if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}return;
+}var sequence = this.av.getAlignment ().getSequenceAt (seq);
+if (res > sequence.getLength ()) {
+if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}return;
+}var respos = sequence.findPosition (res);
+if (this.ssm != null) {
+this.mouseOverSequence (sequence, res, respos);
+}var text = new StringBuilder ();
+text.append ("Sequence ").append (Integer.toString (seq + 1)).append (" ID: ").append (sequence.getName ());
+var obj = null;
+var ch = String.valueOf (sequence.getCharAt (res));
+if (this.av.getAlignment ().isNucleotide ()) {
+obj = jalview.schemes.ResidueProperties.nucleotideName.get (ch);
+if (obj != null) {
+text.append (" Nucleotide: ").append (obj);
+}} else {
+obj = "X".equalsIgnoreCase (ch) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (ch);
+if (obj != null) {
+text.append (" Residue: ").append (obj);
+}}if (obj != null) {
+text.append (" (").append (Integer.toString (respos)).append (")");
+}this.ap.alignFrame.setStatus (text.toString ());
+var tooltipText = new StringBuilder ();
+var groups = this.av.getAlignment ().findAllGroups (sequence);
+if (groups != null) {
+for (var g = 0; g < groups.length; g++) {
+if (groups[g].getStartRes () <= res && groups[g].getEndRes () >= res) {
+if (!groups[g].getName ().startsWith ("JTreeGroup") && !groups[g].getName ().startsWith ("JGroup")) {
+tooltipText.append (groups[g].getName ()).append (" ");
+}if (groups[g].getDescription () != null) {
+tooltipText.append (groups[g].getDescription ());
+}tooltipText.append ("\n");
+}}
+}var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
+var index = 0;
+while (index < allFeatures.length) {
+var sf = allFeatures[index];
+tooltipText.append (sf.getType () + " " + sf.begin + ":" + sf.end);
+if (sf.getDescription () != null) {
+tooltipText.append (" " + sf.getDescription ());
+}if (sf.getValue ("status") != null) {
+var status = sf.getValue ("status").toString ();
+if (status.length > 0) {
+tooltipText.append (" (" + sf.getValue ("status") + ")");
+}}tooltipText.append ("\n");
+index++;
+}
+if (this.tooltip == null) {
+this.tooltip = new jalview.appletgui.Tooltip (tooltipText.toString (), this.seqCanvas);
+} else {
+this.tooltip.setTip (tooltipText.toString ());
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findFeaturesAtRes",
+function (sequence, res) {
+var tmp = new java.util.Vector ();
+var features = sequence.getSequenceFeatures ();
+if (features != null) {
+for (var i = 0; i < features.length; i++) {
+if (this.av.getFeaturesDisplayed () == null || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {
+continue;
+}if (features[i].featureGroup != null && !this.seqCanvas.fr.checkGroupVisibility (features[i].featureGroup, false)) {
+continue;
+}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {
+tmp.addElement (features[i]);
+}}
+}features = new Array (tmp.size ());
+tmp.copyInto (features);
+return features;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (evt) {
+if (this.mouseWheelPressed) {
+var oldWidth = this.av.getCharWidth ();
+if (Math.abs (evt.getY () - this.lastMousePress.y) > Math.abs (evt.getX () - this.lastMousePress.x)) {
+var fontSize = this.av.font.getSize ();
+if (evt.getY () < this.lastMousePress.y && this.av.getCharHeight () > 1) {
+fontSize--;
+} else if (evt.getY () > this.lastMousePress.y) {
+fontSize++;
+}if (fontSize < 1) {
+fontSize = 1;
+}this.av.setFont ( new java.awt.Font (this.av.font.getName (), this.av.font.getStyle (), fontSize));
+this.av.setCharWidth (oldWidth);
+} else {
+if (evt.getX () < this.lastMousePress.x && this.av.getCharWidth () > 1) {
+this.av.setCharWidth (this.av.getCharWidth () - 1);
+} else if (evt.getX () > this.lastMousePress.x) {
+this.av.setCharWidth (this.av.getCharWidth () + 1);
+}if (this.av.getCharWidth () < 1) {
+this.av.setCharWidth (1);
+}}this.ap.fontChanged ();
+var fm = this.getFontMetrics (this.av.getFont ());
+this.av.validCharWidth = fm.charWidth ('M') <= this.av.getCharWidth ();
+this.lastMousePress = evt.getPoint ();
+this.ap.paintAlignment (false);
+this.ap.annotationPanel.image = null;
+return;
+}if (!this.editingSeqs) {
+this.doMouseDraggedDefineMode (evt);
+return;
+}var res = this.findRes (evt);
+if (res < 0) {
+res = 0;
+}if ((this.lastres == -1) || (this.lastres == res)) {
+return;
+}if ((res < this.av.getAlignment ().getWidth ()) && (res < this.lastres)) {
+this.editSequence (false, res);
+} else {
+this.editSequence (true, res);
+}this.mouseDragging = true;
+if (this.scrollThread != null) {
+this.scrollThread.setEvent (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "editSequence",
+function (insertGap, startres) {
+var fixedLeft = -1;
+var fixedRight = -1;
+var fixedColumns = false;
+var sg = this.av.getSelectionGroup ();
+var seq = this.av.getAlignment ().getSequenceAt (this.startseq);
+if (!this.groupEditing && this.av.hasHiddenRows ()) {
+if (this.av.isHiddenRepSequence (seq)) {
+sg = this.av.getRepresentedSequences (seq);
+this.groupEditing = true;
+}}var message = new StringBuffer ();
+if (this.groupEditing) {
+message.append (jalview.util.MessageManager.getString ("action.edit_group")).append (":");
+if (this.editCommand == null) {
+this.editCommand = new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.edit_group"));
+}} else {
+message.append (jalview.util.MessageManager.getString ("label.edit_sequence")).append (" " + seq.getName ());
+var label = seq.getName ();
+if (label.length > 10) {
+label = label.substring (0, 10);
+}if (this.editCommand == null) {
+this.editCommand = new jalview.commands.EditCommand (jalview.util.MessageManager.formatMessage ("label.edit_params", Clazz.newArray (-1, [label])));
+}}if (insertGap) {
+message.append (" insert ");
+} else {
+message.append (" delete ");
+}message.append (Math.abs (startres - this.lastres) + " gaps.");
+this.ap.alignFrame.setStatus (message.toString ());
+if (this.groupEditing || (sg != null && sg.getSequences (this.av.getHiddenRepSequences ()).contains (seq))) {
+fixedColumns = true;
+if (sg == null) {
+if (!this.av.isHiddenRepSequence (seq)) {
+this.endEditing ();
+return;
+}sg = this.av.getRepresentedSequences (seq);
+}fixedLeft = sg.getStartRes ();
+fixedRight = sg.getEndRes ();
+if ((startres < fixedLeft && this.lastres >= fixedLeft) || (startres >= fixedLeft && this.lastres < fixedLeft) || (startres > fixedRight && this.lastres <= fixedRight) || (startres <= fixedRight && this.lastres > fixedRight)) {
+this.endEditing ();
+return;
+}if (fixedLeft > startres) {
+fixedRight = fixedLeft - 1;
+fixedLeft = 0;
+} else if (fixedRight < startres) {
+fixedLeft = fixedRight;
+fixedRight = -1;
+}}if (this.av.hasHiddenColumns ()) {
+fixedColumns = true;
+var y1 = this.av.getColumnSelection ().getHiddenBoundaryLeft (startres);
+var y2 = this.av.getColumnSelection ().getHiddenBoundaryRight (startres);
+if ((insertGap && startres > y1 && this.lastres < y1) || (!insertGap && startres < y2 && this.lastres > y2)) {
+this.endEditing ();
+return;
+}if (fixedLeft < y1 && (fixedRight > y2 || fixedRight == -1)) {
+if (startres >= y2) {
+fixedLeft = y2;
+} else {
+fixedRight = y2 - 1;
+}}}if (this.groupEditing) {
+var groupSeqs = sg.getSequences (this.av.getHiddenRepSequences ()).toArray ( new Array (0));
+if (insertGap) {
+if (sg.getStartRes () == 0 && sg.getEndRes () == fixedRight && sg.getEndRes () == this.av.getAlignment ().getWidth () - 1) {
+sg.setEndRes (this.av.getAlignment ().getWidth () + startres - this.lastres);
+fixedRight = sg.getEndRes ();
+}var blank = false;
+for (fixedRight = fixedRight; fixedRight > this.lastres; fixedRight--) {
+blank = true;
+for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
+for (var j = 0; j < startres - this.lastres; j++) {
+if (!jalview.util.Comparison.isGap (gs.getCharAt (fixedRight - j))) {
+blank = false;
+break;
+}}
+}
+if (blank) {
+break;
+}}
+if (!blank) {
+if (sg.getSize () == this.av.getAlignment ().getHeight ()) {
+if ((this.av.hasHiddenColumns () && startres < this.av.getColumnSelection ().getHiddenBoundaryRight (startres))) {
+this.endEditing ();
+return;
+}var alWidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenRows ()) {
+var hwidth = this.av.getAlignment ().getHiddenSequences ().getWidth ();
+if (hwidth > alWidth) {
+alWidth = hwidth;
+}}sg.setEndRes (sg.getEndRes () + startres - this.lastres);
+fixedRight = alWidth + startres - this.lastres;
+} else {
+this.endEditing ();
+return;
+}}} else if (!insertGap) {
+for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
+for (var j = startres; j < this.lastres; j++) {
+if (gs.getLength () <= j) {
+continue;
+}if (!jalview.util.Comparison.isGap (gs.getCharAt (j))) {
+this.endEditing ();
+return;
+}}
+}
+}if (insertGap) {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j < startres; j++) {
+this.insertChar (j, groupSeqs, fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, groupSeqs, startres, startres - this.lastres, this.av.getAlignment (), true);
+}} else {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j > startres; j--) {
+this.deleteChar (startres, groupSeqs, fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, groupSeqs, startres, this.lastres - startres, this.av.getAlignment (), true);
+}}} else {
+if (insertGap) {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j < startres; j++) {
+this.insertChar (j, Clazz.newArray (-1, [seq]), fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, Clazz.newArray (-1, [seq]), this.lastres, startres - this.lastres, this.av.getAlignment (), true);
+}} else {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j > startres; j--) {
+if (!jalview.util.Comparison.isGap (seq.getCharAt (startres))) {
+this.endEditing ();
+break;
+}this.deleteChar (startres, Clazz.newArray (-1, [seq]), fixedRight);
+}
+} else {
+var max = 0;
+for (var m = startres; m < this.lastres; m++) {
+if (!jalview.util.Comparison.isGap (seq.getCharAt (m))) {
+break;
+}max++;
+}
+if (max > 0) {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, Clazz.newArray (-1, [seq]), startres, max, this.av.getAlignment (), true);
+}}}}this.lastres = startres;
+this.seqCanvas.repaint ();
+}, "~B,~N");
+Clazz.defineMethod (c$, "insertChar",
+function (j, seq, fixedColumn) {
+var blankColumn = fixedColumn;
+for (var s = 0; s < seq.length; s++) {
+for (blankColumn = fixedColumn; blankColumn > j; blankColumn--) {
+if (jalview.util.Comparison.isGap (seq[s].getCharAt (blankColumn))) {
+break;
+}}
+if (blankColumn <= j) {
+blankColumn = fixedColumn;
+this.endEditing ();
+return;
+}}
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, blankColumn, 1, this.av.getAlignment (), true);
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, j, 1, this.av.getAlignment (), true);
+}, "~N,~A,~N");
+Clazz.defineMethod (c$, "deleteChar",
+function (j, seq, fixedColumn) {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, j, 1, this.av.getAlignment (), true);
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, fixedColumn, 1, this.av.getAlignment (), true);
+}, "~N,~A,~N");
+Clazz.defineMethod (c$, "doMousePressedDefineMode",
+function (evt) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}var res = this.findRes (evt);
+var seq = this.findSeq (evt);
+this.oldSeq = seq;
+this.startWrapBlock = this.wrappedBlock;
+if (seq == -1) {
+return;
+}var sequence = this.av.getAlignment ().getSequenceAt (seq);
+if (sequence == null || res > sequence.getLength ()) {
+return;
+}this.stretchGroup = this.av.getSelectionGroup ();
+if (this.stretchGroup == null) {
+this.stretchGroup = this.av.getAlignment ().findGroup (sequence);
+if (this.stretchGroup != null && res > this.stretchGroup.getStartRes () && res < this.stretchGroup.getEndRes ()) {
+this.av.setSelectionGroup (this.stretchGroup);
+} else {
+this.stretchGroup = null;
+}} else if (!this.stretchGroup.getSequences (null).contains (sequence) || this.stretchGroup.getStartRes () > res || this.stretchGroup.getEndRes () < res) {
+this.stretchGroup = null;
+var allGroups = this.av.getAlignment ().findAllGroups (sequence);
+if (allGroups != null) {
+for (var i = 0; i < allGroups.length; i++) {
+if (allGroups[i].getStartRes () <= res && allGroups[i].getEndRes () >= res) {
+this.stretchGroup = allGroups[i];
+break;
+}}
+}this.av.setSelectionGroup (this.stretchGroup);
+}if ((evt.getModifiers () & 4) == 4) {
+var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
+var links = null;
+if (allFeatures != null) {
+for (var i = 0; i < allFeatures.length; i++) {
+if (allFeatures[i].links != null) {
+if (links == null) {
+links = new java.util.Vector ();
+}for (var j = 0; j < allFeatures[i].links.size (); j++) {
+links.addElement (allFeatures[i].links.elementAt (j));
+}
+}}
+}var popup = new jalview.appletgui.APopupMenu (this.ap, null, links);
+this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}if (this.av.cursorMode) {
+this.seqCanvas.cursorX = this.findRes (evt);
+this.seqCanvas.cursorY = this.findSeq (evt);
+this.seqCanvas.repaint ();
+return;
+}if (this.stretchGroup == null) {
+var sg = new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (res);
+sg.setEndRes (res);
+sg.addSequence (sequence, false);
+this.av.setSelectionGroup (sg);
+this.stretchGroup = sg;
+if (this.av.getConservationSelected ()) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.av.getGlobalColourScheme (), "Background");
+}if (this.av.getAbovePIDThreshold ()) {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.av.getGlobalColourScheme (), "Background");
+}}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "doMouseReleasedDefineMode",
+function (evt) {
+if (this.stretchGroup == null) {
+return;
+}this.stretchGroup.recalcConservation ();
+if (this.stretchGroup.cs != null) {
+this.stretchGroup.cs.alignmentChanged (this.stretchGroup, this.av.getHiddenRepSequences ());
+if (this.stretchGroup.cs.conservationApplied ()) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
+} else {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
+}}this.changeEndRes = false;
+this.changeStartRes = false;
+this.stretchGroup = null;
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.av.getSequenceSetId ());
+this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "doMouseDraggedDefineMode",
+function (evt) {
+var res = this.findRes (evt);
+var y = this.findSeq (evt);
+if (this.wrappedBlock != this.startWrapBlock) {
+return;
+}if (this.stretchGroup == null) {
+return;
+}this.mouseDragging = true;
+if (y > this.av.getAlignment ().getHeight ()) {
+y = this.av.getAlignment ().getHeight () - 1;
+}if (res >= this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.stretchGroup.getEndRes () == res) {
+this.changeEndRes = true;
+} else if (this.stretchGroup.getStartRes () == res) {
+this.changeStartRes = true;
+}if (res < 0) {
+res = 0;
+}if (this.changeEndRes) {
+if (res > (this.stretchGroup.getStartRes () - 1)) {
+this.stretchGroup.setEndRes (res);
+}} else if (this.changeStartRes) {
+if (res < (this.stretchGroup.getEndRes () + 1)) {
+this.stretchGroup.setStartRes (res);
+}}var dragDirection = 0;
+if (y > this.oldSeq) {
+dragDirection = 1;
+} else if (y < this.oldSeq) {
+dragDirection = -1;
+}while ((y != this.oldSeq) && (this.oldSeq > -1) && (y < this.av.getAlignment ().getHeight ())) {
+var seq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
+this.oldSeq += dragDirection;
+if (this.oldSeq < 0) {
+break;
+}var nextSeq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
+if (this.stretchGroup.getSequences (null).contains (nextSeq)) {
+this.stretchGroup.deleteSequence (seq, false);
+} else {
+if (seq != null) {
+this.stretchGroup.addSequence (seq, false);
+}this.stretchGroup.addSequence (nextSeq, false);
+}}
+if (this.oldSeq < 0) {
+this.oldSeq = -1;
+}if (res > this.av.endRes || res < this.av.startRes || y < this.av.startSeq || y > this.av.endSeq) {
+this.mouseExited (evt);
+}if (this.scrollThread != null) {
+this.scrollThread.setEvent (evt);
+}this.seqCanvas.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (e) {
+if (this.oldSeq < 0) {
+this.oldSeq = 0;
+}if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (e) {
+if (this.av.getWrapAlignment ()) {
+return;
+}if (this.mouseDragging && this.scrollThread == null) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "scrollCanvas",
+function (evt) {
+if (evt == null) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}this.mouseDragging = false;
+} else {
+if (this.scrollThread == null) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
+}this.mouseDragging = true;
+this.scrollThread.setEvent (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "selection",
+function (seqsel, colsel, source) {
+if (this.av != null && (this.av === source || !this.av.followSelection || (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).getSequenceSetId ().equals (this.av.getSequenceSetId ())))) {
+return;
+}if (this.selectionFromTranslation (seqsel, colsel, source)) {
+return;
+}var repaint = false;
+var copycolsel = true;
+if (this.av.getSelectionGroup () == null || !this.av.isSelectionGroupChanged (true)) {
+var sgroup = null;
+if (seqsel != null && seqsel.getSize () > 0) {
+if (this.av.getAlignment () == null) {
+System.out.println ("Selection message: alignviewport av SeqSetId=" + this.av.getSequenceSetId () + " ViewId=" + this.av.getViewId () + " 's alignment is NULL! returning immediatly.");
+return;
+}sgroup = seqsel.intersect (this.av.getAlignment (), (this.av.hasHiddenRows ()) ? this.av.getHiddenRepSequences () : null);
+if ((sgroup == null || sgroup.getSize () == 0) && (colsel == null || colsel.size () == 0)) {
+copycolsel = false;
+}}if (sgroup != null && sgroup.getSize () > 0) {
+this.av.setSelectionGroup (sgroup);
+} else {
+this.av.setSelectionGroup (null);
+}repaint = this.av.isSelectionGroupChanged (true);
+}if (copycolsel && (this.av.getColumnSelection () == null || !this.av.isColSelChanged (true))) {
+if (colsel == null || colsel.size () == 0) {
+if (this.av.getColumnSelection () != null) {
+this.av.getColumnSelection ().clear ();
+}} else {
+if (this.av.getColumnSelection () == null) {
+this.av.setColumnSelection ( new jalview.datamodel.ColumnSelection (colsel));
+} else {
+this.av.getColumnSelection ().setElementsFrom (colsel);
+}}repaint = new Boolean (repaint | this.av.isColSelChanged (true)).valueOf ();
+}if (copycolsel && this.av.hasHiddenColumns () && (this.av.getColumnSelection () == null || this.av.getColumnSelection ().getHiddenColumns () == null)) {
+System.err.println ("Bad things");
+}if (repaint) {
+this.ap.scalePanelHolder.repaint ();
+this.ap.repaint ();
+}}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz.defineMethod (c$, "scrollTo",
+function (row, column) {
+row = row < 0 ? this.ap.av.startSeq : row;
+column = column < 0 ? this.ap.av.startRes : column;
+this.ap.scrollTo (column, column, row, true, true);
+}, "~N,~N");
+Clazz.defineMethod (c$, "scrollToRow",
+function (row) {
+row = row < 0 ? this.ap.av.startSeq : row;
+this.ap.scrollTo (this.ap.av.startRes, this.ap.av.startRes, row, true, true);
+}, "~N");
+Clazz.defineMethod (c$, "scrollToColumn",
+function (column) {
+column = column < 0 ? this.ap.av.startRes : column;
+this.ap.scrollTo (column, column, this.ap.av.startSeq, true, true);
+}, "~N");
+Clazz.defineMethod (c$, "selectionFromTranslation",
+function (seqsel, colsel, source) {
+if (!(Clazz.instanceOf (source, jalview.api.AlignViewportI))) {
+return false;
+}var sourceAv = source;
+if (sourceAv.getCodingComplement () !== this.av && this.av.getCodingComplement () !== sourceAv) {
+return false;
+}var sg = jalview.util.MappingUtils.mapSequenceGroup (seqsel, sourceAv, this.av);
+this.av.setSelectionGroup (sg);
+this.av.isSelectionGroupChanged (true);
+var cs = jalview.util.MappingUtils.mapColumnSelection (colsel, sourceAv, this.av);
+this.av.setColumnSelection (cs);
+this.av.isColSelChanged (true);
+this.ap.scalePanelHolder.repaint ();
+this.ap.repaint ();
+return true;
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+c$.$SeqPanel$ScrollThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.evt = null;
+this.running = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.SeqPanel, "ScrollThread", Thread);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, jalview.appletgui.SeqPanel.ScrollThread, []);
+this.start ();
+});
+Clazz.defineMethod (c$, "setEvent",
+function (a) {
+this.evt = a;
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "stopScrolling",
+function () {
+this.running = false;
+});
+Clazz.overrideMethod (c$, "run",
+function () {
+this.running = true;
+while (this.running) {
+if (this.evt != null) {
+if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () < 0 && this.b$["jalview.appletgui.SeqPanel"].av.getStartSeq () > 0) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (true);
+}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().height && this.b$["jalview.appletgui.SeqPanel"].av.getAlignment ().getHeight () > this.b$["jalview.appletgui.SeqPanel"].av.getEndSeq ()) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (false);
+}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () < 0) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (false);
+} else if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().width) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (true);
+}}try {
+Thread.sleep (75);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/SequenceRenderer.class b/bin/jalview/appletgui/SequenceRenderer.class
index a758da72ac228ab7114e229bb0f310dc6a39cce9..d15b02fae27268e7969a5ed0a591d968581814c4 100644
GIT binary patch
delta 99
zcmca(b<=9YJ$}Z`lkfAdV_{)nGTuB%pq+_Pe6y7BS4IOx2KN69`V2hm42>wJ?%&gBKFnN)LGNaVy;}TO@0Jqf@5dZ)H
delta 82
zcmcaC@K;7=B?gYkf})b5dQ9Sq(rio&
mj0`gwCIU$b1_tH{o9#s7nVAh31Sc<$P-YTm+I&P}DhmLdwG)T{
diff --git a/bin/jalview/appletgui/SequenceRenderer.js b/bin/jalview/appletgui/SequenceRenderer.js
index 449c271..43ee455 100644
--- a/bin/jalview/appletgui/SequenceRenderer.js
+++ b/bin/jalview/appletgui/SequenceRenderer.js
@@ -1,196 +1,196 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.api.SequenceRenderer"], "jalview.appletgui.SequenceRenderer", ["jalview.util.Comparison", "java.awt.Color", "$.Font"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.av = null;
-this.fm = null;
-this.renderGaps = true;
-this.currentSequenceGroup = null;
-this.allGroups = null;
-this.resBoxColour = null;
-this.graphics = null;
-this.forOverview = false;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "SequenceRenderer", null, jalview.api.SequenceRenderer);
-Clazz.makeConstructor (c$,
-function (av) {
-this.av = av;
-}, "jalview.appletgui.AlignViewport");
-Clazz.defineMethod (c$, "prepare",
-function (g, renderGaps) {
-this.graphics = g;
-this.fm = g.getFontMetrics ();
-this.renderGaps = renderGaps;
-}, "java.awt.Graphics,~B");
-Clazz.overrideMethod (c$, "getResidueBoxColour",
-function (seq, i) {
-this.allGroups = this.av.getAlignment ().findAllGroups (seq);
-if (this.inCurrentSequenceGroup (i)) {
-if (this.currentSequenceGroup.getDisplayBoxes ()) {
-this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
-}} else if (this.av.getShowBoxes ()) {
-this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
-}return this.resBoxColour;
-}, "jalview.datamodel.SequenceI,~N");
-Clazz.overrideMethod (c$, "getResidueColour",
-function (seq, position, fr) {
-var col = this.getResidueBoxColour (seq, position);
-if (fr != null) {
-col = fr.findFeatureColour (col, seq, position);
-}return col;
-}, "jalview.datamodel.SequenceI,~N,jalview.api.FeatureRenderer");
-Clazz.defineMethod (c$, "getBoxColour",
-function (cs, seq, i) {
-if (cs != null) {
-this.resBoxColour = cs.findColour (seq.getCharAt (i), i, seq);
-} else if (this.forOverview && !jalview.util.Comparison.isGap (seq.getCharAt (i))) {
-this.resBoxColour = java.awt.Color.lightGray;
-} else {
-this.resBoxColour = java.awt.Color.white;
-}}, "jalview.schemes.ColourSchemeI,jalview.datamodel.SequenceI,~N");
-Clazz.defineMethod (c$, "findSequenceColour",
-function (seq, i) {
-this.allGroups = this.av.getAlignment ().findAllGroups (seq);
-this.drawBoxes (seq, i, i, 0);
-return this.resBoxColour;
-}, "jalview.datamodel.SequenceI,~N");
-Clazz.defineMethod (c$, "drawSequence",
-function (seq, sg, start, end, y1) {
-if (seq == null) {
-return;
-}this.allGroups = sg;
-this.drawBoxes (seq, start, end, y1);
-if (this.av.validCharWidth) {
-this.drawText (seq, start, end, y1);
-}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
-Clazz.defineMethod (c$, "drawBoxes",
-function (seq, start, end, y1) {
-var i = start;
-var length = seq.getLength ();
-var curStart = -1;
-var curWidth = this.av.getCharWidth ();
-var avCharWidth = this.av.getCharWidth ();
-var avCharHeight = this.av.getCharHeight ();
-var tempColour = null;
-while (i <= end) {
-this.resBoxColour = java.awt.Color.white;
-if (i < length) {
-if (this.inCurrentSequenceGroup (i)) {
-if (this.currentSequenceGroup.getDisplayBoxes ()) {
-this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
-}} else if (this.av.getShowBoxes ()) {
-this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
-}}if (this.resBoxColour !== tempColour) {
-if (tempColour != null) {
-this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
-}this.graphics.setColor (this.resBoxColour);
-curStart = i;
-curWidth = avCharWidth;
-tempColour = this.resBoxColour;
-} else {
-curWidth += avCharWidth;
-}i++;
-}
-this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
-}, "jalview.datamodel.SequenceI,~N,~N,~N");
-Clazz.defineMethod (c$, "drawText",
-function (seq, start, end, y1) {
-var avCharWidth = this.av.getCharWidth ();
-var avCharHeight = this.av.getCharHeight ();
-var boldFont = null;
-var bold = false;
-if (this.av.isUpperCasebold ()) {
-boldFont = new java.awt.Font (this.av.getFont ().getName (), 1, avCharHeight);
-this.graphics.setFont (this.av.getFont ());
-}y1 += avCharHeight - Clazz.doubleToInt (avCharHeight / 5);
-var charOffset = 0;
-if (end + 1 >= seq.getLength ()) {
-end = seq.getLength () - 1;
-}var s = ' ';
-var srep = this.av.isDisplayReferenceSeq ();
-for (var i = start; i <= end; i++) {
-this.graphics.setColor (java.awt.Color.black);
-s = seq.getCharAt (i);
-if (!this.renderGaps && jalview.util.Comparison.isGap (s)) {
-continue;
-}if (this.inCurrentSequenceGroup (i)) {
-if (!this.currentSequenceGroup.getDisplayText ()) {
-continue;
-}if (this.currentSequenceGroup.getColourText ()) {
-this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
-this.graphics.setColor (this.resBoxColour.darker ());
-}if (this.currentSequenceGroup.getShowNonconserved ()) {
-s = this.getDisplayChar (srep, i, s, '.');
-}} else {
-if (!this.av.getShowText ()) {
-continue;
-}if (this.av.getColourText ()) {
-this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
-if (this.av.getShowBoxes ()) {
-this.graphics.setColor (this.resBoxColour.darker ());
-} else {
-this.graphics.setColor (this.resBoxColour);
-}}if (this.av.getShowUnconserved ()) {
-s = this.getDisplayChar (srep, i, s, '.');
-}}if (this.av.isUpperCasebold ()) {
-this.fm = this.graphics.getFontMetrics ();
-if ('A' <= s && s <= 'Z') {
-if (!bold) {
-this.graphics.setFont (boldFont);
-}bold = true;
-} else if (bold) {
-this.graphics.setFont (this.av.font);
-bold = false;
-}}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
-this.graphics.drawString (String.valueOf (s), charOffset + avCharWidth * (i - start), y1);
-}
-}, "jalview.datamodel.SequenceI,~N,~N,~N");
-Clazz.defineMethod (c$, "getDisplayChar",
-($fz = function (usesrep, position, s, c) {
-var conschar = (usesrep) ? this.av.getAlignment ().getSeqrep ().getCharAt (position) : this.av.getAlignmentConsensusAnnotation ().annotations[position].displayCharacter.charAt (0);
-if (conschar != '-' && s == conschar) {
-s = c;
-}return s;
-}, $fz.isPrivate = true, $fz), "~B,~N,~S,~S");
-Clazz.defineMethod (c$, "inCurrentSequenceGroup",
-function (res) {
-if (this.allGroups == null) {
-return false;
-}for (var i = 0; i < this.allGroups.length; i++) {
-if (this.allGroups[i].getStartRes () <= res && this.allGroups[i].getEndRes () >= res) {
-this.currentSequenceGroup = this.allGroups[i];
-return true;
-}}
-return false;
-}, "~N");
-Clazz.defineMethod (c$, "drawHighlightedText",
-function (seq, start, end, x1, y1) {
-var avCharWidth = this.av.getCharWidth ();
-var avCharHeight = this.av.getCharHeight ();
-var pady = Clazz.doubleToInt (avCharHeight / 5);
-var charOffset = 0;
-this.graphics.setColor (java.awt.Color.black);
-this.graphics.fillRect (x1, y1, avCharWidth * (end - start + 1), avCharHeight);
-this.graphics.setColor (java.awt.Color.white);
-var s = '~';
-if (this.av.validCharWidth) {
-for (var i = start; i <= end; i++) {
-if (i < seq.getLength ()) {
-s = seq.getCharAt (i);
-}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
-this.graphics.drawString (String.valueOf (s), charOffset + x1 + avCharWidth * (i - start), y1 + avCharHeight - pady);
-}
-}}, "jalview.datamodel.SequenceI,~N,~N,~N,~N");
-Clazz.defineMethod (c$, "drawCursor",
-function (seq, res, x1, y1) {
-var pady = Clazz.doubleToInt (this.av.getCharHeight () / 5);
-var charOffset = 0;
-this.graphics.setColor (java.awt.Color.black);
-this.graphics.fillRect (x1, y1, this.av.getCharWidth (), this.av.getCharHeight ());
-this.graphics.setColor (java.awt.Color.white);
-this.graphics.setColor (java.awt.Color.white);
-var s = seq.getCharAt (res);
-if (this.av.validCharWidth) {
-charOffset = Clazz.doubleToInt ((this.av.getCharWidth () - this.fm.charWidth (s)) / 2);
-this.graphics.drawString (String.valueOf (s), charOffset + x1, (y1 + this.av.getCharHeight ()) - pady);
-}}, "jalview.datamodel.SequenceI,~N,~N,~N");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.api.SequenceRenderer"], "jalview.appletgui.SequenceRenderer", ["jalview.util.Comparison", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.fm = null;
+this.renderGaps = true;
+this.currentSequenceGroup = null;
+this.allGroups = null;
+this.resBoxColour = null;
+this.graphics = null;
+this.forOverview = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SequenceRenderer", null, jalview.api.SequenceRenderer);
+Clazz.makeConstructor (c$,
+function (av) {
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "prepare",
+function (g, renderGaps) {
+this.graphics = g;
+this.fm = g.getFontMetrics ();
+this.renderGaps = renderGaps;
+}, "java.awt.Graphics,~B");
+Clazz.overrideMethod (c$, "getResidueBoxColour",
+function (seq, i) {
+this.allGroups = this.av.getAlignment ().findAllGroups (seq);
+if (this.inCurrentSequenceGroup (i)) {
+if (this.currentSequenceGroup.getDisplayBoxes ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+}} else if (this.av.getShowBoxes ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+}return this.resBoxColour;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.overrideMethod (c$, "getResidueColour",
+function (seq, position, fr) {
+var col = this.getResidueBoxColour (seq, position);
+if (fr != null) {
+col = fr.findFeatureColour (col, seq, position);
+}return col;
+}, "jalview.datamodel.SequenceI,~N,jalview.api.FeatureRenderer");
+Clazz.defineMethod (c$, "getBoxColour",
+function (cs, seq, i) {
+if (cs != null) {
+this.resBoxColour = cs.findColour (seq.getCharAt (i), i, seq);
+} else if (this.forOverview && !jalview.util.Comparison.isGap (seq.getCharAt (i))) {
+this.resBoxColour = java.awt.Color.lightGray;
+} else {
+this.resBoxColour = java.awt.Color.white;
+}}, "jalview.schemes.ColourSchemeI,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "findSequenceColour",
+function (seq, i) {
+this.allGroups = this.av.getAlignment ().findAllGroups (seq);
+this.drawBoxes (seq, i, i, 0);
+return this.resBoxColour;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "drawSequence",
+function (seq, sg, start, end, y1) {
+if (seq == null) {
+return;
+}this.allGroups = sg;
+this.drawBoxes (seq, start, end, y1);
+if (this.av.validCharWidth) {
+this.drawText (seq, start, end, y1);
+}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "drawBoxes",
+function (seq, start, end, y1) {
+var i = start;
+var length = seq.getLength ();
+var curStart = -1;
+var curWidth = this.av.getCharWidth ();
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var tempColour = null;
+while (i <= end) {
+this.resBoxColour = java.awt.Color.white;
+if (i < length) {
+if (this.inCurrentSequenceGroup (i)) {
+if (this.currentSequenceGroup.getDisplayBoxes ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+}} else if (this.av.getShowBoxes ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+}}if (this.resBoxColour !== tempColour) {
+if (tempColour != null) {
+this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
+}this.graphics.setColor (this.resBoxColour);
+curStart = i;
+curWidth = avCharWidth;
+tempColour = this.resBoxColour;
+} else {
+curWidth += avCharWidth;
+}i++;
+}
+this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
+}, "jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "drawText",
+function (seq, start, end, y1) {
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var boldFont = null;
+var bold = false;
+if (this.av.isUpperCasebold ()) {
+boldFont = new java.awt.Font (this.av.getFont ().getName (), 1, avCharHeight);
+this.graphics.setFont (this.av.getFont ());
+}y1 += avCharHeight - Clazz.doubleToInt (avCharHeight / 5);
+var charOffset = 0;
+if (end + 1 >= seq.getLength ()) {
+end = seq.getLength () - 1;
+}var s = ' ';
+var srep = this.av.isDisplayReferenceSeq ();
+for (var i = start; i <= end; i++) {
+this.graphics.setColor (java.awt.Color.black);
+s = seq.getCharAt (i);
+if (!this.renderGaps && jalview.util.Comparison.isGap (s)) {
+continue;
+}if (this.inCurrentSequenceGroup (i)) {
+if (!this.currentSequenceGroup.getDisplayText ()) {
+continue;
+}if (this.currentSequenceGroup.getColourText ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+this.graphics.setColor (this.resBoxColour.darker ());
+}if (this.currentSequenceGroup.getShowNonconserved ()) {
+s = this.getDisplayChar (srep, i, s, '.');
+}} else {
+if (!this.av.getShowText ()) {
+continue;
+}if (this.av.getColourText ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+if (this.av.getShowBoxes ()) {
+this.graphics.setColor (this.resBoxColour.darker ());
+} else {
+this.graphics.setColor (this.resBoxColour);
+}}if (this.av.getShowUnconserved ()) {
+s = this.getDisplayChar (srep, i, s, '.');
+}}if (this.av.isUpperCasebold ()) {
+this.fm = this.graphics.getFontMetrics ();
+if ('A' <= s && s <= 'Z') {
+if (!bold) {
+this.graphics.setFont (boldFont);
+}bold = true;
+} else if (bold) {
+this.graphics.setFont (this.av.font);
+bold = false;
+}}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
+this.graphics.drawString (String.valueOf (s), charOffset + avCharWidth * (i - start), y1);
+}
+}, "jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "getDisplayChar",
+($fz = function (usesrep, position, s, c) {
+var conschar = (usesrep) ? this.av.getAlignment ().getSeqrep ().getCharAt (position) : this.av.getAlignmentConsensusAnnotation ().annotations[position].displayCharacter.charAt (0);
+if (conschar != '-' && s == conschar) {
+s = c;
+}return s;
+}, $fz.isPrivate = true, $fz), "~B,~N,~S,~S");
+Clazz.defineMethod (c$, "inCurrentSequenceGroup",
+function (res) {
+if (this.allGroups == null) {
+return false;
+}for (var i = 0; i < this.allGroups.length; i++) {
+if (this.allGroups[i].getStartRes () <= res && this.allGroups[i].getEndRes () >= res) {
+this.currentSequenceGroup = this.allGroups[i];
+return true;
+}}
+return false;
+}, "~N");
+Clazz.defineMethod (c$, "drawHighlightedText",
+function (seq, start, end, x1, y1) {
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var pady = Clazz.doubleToInt (avCharHeight / 5);
+var charOffset = 0;
+this.graphics.setColor (java.awt.Color.black);
+this.graphics.fillRect (x1, y1, avCharWidth * (end - start + 1), avCharHeight);
+this.graphics.setColor (java.awt.Color.white);
+var s = '~';
+if (this.av.validCharWidth) {
+for (var i = start; i <= end; i++) {
+if (i < seq.getLength ()) {
+s = seq.getCharAt (i);
+}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
+this.graphics.drawString (String.valueOf (s), charOffset + x1 + avCharWidth * (i - start), y1 + avCharHeight - pady);
+}
+}}, "jalview.datamodel.SequenceI,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "drawCursor",
+function (seq, res, x1, y1) {
+var pady = Clazz.doubleToInt (this.av.getCharHeight () / 5);
+var charOffset = 0;
+this.graphics.setColor (java.awt.Color.black);
+this.graphics.fillRect (x1, y1, this.av.getCharWidth (), this.av.getCharHeight ());
+this.graphics.setColor (java.awt.Color.white);
+this.graphics.setColor (java.awt.Color.white);
+var s = seq.getCharAt (res);
+if (this.av.validCharWidth) {
+charOffset = Clazz.doubleToInt ((this.av.getCharWidth () - this.fm.charWidth (s)) / 2);
+this.graphics.drawString (String.valueOf (s), charOffset + x1, (y1 + this.av.getCharHeight ()) - pady);
+}}, "jalview.datamodel.SequenceI,~N,~N,~N");
+});
diff --git a/bin/jalview/appletgui/SliderPanel.class b/bin/jalview/appletgui/SliderPanel.class
index ae2daacb7e53248cdbacaa191d30e4005b3a4a26..58ba84cd04598e41c300aa96ba211e12727db78e 100644
GIT binary patch
delta 37
tcmZql`0u{qh%}?u=A+UUjDms;>>Pg?G}syR*cs&o1bAdN3&?(C0|42a35Ngx
delta 39
vcmezG-srL6h%}?m=A+UUjKabUoE(1{RM{Ey*cs)S1O#{_nKtvueq;jx>PZQU
diff --git a/bin/jalview/appletgui/SliderPanel.js b/bin/jalview/appletgui/SliderPanel.js
index dc38cc2..8ba7a20 100644
--- a/bin/jalview/appletgui/SliderPanel.js
+++ b/bin/jalview/appletgui/SliderPanel.js
@@ -1,270 +1,270 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.SliderPanel", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.Color", "$.Font", "java.awt.event.WindowAdapter"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.ap = null;
-this.forConservation = true;
-this.cs = null;
-this.slider = null;
-this.valueField = null;
-this.label = null;
-this.jPanel1 = null;
-this.jPanel2 = null;
-this.applyButton = null;
-this.undoButton = null;
-this.flowLayout1 = null;
-this.allGroupsCheck = null;
-this.borderLayout1 = null;
-this.borderLayout2 = null;
-this.flowLayout2 = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "SliderPanel", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.MouseListener]);
-Clazz.prepareFields (c$, function () {
-this.slider = new awt2swing.Scrollbar ();
-this.valueField = new awt2swing.TextField ();
-this.label = new awt2swing.Label ();
-this.jPanel1 = new awt2swing.Panel ();
-this.jPanel2 = new awt2swing.Panel ();
-this.applyButton = new awt2swing.Button ();
-this.undoButton = new awt2swing.Button ();
-this.flowLayout1 = new java.awt.FlowLayout ();
-this.allGroupsCheck = new awt2swing.Checkbox ();
-this.borderLayout1 = new java.awt.BorderLayout ();
-this.borderLayout2 = new java.awt.BorderLayout ();
-this.flowLayout2 = new java.awt.FlowLayout ();
-});
-c$.setConservationSlider = Clazz.defineMethod (c$, "setConservationSlider",
-function (ap, cs, source) {
-var sp = null;
-if (jalview.appletgui.SliderPanel.conservationSlider == null) {
-sp = new jalview.appletgui.SliderPanel (ap, cs.getConservationInc (), true, cs);
-jalview.appletgui.SliderPanel.conservationSlider = new awt2swing.Frame ();
-jalview.appletgui.SliderPanel.conservationSlider.add (sp);
-} else {
-sp = jalview.appletgui.SliderPanel.conservationSlider.getComponent (0);
-sp.cs = cs;
-}jalview.appletgui.SliderPanel.conservationSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.conservation_colour_increment", Clazz.newArray (-1, [source])));
-if (ap.av.getAlignment ().getGroups () != null) {
-sp.setAllGroupsCheckEnabled (true);
-} else {
-sp.setAllGroupsCheckEnabled (false);
-}return sp.getValue ();
-}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
-c$.showConservationSlider = Clazz.defineMethod (c$, "showConservationSlider",
-function () {
-try {
-jalview.appletgui.SliderPanel.PIDSlider.setVisible (false);
-jalview.appletgui.SliderPanel.PIDSlider = null;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-if (!jalview.appletgui.SliderPanel.conservationSlider.isVisible ()) {
-jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.conservationSlider, jalview.appletgui.SliderPanel.conservationSlider.getTitle (), 420, 100);
-jalview.appletgui.SliderPanel.conservationSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$1") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$1, this, null)));
-}});
-c$.setPIDSliderSource = Clazz.defineMethod (c$, "setPIDSliderSource",
-function (ap, cs, source) {
-var pid = null;
-if (jalview.appletgui.SliderPanel.PIDSlider == null) {
-pid = new jalview.appletgui.SliderPanel (ap, 50, false, cs);
-jalview.appletgui.SliderPanel.PIDSlider = new awt2swing.Frame ();
-jalview.appletgui.SliderPanel.PIDSlider.add (pid);
-} else {
-pid = jalview.appletgui.SliderPanel.PIDSlider.getComponent (0);
-pid.cs = cs;
-}jalview.appletgui.SliderPanel.PIDSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.percentage_identity_thereshold", Clazz.newArray (-1, [source])));
-if (ap.av.getAlignment ().getGroups () != null) {
-pid.setAllGroupsCheckEnabled (true);
-} else {
-pid.setAllGroupsCheckEnabled (false);
-}return pid.getValue ();
-}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
-c$.showPIDSlider = Clazz.defineMethod (c$, "showPIDSlider",
-function () {
-try {
-jalview.appletgui.SliderPanel.conservationSlider.setVisible (false);
-jalview.appletgui.SliderPanel.conservationSlider = null;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-if (!jalview.appletgui.SliderPanel.PIDSlider.isVisible ()) {
-jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.PIDSlider, jalview.appletgui.SliderPanel.PIDSlider.getTitle (), 420, 100);
-jalview.appletgui.SliderPanel.PIDSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$2") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$2, this, null)));
-}});
-Clazz.makeConstructor (c$,
-function (ap, value, forConserve, cs) {
-Clazz.superConstructor (this, jalview.appletgui.SliderPanel, []);
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.ap = ap;
-this.cs = cs;
-this.forConservation = forConserve;
-this.undoButton.setVisible (false);
-this.applyButton.setVisible (false);
-if (this.forConservation) {
-this.label.setText (jalview.util.MessageManager.getString ("label.modify_conservation_visibility"));
-this.slider.setMinimum (0);
-this.slider.setMaximum (50 + this.slider.getVisibleAmount ());
-this.slider.setUnitIncrement (1);
-} else {
-this.label.setText (jalview.util.MessageManager.getString ("label.colour_residues_above_occurence"));
-this.slider.setMinimum (0);
-this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
-this.slider.setBlockIncrement (1);
-}this.slider.addAdjustmentListener (this);
-this.slider.addMouseListener (this);
-this.slider.setValue (value);
-this.valueField.setText (value + "");
-}, "jalview.appletgui.AlignmentPanel,~N,~B,jalview.schemes.ColourSchemeI");
-Clazz.defineMethod (c$, "valueChanged",
-function (i) {
-if (this.cs == null) {
-return;
-}var toChange = this.cs;
-var allGroups = null;
-if (this.allGroupsCheck.getState ()) {
-allGroups = this.ap.av.getAlignment ().getGroups ().listIterator ();
-}while (toChange != null) {
-if (this.forConservation) {
-toChange.setConservationInc (i);
-} else {
-toChange.setThreshold (i, this.ap.av.isIgnoreGapsConsensus ());
-}if (allGroups != null && allGroups.hasNext ()) {
-while ((toChange = allGroups.next ().cs) == null && allGroups.hasNext ()) {
-;}
-} else {
-toChange = null;
-}}
-this.ap.seqPanel.seqCanvas.repaint ();
-}, "~N");
-Clazz.defineMethod (c$, "setAllGroupsCheckEnabled",
-function (b) {
-this.allGroupsCheck.setEnabled (b);
-}, "~B");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-if (evt.getSource () === this.applyButton) {
-this.applyButton_actionPerformed ();
-} else if (evt.getSource () === this.undoButton) {
-this.undoButton_actionPerformed ();
-} else if (evt.getSource () === this.valueField) {
-this.valueField_actionPerformed ();
-}}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-this.valueField.setText (this.slider.getValue () + "");
-this.valueChanged (this.slider.getValue ());
-}, "java.awt.event.AdjustmentEvent");
-Clazz.defineMethod (c$, "valueField_actionPerformed",
-function () {
-try {
-var i = Integer.parseInt (this.valueField.getText ());
-this.slider.setValue (i);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-this.valueField.setText (this.slider.getValue () + "");
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "setValue",
-function (value) {
-this.slider.setValue (value);
-}, "~N");
-Clazz.defineMethod (c$, "getValue",
-function () {
-return Integer.parseInt (this.valueField.getText ());
-});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setLayout (this.borderLayout2);
-this.slider.setBackground (java.awt.Color.white);
-this.slider.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.slider.setOrientation (0);
-this.valueField.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.valueField.setText (" ");
-this.valueField.addActionListener (this);
-this.valueField.setColumns (3);
-this.label.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.label.setText (jalview.util.MessageManager.getString ("label.set_this_label_text"));
-this.jPanel1.setLayout (this.borderLayout1);
-this.jPanel2.setLayout (this.flowLayout1);
-this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
-this.applyButton.addActionListener (this);
-this.undoButton.setEnabled (false);
-this.undoButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.undoButton.setLabel (jalview.util.MessageManager.getString ("action.undo"));
-this.undoButton.addActionListener (this);
-this.allGroupsCheck.setEnabled (false);
-this.allGroupsCheck.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.allGroupsCheck.setLabel (jalview.util.MessageManager.getString ("action.apply_threshold_all_groups"));
-this.allGroupsCheck.setName (jalview.util.MessageManager.getString ("action.apply_all_groups"));
-this.setBackground (java.awt.Color.white);
-this.setForeground (java.awt.Color.black);
-this.jPanel2.add (this.label, null);
-this.jPanel2.add (this.applyButton, null);
-this.jPanel2.add (this.undoButton, null);
-this.jPanel2.add (this.allGroupsCheck);
-this.jPanel1.add (this.valueField, "East");
-this.jPanel1.add (this.slider, "Center");
-this.add (this.jPanel1, "South");
-this.add (this.jPanel2, "Center");
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "applyButton_actionPerformed",
-function () {
-});
-Clazz.defineMethod (c$, "undoButton_actionPerformed",
-function () {
-});
-Clazz.overrideMethod (c$, "mousePressed",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (evt) {
-this.ap.paintAlignment (true);
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-c$.$SliderPanel$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$1", java.awt.event.WindowAdapter);
-Clazz.overrideMethod (c$, "windowClosing",
-function (e) {
-jalview.appletgui.SliderPanel.conservationSlider = null;
-}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-c$.$SliderPanel$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$2", java.awt.event.WindowAdapter);
-Clazz.overrideMethod (c$, "windowClosing",
-function (e) {
-jalview.appletgui.SliderPanel.PIDSlider = null;
-}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"conservationSlider", null,
-"PIDSlider", null);
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.SliderPanel", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.Color", "$.Font", "java.awt.event.WindowAdapter"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ap = null;
+this.forConservation = true;
+this.cs = null;
+this.slider = null;
+this.valueField = null;
+this.label = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.applyButton = null;
+this.undoButton = null;
+this.flowLayout1 = null;
+this.allGroupsCheck = null;
+this.borderLayout1 = null;
+this.borderLayout2 = null;
+this.flowLayout2 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SliderPanel", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.slider = new awt2swing.Scrollbar ();
+this.valueField = new awt2swing.TextField ();
+this.label = new awt2swing.Label ();
+this.jPanel1 = new awt2swing.Panel ();
+this.jPanel2 = new awt2swing.Panel ();
+this.applyButton = new awt2swing.Button ();
+this.undoButton = new awt2swing.Button ();
+this.flowLayout1 = new java.awt.FlowLayout ();
+this.allGroupsCheck = new awt2swing.Checkbox ();
+this.borderLayout1 = new java.awt.BorderLayout ();
+this.borderLayout2 = new java.awt.BorderLayout ();
+this.flowLayout2 = new java.awt.FlowLayout ();
+});
+c$.setConservationSlider = Clazz.defineMethod (c$, "setConservationSlider",
+function (ap, cs, source) {
+var sp = null;
+if (jalview.appletgui.SliderPanel.conservationSlider == null) {
+sp = new jalview.appletgui.SliderPanel (ap, cs.getConservationInc (), true, cs);
+jalview.appletgui.SliderPanel.conservationSlider = new awt2swing.Frame ();
+jalview.appletgui.SliderPanel.conservationSlider.add (sp);
+} else {
+sp = jalview.appletgui.SliderPanel.conservationSlider.getComponent (0);
+sp.cs = cs;
+}jalview.appletgui.SliderPanel.conservationSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.conservation_colour_increment", Clazz.newArray (-1, [source])));
+if (ap.av.getAlignment ().getGroups () != null) {
+sp.setAllGroupsCheckEnabled (true);
+} else {
+sp.setAllGroupsCheckEnabled (false);
+}return sp.getValue ();
+}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
+c$.showConservationSlider = Clazz.defineMethod (c$, "showConservationSlider",
+function () {
+try {
+jalview.appletgui.SliderPanel.PIDSlider.setVisible (false);
+jalview.appletgui.SliderPanel.PIDSlider = null;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (!jalview.appletgui.SliderPanel.conservationSlider.isVisible ()) {
+jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.conservationSlider, jalview.appletgui.SliderPanel.conservationSlider.getTitle (), 420, 100);
+jalview.appletgui.SliderPanel.conservationSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$1") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$1, this, null)));
+}});
+c$.setPIDSliderSource = Clazz.defineMethod (c$, "setPIDSliderSource",
+function (ap, cs, source) {
+var pid = null;
+if (jalview.appletgui.SliderPanel.PIDSlider == null) {
+pid = new jalview.appletgui.SliderPanel (ap, 50, false, cs);
+jalview.appletgui.SliderPanel.PIDSlider = new awt2swing.Frame ();
+jalview.appletgui.SliderPanel.PIDSlider.add (pid);
+} else {
+pid = jalview.appletgui.SliderPanel.PIDSlider.getComponent (0);
+pid.cs = cs;
+}jalview.appletgui.SliderPanel.PIDSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.percentage_identity_thereshold", Clazz.newArray (-1, [source])));
+if (ap.av.getAlignment ().getGroups () != null) {
+pid.setAllGroupsCheckEnabled (true);
+} else {
+pid.setAllGroupsCheckEnabled (false);
+}return pid.getValue ();
+}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
+c$.showPIDSlider = Clazz.defineMethod (c$, "showPIDSlider",
+function () {
+try {
+jalview.appletgui.SliderPanel.conservationSlider.setVisible (false);
+jalview.appletgui.SliderPanel.conservationSlider = null;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (!jalview.appletgui.SliderPanel.PIDSlider.isVisible ()) {
+jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.PIDSlider, jalview.appletgui.SliderPanel.PIDSlider.getTitle (), 420, 100);
+jalview.appletgui.SliderPanel.PIDSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$2") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$2, this, null)));
+}});
+Clazz.makeConstructor (c$,
+function (ap, value, forConserve, cs) {
+Clazz.superConstructor (this, jalview.appletgui.SliderPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.ap = ap;
+this.cs = cs;
+this.forConservation = forConserve;
+this.undoButton.setVisible (false);
+this.applyButton.setVisible (false);
+if (this.forConservation) {
+this.label.setText (jalview.util.MessageManager.getString ("label.modify_conservation_visibility"));
+this.slider.setMinimum (0);
+this.slider.setMaximum (50 + this.slider.getVisibleAmount ());
+this.slider.setUnitIncrement (1);
+} else {
+this.label.setText (jalview.util.MessageManager.getString ("label.colour_residues_above_occurence"));
+this.slider.setMinimum (0);
+this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
+this.slider.setBlockIncrement (1);
+}this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+this.slider.setValue (value);
+this.valueField.setText (value + "");
+}, "jalview.appletgui.AlignmentPanel,~N,~B,jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "valueChanged",
+function (i) {
+if (this.cs == null) {
+return;
+}var toChange = this.cs;
+var allGroups = null;
+if (this.allGroupsCheck.getState ()) {
+allGroups = this.ap.av.getAlignment ().getGroups ().listIterator ();
+}while (toChange != null) {
+if (this.forConservation) {
+toChange.setConservationInc (i);
+} else {
+toChange.setThreshold (i, this.ap.av.isIgnoreGapsConsensus ());
+}if (allGroups != null && allGroups.hasNext ()) {
+while ((toChange = allGroups.next ().cs) == null && allGroups.hasNext ()) {
+;}
+} else {
+toChange = null;
+}}
+this.ap.seqPanel.seqCanvas.repaint ();
+}, "~N");
+Clazz.defineMethod (c$, "setAllGroupsCheckEnabled",
+function (b) {
+this.allGroupsCheck.setEnabled (b);
+}, "~B");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.applyButton) {
+this.applyButton_actionPerformed ();
+} else if (evt.getSource () === this.undoButton) {
+this.undoButton_actionPerformed ();
+} else if (evt.getSource () === this.valueField) {
+this.valueField_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+this.valueField.setText (this.slider.getValue () + "");
+this.valueChanged (this.slider.getValue ());
+}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "valueField_actionPerformed",
+function () {
+try {
+var i = Integer.parseInt (this.valueField.getText ());
+this.slider.setValue (i);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.valueField.setText (this.slider.getValue () + "");
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "setValue",
+function (value) {
+this.slider.setValue (value);
+}, "~N");
+Clazz.defineMethod (c$, "getValue",
+function () {
+return Integer.parseInt (this.valueField.getText ());
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout (this.borderLayout2);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.slider.setOrientation (0);
+this.valueField.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.valueField.setText (" ");
+this.valueField.addActionListener (this);
+this.valueField.setColumns (3);
+this.label.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.label.setText (jalview.util.MessageManager.getString ("label.set_this_label_text"));
+this.jPanel1.setLayout (this.borderLayout1);
+this.jPanel2.setLayout (this.flowLayout1);
+this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
+this.applyButton.addActionListener (this);
+this.undoButton.setEnabled (false);
+this.undoButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.undoButton.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+this.undoButton.addActionListener (this);
+this.allGroupsCheck.setEnabled (false);
+this.allGroupsCheck.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.allGroupsCheck.setLabel (jalview.util.MessageManager.getString ("action.apply_threshold_all_groups"));
+this.allGroupsCheck.setName (jalview.util.MessageManager.getString ("action.apply_all_groups"));
+this.setBackground (java.awt.Color.white);
+this.setForeground (java.awt.Color.black);
+this.jPanel2.add (this.label, null);
+this.jPanel2.add (this.applyButton, null);
+this.jPanel2.add (this.undoButton, null);
+this.jPanel2.add (this.allGroupsCheck);
+this.jPanel1.add (this.valueField, "East");
+this.jPanel1.add (this.slider, "Center");
+this.add (this.jPanel1, "South");
+this.add (this.jPanel2, "Center");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "applyButton_actionPerformed",
+function () {
+});
+Clazz.defineMethod (c$, "undoButton_actionPerformed",
+function () {
+});
+Clazz.overrideMethod (c$, "mousePressed",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (evt) {
+this.ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+c$.$SliderPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$1", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing",
+function (e) {
+jalview.appletgui.SliderPanel.conservationSlider = null;
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$SliderPanel$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$2", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing",
+function (e) {
+jalview.appletgui.SliderPanel.PIDSlider = null;
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"conservationSlider", null,
+"PIDSlider", null);
+});
diff --git a/bin/jalview/appletgui/SplitFrame.js b/bin/jalview/appletgui/SplitFrame.js
index 7818eaf..eb3570a 100644
--- a/bin/jalview/appletgui/SplitFrame.js
+++ b/bin/jalview/appletgui/SplitFrame.js
@@ -1,108 +1,108 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["jalview.appletgui.EmbmenuFrame"], "jalview.appletgui.SplitFrame", ["awt2swing.Panel", "jalview.analysis.AlignmentUtils", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Dimension", "$.GridLayout"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.topFrame = null;
-this.bottomFrame = null;
-this.outermost = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "SplitFrame", jalview.appletgui.EmbmenuFrame);
-Clazz.makeConstructor (c$,
-function (af1, af2) {
-Clazz.superConstructor (this, jalview.appletgui.SplitFrame, []);
-this.topFrame = af1;
-this.bottomFrame = af2;
-this.init ();
-}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "init",
-function () {
-var $private = Clazz.checkPrivateMethod (arguments);
-if ($private != null) {
-return $private.apply (this, arguments);
-}
-this.constructSplit ();
-var topViewport = this.topFrame.viewport;
-var bottomViewport = this.bottomFrame.viewport;
-var topAlignment = topViewport.getAlignment ();
-var bottomAlignment = bottomViewport.getAlignment ();
-var cdna = topAlignment.isNucleotide () ? topViewport : (bottomAlignment.isNucleotide () ? bottomViewport : null);
-var protein = !topAlignment.isNucleotide () ? topViewport : (!bottomAlignment.isNucleotide () ? bottomViewport : null);
-var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein.getAlignment (), cdna.getAlignment ());
-if (mapped) {
-var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (topViewport.applet);
-ssm.addMappings (protein.getAlignment ().getCodonFrames ());
-topViewport.setCodingComplement (bottomViewport);
-ssm.addCommandListener (cdna);
-ssm.addCommandListener (protein);
-}protein.initComplementConsensus ();
-var ap = topAlignment.isNucleotide () ? this.bottomFrame.alignPanel : this.topFrame.alignPanel;
-protein.updateConsensus (ap);
-this.adjustLayout ();
-});
-Clazz.defineMethod (c$, "constructSplit",
-function () {
-this.unsetMenuBar ();
-this.outermost = new awt2swing.Panel ( new java.awt.GridLayout (2, 1));
-var topPanel = new awt2swing.Panel ();
-var bottomPanel = new awt2swing.Panel ();
-this.outermost.add (topPanel);
-this.outermost.add (bottomPanel);
-this.addAlignFrameComponents (this.topFrame, topPanel);
-this.addAlignFrameComponents (this.bottomFrame, bottomPanel);
-});
-Clazz.defineMethod (c$, "adjustLayout",
-function () {
-var cdna = this.topFrame.getAlignViewport ().getAlignment ().isNucleotide () ? this.topFrame.viewport : this.bottomFrame.viewport;
-var protein = cdna === this.topFrame.viewport ? this.bottomFrame.viewport : this.topFrame.viewport;
-var w1 = this.topFrame.alignPanel.idPanel.idCanvas.getWidth ();
-var w2 = this.bottomFrame.alignPanel.idPanel.idCanvas.getWidth ();
-var w3 = Math.max (w1, w2);
-if (w1 != w3) {
-var d = this.topFrame.alignPanel.idPanel.idCanvas.getSize ();
-this.topFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
-}if (w2 != w3) {
-var d = this.bottomFrame.alignPanel.idPanel.idCanvas.getSize ();
-this.bottomFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
-}if (protein != null && cdna != null) {
-var vs = protein.getViewStyle ();
-var scale = vs.isScaleProteinAsCdna () ? 3 : 1;
-vs.setCharWidth (scale * cdna.getViewStyle ().getCharWidth ());
-protein.setViewStyle (vs);
-}});
-Clazz.defineMethod (c$, "addAlignFrameComponents",
-($fz = function (af, panel) {
-panel.setLayout ( new java.awt.BorderLayout ());
-var menuPanel = af.makeEmbeddedPopupMenu (af.getJMenuBar (), true, false);
-panel.add (menuPanel, "North");
-panel.add (af.statusBar, "South");
-panel.add (af.alignPanel, "Center");
-af.setSplitFrame (this);
-}, $fz.isPrivate = true, $fz), "jalview.appletgui.AlignFrame,awt2swing.Panel");
-Clazz.defineMethod (c$, "addToDisplay",
-function (embedded, applet) {
-this.createSplitFrameWindow (embedded, applet);
-this.validate ();
-this.topFrame.alignPanel.adjustAnnotationHeight ();
-this.topFrame.alignPanel.paintAlignment (true);
-this.bottomFrame.alignPanel.adjustAnnotationHeight ();
-this.bottomFrame.alignPanel.paintAlignment (true);
-}, "~B,jalview.bin.JalviewLite");
-Clazz.defineMethod (c$, "createSplitFrameWindow",
-function (embed, applet) {
-if (embed) {
-applet.add (this.outermost);
-applet.validate ();
-} else {
-this.add (this.outermost);
-var width = Math.max (this.topFrame.frameWidth, this.bottomFrame.frameWidth);
-var height = this.topFrame.frameHeight + this.bottomFrame.frameHeight;
-jalview.bin.JalviewLite.addFrame (this, this.getTitle (), width, height);
-}}, "~B,jalview.bin.JalviewLite");
-Clazz.defineMethod (c$, "getComplement",
-function (af) {
-if (this.topFrame === af) {
-return this.bottomFrame;
-} else if (this.bottomFrame === af) {
-return this.topFrame;
-}return null;
-}, "jalview.appletgui.AlignFrame");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.EmbmenuFrame"], "jalview.appletgui.SplitFrame", ["awt2swing.Panel", "jalview.analysis.AlignmentUtils", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Dimension", "$.GridLayout"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.topFrame = null;
+this.bottomFrame = null;
+this.outermost = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SplitFrame", jalview.appletgui.EmbmenuFrame);
+Clazz.makeConstructor (c$,
+function (af1, af2) {
+Clazz.superConstructor (this, jalview.appletgui.SplitFrame, []);
+this.topFrame = af1;
+this.bottomFrame = af2;
+this.init ();
+}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "init",
+function () {
+var $private = Clazz.checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+this.constructSplit ();
+var topViewport = this.topFrame.viewport;
+var bottomViewport = this.bottomFrame.viewport;
+var topAlignment = topViewport.getAlignment ();
+var bottomAlignment = bottomViewport.getAlignment ();
+var cdna = topAlignment.isNucleotide () ? topViewport : (bottomAlignment.isNucleotide () ? bottomViewport : null);
+var protein = !topAlignment.isNucleotide () ? topViewport : (!bottomAlignment.isNucleotide () ? bottomViewport : null);
+var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein.getAlignment (), cdna.getAlignment ());
+if (mapped) {
+var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (topViewport.applet);
+ssm.addMappings (protein.getAlignment ().getCodonFrames ());
+topViewport.setCodingComplement (bottomViewport);
+ssm.addCommandListener (cdna);
+ssm.addCommandListener (protein);
+}protein.initComplementConsensus ();
+var ap = topAlignment.isNucleotide () ? this.bottomFrame.alignPanel : this.topFrame.alignPanel;
+protein.updateConsensus (ap);
+this.adjustLayout ();
+});
+Clazz.defineMethod (c$, "constructSplit",
+function () {
+this.unsetMenuBar ();
+this.outermost = new awt2swing.Panel ( new java.awt.GridLayout (2, 1));
+var topPanel = new awt2swing.Panel ();
+var bottomPanel = new awt2swing.Panel ();
+this.outermost.add (topPanel);
+this.outermost.add (bottomPanel);
+this.addAlignFrameComponents (this.topFrame, topPanel);
+this.addAlignFrameComponents (this.bottomFrame, bottomPanel);
+});
+Clazz.defineMethod (c$, "adjustLayout",
+function () {
+var cdna = this.topFrame.getAlignViewport ().getAlignment ().isNucleotide () ? this.topFrame.viewport : this.bottomFrame.viewport;
+var protein = cdna === this.topFrame.viewport ? this.bottomFrame.viewport : this.topFrame.viewport;
+var w1 = this.topFrame.alignPanel.idPanel.idCanvas.getWidth ();
+var w2 = this.bottomFrame.alignPanel.idPanel.idCanvas.getWidth ();
+var w3 = Math.max (w1, w2);
+if (w1 != w3) {
+var d = this.topFrame.alignPanel.idPanel.idCanvas.getSize ();
+this.topFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
+}if (w2 != w3) {
+var d = this.bottomFrame.alignPanel.idPanel.idCanvas.getSize ();
+this.bottomFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
+}if (protein != null && cdna != null) {
+var vs = protein.getViewStyle ();
+var scale = vs.isScaleProteinAsCdna () ? 3 : 1;
+vs.setCharWidth (scale * cdna.getViewStyle ().getCharWidth ());
+protein.setViewStyle (vs);
+}});
+Clazz.defineMethod (c$, "addAlignFrameComponents",
+($fz = function (af, panel) {
+panel.setLayout ( new java.awt.BorderLayout ());
+var menuPanel = af.makeEmbeddedPopupMenu (af.getJMenuBar (), true, false);
+panel.add (menuPanel, "North");
+panel.add (af.statusBar, "South");
+panel.add (af.alignPanel, "Center");
+af.setSplitFrame (this);
+}, $fz.isPrivate = true, $fz), "jalview.appletgui.AlignFrame,awt2swing.Panel");
+Clazz.defineMethod (c$, "addToDisplay",
+function (embedded, applet) {
+this.createSplitFrameWindow (embedded, applet);
+this.validate ();
+this.topFrame.alignPanel.adjustAnnotationHeight ();
+this.topFrame.alignPanel.paintAlignment (true);
+this.bottomFrame.alignPanel.adjustAnnotationHeight ();
+this.bottomFrame.alignPanel.paintAlignment (true);
+}, "~B,jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "createSplitFrameWindow",
+function (embed, applet) {
+if (embed) {
+applet.add (this.outermost);
+applet.validate ();
+} else {
+this.add (this.outermost);
+var width = Math.max (this.topFrame.frameWidth, this.bottomFrame.frameWidth);
+var height = this.topFrame.frameHeight + this.bottomFrame.frameHeight;
+jalview.bin.JalviewLite.addFrame (this, this.getTitle (), width, height);
+}}, "~B,jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "getComplement",
+function (af) {
+if (this.topFrame === af) {
+return this.bottomFrame;
+} else if (this.bottomFrame === af) {
+return this.topFrame;
+}return null;
+}, "jalview.appletgui.AlignFrame");
+});
diff --git a/bin/jalview/appletgui/TitledPanel.js b/bin/jalview/appletgui/TitledPanel.js
index 351c3ff..026a455 100644
--- a/bin/jalview/appletgui/TitledPanel.js
+++ b/bin/jalview/appletgui/TitledPanel.js
@@ -1,43 +1,43 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.Insets"], "jalview.appletgui.TitledPanel", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.title = null;
-this.$insets = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "TitledPanel", awt2swing.Panel);
-Clazz.prepareFields (c$, function () {
-this.$insets = new java.awt.Insets (10, 10, 10, 10);
-});
-Clazz.makeConstructor (c$,
-function () {
-this.construct ("");
-});
-Clazz.makeConstructor (c$,
-function (title) {
-Clazz.superConstructor (this, jalview.appletgui.TitledPanel, []);
-this.setTitle (title);
-}, "~S");
-Clazz.defineMethod (c$, "getInsets",
-function () {
-return this.$insets;
-});
-Clazz.defineMethod (c$, "paintComponent",
-function (g) {
-Clazz.superCall (this, jalview.appletgui.TitledPanel, "paintComponent", [g]);
-g.setColor (this.getForeground ());
-g.drawRect (5, 5, this.getWidth () - 10, this.getHeight () - 10);
-var width = g.getFontMetrics ().stringWidth (this.getTitle ());
-g.setColor (this.getBackground ());
-g.fillRect (10, 0, width, 10);
-g.setColor (this.getForeground ());
-g.drawString (this.getTitle (), 10, 10);
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "getTitle",
-function () {
-return this.title;
-});
-Clazz.defineMethod (c$, "setTitle",
-function (title) {
-this.title = title;
-}, "~S");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.Insets"], "jalview.appletgui.TitledPanel", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.title = null;
+this.$insets = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "TitledPanel", awt2swing.Panel);
+Clazz.prepareFields (c$, function () {
+this.$insets = new java.awt.Insets (10, 10, 10, 10);
+});
+Clazz.makeConstructor (c$,
+function () {
+this.construct ("");
+});
+Clazz.makeConstructor (c$,
+function (title) {
+Clazz.superConstructor (this, jalview.appletgui.TitledPanel, []);
+this.setTitle (title);
+}, "~S");
+Clazz.defineMethod (c$, "getInsets",
+function () {
+return this.$insets;
+});
+Clazz.defineMethod (c$, "paintComponent",
+function (g) {
+Clazz.superCall (this, jalview.appletgui.TitledPanel, "paintComponent", [g]);
+g.setColor (this.getForeground ());
+g.drawRect (5, 5, this.getWidth () - 10, this.getHeight () - 10);
+var width = g.getFontMetrics ().stringWidth (this.getTitle ());
+g.setColor (this.getBackground ());
+g.fillRect (10, 0, width, 10);
+g.setColor (this.getForeground ());
+g.drawString (this.getTitle (), 10, 10);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "getTitle",
+function () {
+return this.title;
+});
+Clazz.defineMethod (c$, "setTitle",
+function (title) {
+this.title = title;
+}, "~S");
+});
diff --git a/bin/jalview/appletgui/Tooltip.js b/bin/jalview/appletgui/Tooltip.js
index cb48e62..425b8d7 100644
--- a/bin/jalview/appletgui/Tooltip.js
+++ b/bin/jalview/appletgui/Tooltip.js
@@ -1,67 +1,67 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (null, "jalview.appletgui.Tooltip", ["awt2swing.Frame", "java.applet.Applet", "java.awt.Toolkit"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.tip = null;
-this.lastTip = "";
-this.setPosition = false;
-this.owner = null;
-this.mainContainer = null;
-this.mainLayout = null;
-this.shown = false;
-this.VERTICAL_OFFSET = 20;
-this.HORIZONTAL_ENLARGE = 10;
-this.fontHeight = 0;
-this.linkImage = null;
-this.fm = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "Tooltip");
-Clazz.defineMethod (c$, "setVisible",
-function (b) {
-}, "~B");
-Clazz.makeConstructor (c$,
-function (tip, owner) {
-this.owner = owner;
-this.setTip (tip);
-var url = this.getClass ().getResource ("/images/link.gif");
-if (url != null) {
-this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
-}}, "~S,java.awt.Component");
-Clazz.defineMethod (c$, "setTip",
-function (tip) {
-System.err.println ("Tooltip: " + tip);
-}, "~S");
-Clazz.defineMethod (c$, "setTipLocation",
-function (evt) {
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "removeToolTip",
-($fz = function () {
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "mouseEntered",
-function (me) {
-this.setTipLocation (me);
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "mouseExited",
-function (me) {
-this.removeToolTip ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "mousePressed",
-function (me) {
-this.removeToolTip ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "mouseReleased",
-function (me) {
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "mouseClicked",
-function (me) {
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "mouseMoved",
-function (me) {
-if (!this.shown) {
-this.setTipLocation (me);
-} else if (this.setPosition) {
-this.setTipLocation (me);
-}}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "mouseDragged",
-function (me) {
-}, "java.awt.event.MouseEvent");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (null, "jalview.appletgui.Tooltip", ["awt2swing.Frame", "java.applet.Applet", "java.awt.Toolkit"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tip = null;
+this.lastTip = "";
+this.setPosition = false;
+this.owner = null;
+this.mainContainer = null;
+this.mainLayout = null;
+this.shown = false;
+this.VERTICAL_OFFSET = 20;
+this.HORIZONTAL_ENLARGE = 10;
+this.fontHeight = 0;
+this.linkImage = null;
+this.fm = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "Tooltip");
+Clazz.defineMethod (c$, "setVisible",
+function (b) {
+}, "~B");
+Clazz.makeConstructor (c$,
+function (tip, owner) {
+this.owner = owner;
+this.setTip (tip);
+var url = this.getClass ().getResource ("/images/link.gif");
+if (url != null) {
+this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}}, "~S,java.awt.Component");
+Clazz.defineMethod (c$, "setTip",
+function (tip) {
+System.err.println ("Tooltip: " + tip);
+}, "~S");
+Clazz.defineMethod (c$, "setTipLocation",
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "removeToolTip",
+($fz = function () {
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "mouseEntered",
+function (me) {
+this.setTipLocation (me);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseExited",
+function (me) {
+this.removeToolTip ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mousePressed",
+function (me) {
+this.removeToolTip ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseReleased",
+function (me) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseClicked",
+function (me) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseMoved",
+function (me) {
+if (!this.shown) {
+this.setTipLocation (me);
+} else if (this.setPosition) {
+this.setTipLocation (me);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseDragged",
+function (me) {
+}, "java.awt.event.MouseEvent");
+});
diff --git a/bin/jalview/appletgui/TreeCanvas.class b/bin/jalview/appletgui/TreeCanvas.class
index ee9c1c158b4e224c816b31a31e01603cd948d8c1..b5cddc10b3f025c9a16732cc861f28434385ed77 100644
GIT binary patch
delta 74
zcmcawd#QHAeigCV(bjetiKsDG#MBf
e85q|xFfwQ}FfbgRtZlHDl@%zZxA~pHb6xOM!`>X*0KWH8bPX&Fy+UjN%*&EUdp7QkgUv
h7#SHD*D^3NXfrS{9GR?Xu$PSuD5uS|`L)4wUI5LQ6{Y|H
diff --git a/bin/jalview/appletgui/TreeCanvas.js b/bin/jalview/appletgui/TreeCanvas.js
index da76a3e..69da9f2 100644
--- a/bin/jalview/appletgui/TreeCanvas.js
+++ b/bin/jalview/appletgui/TreeCanvas.js
@@ -1,375 +1,375 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.util.Hashtable"], "jalview.appletgui.TreeCanvas", ["jalview.analysis.Conservation", "jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "$.SequenceI", "$.SequenceNode", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Format", "$.MappingUtils", "java.awt.Color", "$.Dimension", "$.Point", "$.Rectangle", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.tree = null;
-this.scrollPane = null;
-this.av = null;
-this.$font = null;
-this.fitToWindow = true;
-this.showDistances = false;
-this.showBootstrap = false;
-this.markPlaceholders = false;
-this.offx = 20;
-this.offy = 0;
-this.threshold = 0;
-this.longestName = null;
-this.labelLength = -1;
-this.nameHash = null;
-this.nodeHash = null;
-this.highlightNode = null;
-this.ap = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "TreeCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
-Clazz.prepareFields (c$, function () {
-this.nameHash = new java.util.Hashtable ();
-this.nodeHash = new java.util.Hashtable ();
-});
-Clazz.makeConstructor (c$,
-function (ap, scroller) {
-Clazz.superConstructor (this, jalview.appletgui.TreeCanvas, []);
-this.ap = ap;
-this.av = ap.av;
-this.$font = this.av.getFont ();
-this.scrollPane = scroller;
-this.addMouseListener (this);
-this.addMouseMotionListener (this);
-this.setLayout (null);
-jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
-}, "jalview.appletgui.AlignmentPanel,awt2swing.ScrollPane");
-Clazz.defineMethod (c$, "treeSelectionChanged",
-function (sequence) {
-var selected = this.av.getSelectionGroup ();
-if (selected == null) {
-selected = new jalview.datamodel.SequenceGroup ();
-this.av.setSelectionGroup (selected);
-}selected.setEndRes (this.av.getAlignment ().getWidth () - 1);
-selected.addOrRemove (sequence, true);
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "setTree",
-function (tree) {
-this.tree = tree;
-tree.findHeight (tree.getTopNode ());
-var leaves = tree.findLeaves (tree.getTopNode (), new java.util.Vector ());
-var has_placeholders = false;
-this.longestName = "";
-for (var i = 0; i < leaves.size (); i++) {
-var lf = leaves.elementAt (i);
-if (lf.isPlaceholder ()) {
-has_placeholders = true;
-}if (this.longestName.length < (lf.element ()).getName ().length) {
-this.longestName = " * " + (lf.element ()).getName ();
-}}
-this.setMarkPlaceholders (has_placeholders);
-}, "jalview.analysis.NJTree");
-Clazz.defineMethod (c$, "drawNode",
-function (g, node, chunk, scale, width, offx, offy) {
-if (node == null) {
-return;
-}if (node.left () == null && node.right () == null) {
-var height = node.height;
-var dist = node.dist;
-var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;
-var xend = Clazz.floatToInt (height * scale) + offx;
-var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
-var seq = node.element ();
-if (this.av.getSequenceColour (seq) === java.awt.Color.white) {
-g.setColor (java.awt.Color.black);
-} else {
-g.setColor (this.av.getSequenceColour (seq).darker ());
-}} else {
-g.setColor (java.awt.Color.black);
-}g.drawLine (xstart, ypos, xend, ypos);
-var nodeLabel = "";
-if (this.showDistances && node.dist > 0) {
-nodeLabel = new jalview.util.Format ("%-.2f").formDouble (node.dist);
-}if (this.showBootstrap) {
-var btstrap = node.getBootstrap ();
-if (btstrap > -1) {
-if (this.showDistances) {
-nodeLabel = nodeLabel + " : ";
-}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
-}}if (!nodeLabel.equals ("")) {
-g.drawString (nodeLabel, xstart + 2, ypos - 2);
-}var name = (this.markPlaceholders && node.isPlaceholder ()) ? (" * " + node.getName ()) : node.getName ();
-var fm = g.getFontMetrics (this.$font);
-var charWidth = fm.stringWidth (name) + 3;
-var charHeight = fm.getHeight ();
-var rect = new java.awt.Rectangle (xend + 10, ypos - charHeight, charWidth, charHeight);
-this.nameHash.put (node.element (), rect);
-var selected = this.av.getSelectionGroup ();
-if (selected != null && selected.getSequences (null).contains (node.element ())) {
-g.setColor (java.awt.Color.gray);
-g.fillRect (xend + 10, ypos - charHeight + 3, charWidth, charHeight);
-g.setColor (java.awt.Color.white);
-}g.drawString (name, xend + 10, ypos);
-g.setColor (java.awt.Color.black);
-} else {
-this.drawNode (g, node.left (), chunk, scale, width, offx, offy);
-this.drawNode (g, node.right (), chunk, scale, width, offx, offy);
-var height = node.height;
-var dist = node.dist;
-var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;
-var xend = Clazz.floatToInt (height * scale) + offx;
-var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
-g.setColor (node.color.darker ());
-g.drawLine (xstart, ypos, xend, ypos);
-if (node === this.highlightNode) {
-g.fillRect (xend - 3, ypos - 3, 6, 6);
-} else {
-g.fillRect (xend - 2, ypos - 2, 4, 4);
-}var ystart = Clazz.floatToInt ((node.left ()).ycount * chunk) + offy;
-var yend = Clazz.floatToInt ((node.right ()).ycount * chunk) + offy;
-var pos = new java.awt.Rectangle (xend - 2, ypos - 2, 5, 5);
-this.nodeHash.put (node, pos);
-g.drawLine (Clazz.floatToInt (height * scale) + offx, ystart, Clazz.floatToInt (height * scale) + offx, yend);
-var nodeLabel = "";
-if (this.showDistances && (node.dist > 0)) {
-nodeLabel = new jalview.util.Format ("%-.2f").formDouble (node.dist);
-}if (this.showBootstrap) {
-var btstrap = node.getBootstrap ();
-if (btstrap > -1) {
-if (this.showDistances) {
-nodeLabel = nodeLabel + " : ";
-}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
-}}if (!nodeLabel.equals ("")) {
-g.drawString (nodeLabel, xstart + 2, ypos - 2);
-}}}, "java.awt.Graphics,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
-Clazz.defineMethod (c$, "findElement",
-function (x, y) {
-var keys = this.nameHash.keys ();
-while (keys.hasMoreElements ()) {
-var ob = keys.nextElement ();
-var rect = this.nameHash.get (ob);
-if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
-return ob;
-}}
-keys = this.nodeHash.keys ();
-while (keys.hasMoreElements ()) {
-var ob = keys.nextElement ();
-var rect = this.nodeHash.get (ob);
-if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
-return ob;
-}}
-return null;
-}, "~N,~N");
-Clazz.defineMethod (c$, "pickNodes",
-function (pickBox) {
-var width = this.getSize ().width;
-var height = this.getSize ().height;
-var top = this.tree.getTopNode ();
-var wscale = (width * .8 - this.offx * 2) / this.tree.getMaxHeight ();
-if (top.count == 0) {
-top.count = (top.left ()).count + (top.right ()).count;
-}var chunk = (height - this.offy) / top.count;
-this.pickNode (pickBox, top, chunk, wscale, width, this.offx, this.offy);
-}, "java.awt.Rectangle");
-Clazz.defineMethod (c$, "pickNode",
-function (pickBox, node, chunk, scale, width, offx, offy) {
-if (node == null) {
-return;
-}if (node.left () == null && node.right () == null) {
-var height = node.height;
-var xend = Clazz.floatToInt (height * scale) + offx;
-var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
-if (pickBox.contains ( new java.awt.Point (xend, ypos))) {
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
-var seq = node.element ();
-var sg = this.av.getSelectionGroup ();
-if (sg != null) {
-sg.addOrRemove (seq, true);
-}}}} else {
-this.pickNode (pickBox, node.left (), chunk, scale, width, offx, offy);
-this.pickNode (pickBox, node.right (), chunk, scale, width, offx, offy);
-}}, "java.awt.Rectangle,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
-Clazz.defineMethod (c$, "setColor",
-function (node, c) {
-if (node == null) {
-return;
-}if (node.left () == null && node.right () == null) {
-node.color = c;
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
-this.av.setSequenceColour (node.element (), c);
-}} else {
-node.color = c;
-this.setColor (node.left (), c);
-this.setColor (node.right (), c);
-}}, "jalview.datamodel.SequenceNode,java.awt.Color");
-Clazz.overrideMethod (c$, "update",
-function (g) {
-this.paint (g);
-}, "java.awt.Graphics");
-Clazz.overrideMethod (c$, "paintComponent",
-function (g) {
-if (this.tree == null) {
-return;
-}if (this.nameHash.size () == 0) {
-this.repaint ();
-}var width = this.scrollPane.getSize ().width;
-var height = this.scrollPane.getSize ().height;
-if (!this.fitToWindow) {
-height = g.getFontMetrics (this.$font).getHeight () * this.nameHash.size ();
-}if (this.getSize ().width > width) {
-this.setSize ( new java.awt.Dimension (width, height));
-this.scrollPane.validate ();
-return;
-}this.setSize ( new java.awt.Dimension (width, height));
-g.setFont (this.$font);
-this.draw (g, width, height);
-this.validate ();
-}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "draw",
-function (g, width, height) {
-this.offy = this.$font.getSize () + 10;
-g.setColor (java.awt.Color.white);
-g.fillRect (0, 0, width, height);
-this.labelLength = g.getFontMetrics (this.$font).stringWidth (this.longestName) + 20;
-var wscale = (width - this.labelLength - this.offx * 2) / this.tree.getMaxHeight ();
-var top = this.tree.getTopNode ();
-if (top.count == 0) {
-top.count = (top.left ()).count + (top.right ()).count;
-}var chunk = (height - this.offy) / top.count;
-this.drawNode (g, this.tree.getTopNode (), chunk, wscale, width, this.offx, this.offy);
-if (this.threshold != 0) {
-if (this.av.getCurrentTree () === this.tree) {
-g.setColor (java.awt.Color.red);
-} else {
-g.setColor (java.awt.Color.gray);
-}var x = Clazz.floatToInt (this.threshold * (this.getSize ().width - this.labelLength - 2 * this.offx) + this.offx);
-g.drawLine (x, 0, x, this.getSize ().height);
-}}, "java.awt.Graphics,~N,~N");
-Clazz.overrideMethod (c$, "mouseReleased",
-function (e) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseEntered",
-function (e) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseExited",
-function (e) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseClicked",
-function (evt) {
-if (this.highlightNode != null) {
-if (evt.getClickCount () > 1) {
-this.tree.swapNodes (this.highlightNode);
-this.tree.reCount (this.tree.getTopNode ());
-this.tree.findHeight (this.tree.getTopNode ());
-} else {
-var leaves = new java.util.Vector ();
-this.tree.findLeaves (this.highlightNode, leaves);
-for (var i = 0; i < leaves.size (); i++) {
-var seq = (leaves.elementAt (i)).element ();
-this.treeSelectionChanged (seq);
-}
-}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
-this.repaint ();
-this.av.sendSelection ();
-}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseDragged",
-function (ect) {
-}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mouseMoved",
-function (evt) {
-this.av.setCurrentTree (this.tree);
-var ob = this.findElement (evt.getX (), evt.getY ());
-if (Clazz.instanceOf (ob, jalview.datamodel.SequenceNode)) {
-this.highlightNode = ob;
-this.repaint ();
-} else {
-if (this.highlightNode != null) {
-this.highlightNode = null;
-this.repaint ();
-}}}, "java.awt.event.MouseEvent");
-Clazz.overrideMethod (c$, "mousePressed",
-function (e) {
-this.av.setCurrentTree (this.tree);
-var x = e.getX ();
-var y = e.getY ();
-var ob = this.findElement (x, y);
-if (Clazz.instanceOf (ob, jalview.datamodel.SequenceI)) {
-this.treeSelectionChanged (ob);
-jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
-this.repaint ();
-this.av.sendSelection ();
-return;
-} else if (!(Clazz.instanceOf (ob, jalview.datamodel.SequenceNode))) {
-if (this.tree.getMaxHeight () != 0) {
-this.threshold = (x - this.offx) / (this.getSize ().width - this.labelLength - 2 * this.offx);
-this.tree.getGroups ().removeAllElements ();
-this.tree.groupNodes (this.tree.getTopNode (), this.threshold);
-this.setColor (this.tree.getTopNode (), java.awt.Color.black);
-this.av.setSelectionGroup (null);
-this.av.getAlignment ().deleteAllGroups ();
-this.av.clearSequenceColours ();
-var codingComplement = this.av.getCodingComplement ();
-if (codingComplement != null) {
-codingComplement.setSelectionGroup (null);
-codingComplement.getAlignment ().deleteAllGroups ();
-codingComplement.clearSequenceColours ();
-}this.colourGroups ();
-}}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
-this.repaint ();
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "colourGroups",
-function () {
-for (var i = 0; i < this.tree.getGroups ().size (); i++) {
-var col = new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));
-this.setColor (this.tree.getGroups ().elementAt (i), col.brighter ());
-var l = this.tree.findLeaves (this.tree.getGroups ().elementAt (i), new java.util.Vector ());
-var sequences = new java.util.Vector ();
-for (var j = 0; j < l.size (); j++) {
-var s1 = (l.elementAt (j)).element ();
-if (!sequences.contains (s1)) {
-sequences.addElement (s1);
-}}
-var cs = null;
-var sg = new jalview.datamodel.SequenceGroup (sequences, "", cs, true, true, false, 0, this.av.getAlignment ().getWidth () - 1);
-if (this.av.getGlobalColourScheme () != null) {
-if (Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.UserColourScheme)) {
-cs = new jalview.schemes.UserColourScheme ((this.av.getGlobalColourScheme ()).getColours ());
-} else {
-cs = jalview.schemes.ColourSchemeProperty.getColour (sg, jalview.schemes.ColourSchemeProperty.getColourName (this.av.getGlobalColourScheme ()));
-}if (cs != null) {
-cs.setThreshold (this.av.getGlobalColourScheme ().getThreshold (), this.av.isIgnoreGapsConsensus ());
-}}sg.cs = cs;
-sg.setName ("JTreeGroup:" + sg.hashCode ());
-sg.setIdColour (col);
-if (this.av.getGlobalColourScheme () != null && this.av.getGlobalColourScheme ().conservationApplied ()) {
-var c = new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes ());
-c.calculate ();
-c.verdict (false, this.av.getConsPercGaps ());
-cs.setConservation (c);
-sg.cs = cs;
-}this.av.getAlignment ().addGroup (sg);
-this.av.getAlignment ().addGroup (sg);
-var codingComplement = this.av.getCodingComplement ();
-if (codingComplement != null) {
-var mappedGroup = jalview.util.MappingUtils.mapSequenceGroup (sg, this.av, codingComplement);
-if (mappedGroup.getSequences ().size () > 0) {
-codingComplement.getAlignment ().addGroup (mappedGroup);
-for (var seq, $seq = mappedGroup.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-codingComplement.setSequenceColour (seq, col);
-}
-}}}
-this.ap.updateAnnotation ();
-if (this.av.getCodingComplement () != null) {
-(this.av.getCodingComplement ()).firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
-}});
-Clazz.defineMethod (c$, "setShowDistances",
-function (state) {
-this.showDistances = state;
-this.repaint ();
-}, "~B");
-Clazz.defineMethod (c$, "setShowBootstrap",
-function (state) {
-this.showBootstrap = state;
-this.repaint ();
-}, "~B");
-Clazz.defineMethod (c$, "setMarkPlaceholders",
-function (state) {
-this.markPlaceholders = state;
-this.repaint ();
-}, "~B");
-Clazz.defineStatics (c$,
-"PLACEHOLDER", " * ");
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.util.Hashtable"], "jalview.appletgui.TreeCanvas", ["jalview.analysis.Conservation", "jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "$.SequenceI", "$.SequenceNode", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Format", "$.MappingUtils", "java.awt.Color", "$.Dimension", "$.Point", "$.Rectangle", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tree = null;
+this.scrollPane = null;
+this.av = null;
+this.$font = null;
+this.fitToWindow = true;
+this.showDistances = false;
+this.showBootstrap = false;
+this.markPlaceholders = false;
+this.offx = 20;
+this.offy = 0;
+this.threshold = 0;
+this.longestName = null;
+this.labelLength = -1;
+this.nameHash = null;
+this.nodeHash = null;
+this.highlightNode = null;
+this.ap = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "TreeCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.prepareFields (c$, function () {
+this.nameHash = new java.util.Hashtable ();
+this.nodeHash = new java.util.Hashtable ();
+});
+Clazz.makeConstructor (c$,
+function (ap, scroller) {
+Clazz.superConstructor (this, jalview.appletgui.TreeCanvas, []);
+this.ap = ap;
+this.av = ap.av;
+this.$font = this.av.getFont ();
+this.scrollPane = scroller;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+this.setLayout (null);
+jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
+}, "jalview.appletgui.AlignmentPanel,awt2swing.ScrollPane");
+Clazz.defineMethod (c$, "treeSelectionChanged",
+function (sequence) {
+var selected = this.av.getSelectionGroup ();
+if (selected == null) {
+selected = new jalview.datamodel.SequenceGroup ();
+this.av.setSelectionGroup (selected);
+}selected.setEndRes (this.av.getAlignment ().getWidth () - 1);
+selected.addOrRemove (sequence, true);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "setTree",
+function (tree) {
+this.tree = tree;
+tree.findHeight (tree.getTopNode ());
+var leaves = tree.findLeaves (tree.getTopNode (), new java.util.Vector ());
+var has_placeholders = false;
+this.longestName = "";
+for (var i = 0; i < leaves.size (); i++) {
+var lf = leaves.elementAt (i);
+if (lf.isPlaceholder ()) {
+has_placeholders = true;
+}if (this.longestName.length < (lf.element ()).getName ().length) {
+this.longestName = " * " + (lf.element ()).getName ();
+}}
+this.setMarkPlaceholders (has_placeholders);
+}, "jalview.analysis.NJTree");
+Clazz.defineMethod (c$, "drawNode",
+function (g, node, chunk, scale, width, offx, offy) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+var height = node.height;
+var dist = node.dist;
+var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;
+var xend = Clazz.floatToInt (height * scale) + offx;
+var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+var seq = node.element ();
+if (this.av.getSequenceColour (seq) === java.awt.Color.white) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (this.av.getSequenceColour (seq).darker ());
+}} else {
+g.setColor (java.awt.Color.black);
+}g.drawLine (xstart, ypos, xend, ypos);
+var nodeLabel = "";
+if (this.showDistances && node.dist > 0) {
+nodeLabel = new jalview.util.Format ("%-.2f").formDouble (node.dist);
+}if (this.showBootstrap) {
+var btstrap = node.getBootstrap ();
+if (btstrap > -1) {
+if (this.showDistances) {
+nodeLabel = nodeLabel + " : ";
+}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
+}}if (!nodeLabel.equals ("")) {
+g.drawString (nodeLabel, xstart + 2, ypos - 2);
+}var name = (this.markPlaceholders && node.isPlaceholder ()) ? (" * " + node.getName ()) : node.getName ();
+var fm = g.getFontMetrics (this.$font);
+var charWidth = fm.stringWidth (name) + 3;
+var charHeight = fm.getHeight ();
+var rect = new java.awt.Rectangle (xend + 10, ypos - charHeight, charWidth, charHeight);
+this.nameHash.put (node.element (), rect);
+var selected = this.av.getSelectionGroup ();
+if (selected != null && selected.getSequences (null).contains (node.element ())) {
+g.setColor (java.awt.Color.gray);
+g.fillRect (xend + 10, ypos - charHeight + 3, charWidth, charHeight);
+g.setColor (java.awt.Color.white);
+}g.drawString (name, xend + 10, ypos);
+g.setColor (java.awt.Color.black);
+} else {
+this.drawNode (g, node.left (), chunk, scale, width, offx, offy);
+this.drawNode (g, node.right (), chunk, scale, width, offx, offy);
+var height = node.height;
+var dist = node.dist;
+var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;
+var xend = Clazz.floatToInt (height * scale) + offx;
+var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
+g.setColor (node.color.darker ());
+g.drawLine (xstart, ypos, xend, ypos);
+if (node === this.highlightNode) {
+g.fillRect (xend - 3, ypos - 3, 6, 6);
+} else {
+g.fillRect (xend - 2, ypos - 2, 4, 4);
+}var ystart = Clazz.floatToInt ((node.left ()).ycount * chunk) + offy;
+var yend = Clazz.floatToInt ((node.right ()).ycount * chunk) + offy;
+var pos = new java.awt.Rectangle (xend - 2, ypos - 2, 5, 5);
+this.nodeHash.put (node, pos);
+g.drawLine (Clazz.floatToInt (height * scale) + offx, ystart, Clazz.floatToInt (height * scale) + offx, yend);
+var nodeLabel = "";
+if (this.showDistances && (node.dist > 0)) {
+nodeLabel = new jalview.util.Format ("%-.2f").formDouble (node.dist);
+}if (this.showBootstrap) {
+var btstrap = node.getBootstrap ();
+if (btstrap > -1) {
+if (this.showDistances) {
+nodeLabel = nodeLabel + " : ";
+}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
+}}if (!nodeLabel.equals ("")) {
+g.drawString (nodeLabel, xstart + 2, ypos - 2);
+}}}, "java.awt.Graphics,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "findElement",
+function (x, y) {
+var keys = this.nameHash.keys ();
+while (keys.hasMoreElements ()) {
+var ob = keys.nextElement ();
+var rect = this.nameHash.get (ob);
+if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
+return ob;
+}}
+keys = this.nodeHash.keys ();
+while (keys.hasMoreElements ()) {
+var ob = keys.nextElement ();
+var rect = this.nodeHash.get (ob);
+if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
+return ob;
+}}
+return null;
+}, "~N,~N");
+Clazz.defineMethod (c$, "pickNodes",
+function (pickBox) {
+var width = this.getSize ().width;
+var height = this.getSize ().height;
+var top = this.tree.getTopNode ();
+var wscale = (width * .8 - this.offx * 2) / this.tree.getMaxHeight ();
+if (top.count == 0) {
+top.count = (top.left ()).count + (top.right ()).count;
+}var chunk = (height - this.offy) / top.count;
+this.pickNode (pickBox, top, chunk, wscale, width, this.offx, this.offy);
+}, "java.awt.Rectangle");
+Clazz.defineMethod (c$, "pickNode",
+function (pickBox, node, chunk, scale, width, offx, offy) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+var height = node.height;
+var xend = Clazz.floatToInt (height * scale) + offx;
+var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
+if (pickBox.contains ( new java.awt.Point (xend, ypos))) {
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+var seq = node.element ();
+var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+sg.addOrRemove (seq, true);
+}}}} else {
+this.pickNode (pickBox, node.left (), chunk, scale, width, offx, offy);
+this.pickNode (pickBox, node.right (), chunk, scale, width, offx, offy);
+}}, "java.awt.Rectangle,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setColor",
+function (node, c) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+node.color = c;
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+this.av.setSequenceColour (node.element (), c);
+}} else {
+node.color = c;
+this.setColor (node.left (), c);
+this.setColor (node.right (), c);
+}}, "jalview.datamodel.SequenceNode,java.awt.Color");
+Clazz.overrideMethod (c$, "update",
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz.overrideMethod (c$, "paintComponent",
+function (g) {
+if (this.tree == null) {
+return;
+}if (this.nameHash.size () == 0) {
+this.repaint ();
+}var width = this.scrollPane.getSize ().width;
+var height = this.scrollPane.getSize ().height;
+if (!this.fitToWindow) {
+height = g.getFontMetrics (this.$font).getHeight () * this.nameHash.size ();
+}if (this.getSize ().width > width) {
+this.setSize ( new java.awt.Dimension (width, height));
+this.scrollPane.validate ();
+return;
+}this.setSize ( new java.awt.Dimension (width, height));
+g.setFont (this.$font);
+this.draw (g, width, height);
+this.validate ();
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "draw",
+function (g, width, height) {
+this.offy = this.$font.getSize () + 10;
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, width, height);
+this.labelLength = g.getFontMetrics (this.$font).stringWidth (this.longestName) + 20;
+var wscale = (width - this.labelLength - this.offx * 2) / this.tree.getMaxHeight ();
+var top = this.tree.getTopNode ();
+if (top.count == 0) {
+top.count = (top.left ()).count + (top.right ()).count;
+}var chunk = (height - this.offy) / top.count;
+this.drawNode (g, this.tree.getTopNode (), chunk, wscale, width, this.offx, this.offy);
+if (this.threshold != 0) {
+if (this.av.getCurrentTree () === this.tree) {
+g.setColor (java.awt.Color.red);
+} else {
+g.setColor (java.awt.Color.gray);
+}var x = Clazz.floatToInt (this.threshold * (this.getSize ().width - this.labelLength - 2 * this.offx) + this.offx);
+g.drawLine (x, 0, x, this.getSize ().height);
+}}, "java.awt.Graphics,~N,~N");
+Clazz.overrideMethod (c$, "mouseReleased",
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered",
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited",
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked",
+function (evt) {
+if (this.highlightNode != null) {
+if (evt.getClickCount () > 1) {
+this.tree.swapNodes (this.highlightNode);
+this.tree.reCount (this.tree.getTopNode ());
+this.tree.findHeight (this.tree.getTopNode ());
+} else {
+var leaves = new java.util.Vector ();
+this.tree.findLeaves (this.highlightNode, leaves);
+for (var i = 0; i < leaves.size (); i++) {
+var seq = (leaves.elementAt (i)).element ();
+this.treeSelectionChanged (seq);
+}
+}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+this.av.sendSelection ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged",
+function (ect) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved",
+function (evt) {
+this.av.setCurrentTree (this.tree);
+var ob = this.findElement (evt.getX (), evt.getY ());
+if (Clazz.instanceOf (ob, jalview.datamodel.SequenceNode)) {
+this.highlightNode = ob;
+this.repaint ();
+} else {
+if (this.highlightNode != null) {
+this.highlightNode = null;
+this.repaint ();
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed",
+function (e) {
+this.av.setCurrentTree (this.tree);
+var x = e.getX ();
+var y = e.getY ();
+var ob = this.findElement (x, y);
+if (Clazz.instanceOf (ob, jalview.datamodel.SequenceI)) {
+this.treeSelectionChanged (ob);
+jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+this.av.sendSelection ();
+return;
+} else if (!(Clazz.instanceOf (ob, jalview.datamodel.SequenceNode))) {
+if (this.tree.getMaxHeight () != 0) {
+this.threshold = (x - this.offx) / (this.getSize ().width - this.labelLength - 2 * this.offx);
+this.tree.getGroups ().removeAllElements ();
+this.tree.groupNodes (this.tree.getTopNode (), this.threshold);
+this.setColor (this.tree.getTopNode (), java.awt.Color.black);
+this.av.setSelectionGroup (null);
+this.av.getAlignment ().deleteAllGroups ();
+this.av.clearSequenceColours ();
+var codingComplement = this.av.getCodingComplement ();
+if (codingComplement != null) {
+codingComplement.setSelectionGroup (null);
+codingComplement.getAlignment ().deleteAllGroups ();
+codingComplement.clearSequenceColours ();
+}this.colourGroups ();
+}}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "colourGroups",
+function () {
+for (var i = 0; i < this.tree.getGroups ().size (); i++) {
+var col = new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));
+this.setColor (this.tree.getGroups ().elementAt (i), col.brighter ());
+var l = this.tree.findLeaves (this.tree.getGroups ().elementAt (i), new java.util.Vector ());
+var sequences = new java.util.Vector ();
+for (var j = 0; j < l.size (); j++) {
+var s1 = (l.elementAt (j)).element ();
+if (!sequences.contains (s1)) {
+sequences.addElement (s1);
+}}
+var cs = null;
+var sg = new jalview.datamodel.SequenceGroup (sequences, "", cs, true, true, false, 0, this.av.getAlignment ().getWidth () - 1);
+if (this.av.getGlobalColourScheme () != null) {
+if (Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.UserColourScheme)) {
+cs = new jalview.schemes.UserColourScheme ((this.av.getGlobalColourScheme ()).getColours ());
+} else {
+cs = jalview.schemes.ColourSchemeProperty.getColour (sg, jalview.schemes.ColourSchemeProperty.getColourName (this.av.getGlobalColourScheme ()));
+}if (cs != null) {
+cs.setThreshold (this.av.getGlobalColourScheme ().getThreshold (), this.av.isIgnoreGapsConsensus ());
+}}sg.cs = cs;
+sg.setName ("JTreeGroup:" + sg.hashCode ());
+sg.setIdColour (col);
+if (this.av.getGlobalColourScheme () != null && this.av.getGlobalColourScheme ().conservationApplied ()) {
+var c = new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes ());
+c.calculate ();
+c.verdict (false, this.av.getConsPercGaps ());
+cs.setConservation (c);
+sg.cs = cs;
+}this.av.getAlignment ().addGroup (sg);
+this.av.getAlignment ().addGroup (sg);
+var codingComplement = this.av.getCodingComplement ();
+if (codingComplement != null) {
+var mappedGroup = jalview.util.MappingUtils.mapSequenceGroup (sg, this.av, codingComplement);
+if (mappedGroup.getSequences ().size () > 0) {
+codingComplement.getAlignment ().addGroup (mappedGroup);
+for (var seq, $seq = mappedGroup.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+codingComplement.setSequenceColour (seq, col);
+}
+}}}
+this.ap.updateAnnotation ();
+if (this.av.getCodingComplement () != null) {
+(this.av.getCodingComplement ()).firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}});
+Clazz.defineMethod (c$, "setShowDistances",
+function (state) {
+this.showDistances = state;
+this.repaint ();
+}, "~B");
+Clazz.defineMethod (c$, "setShowBootstrap",
+function (state) {
+this.showBootstrap = state;
+this.repaint ();
+}, "~B");
+Clazz.defineMethod (c$, "setMarkPlaceholders",
+function (state) {
+this.markPlaceholders = state;
+this.repaint ();
+}, "~B");
+Clazz.defineStatics (c$,
+"PLACEHOLDER", " * ");
+});
diff --git a/bin/jalview/appletgui/TreePanel$TreeLoader.class b/bin/jalview/appletgui/TreePanel$TreeLoader.class
index 9a214e5abd0f6ab7e5a1cf664fcc31076d29ca8a..cd993a2c5a8cedecee051d4ccc3d51f22e31bae4 100644
GIT binary patch
delta 24
fcmZ3gwnS}1Egxgg<~lxI7S=chek1kC8-+>$WHJY1
delta 25
gcmZ3Ywp49HEgxg=<~lxI7Pfc>0V5Tr$s2@90BP(8WdHyG
diff --git a/bin/jalview/appletgui/TreePanel.class b/bin/jalview/appletgui/TreePanel.class
index a2409c826bda6eb6f2137e4a3a747e6ef097e82e..b8a678db3ffa1b22d131c1011bb78e9c7f3bf081 100644
GIT binary patch
delta 41
xcmbQ?Jl%Q2Qz=H7&CjIR7)3=HSpG9eFfg$*FfuYQvNM!2{9^Ff%p^076#(qW3AX?M
delta 42
ycmbR4Ji~dzQz=H-&CjIR7{$aGSpPFfFfg$*FfuYQvNM!2{9 1;
-var e = this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView (d);
-if (!d) {
-a = 0;
-b = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getWidth ();
-c = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray ();
-} else {
-a = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getStartRes ();
-b = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getEndRes () + 1;
-c = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSequencesInOrder (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ());
-}var f = jalview.schemes.ResidueProperties.getScoreModel (this.b$["jalview.appletgui.TreePanel"].pwtype);
-if (Clazz.instanceOf (f, jalview.api.analysis.ViewBasedAnalysisI)) {
-try {
-f = f.getClass ().newInstance ();
-(f).configureFromAlignmentView (this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap);
-} catch (q) {
-if (Clazz.exceptionOf (q, Exception)) {
-System.err.println ("Couldn't create a scoremodel instance for " + f.getName ());
-q.printStackTrace ();
-} else {
-throw q;
-}
-}
-this.b$["jalview.appletgui.TreePanel"].tree = new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, f, a, b);
-} else {
-this.b$["jalview.appletgui.TreePanel"].tree = new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, null, a, b);
-}}this.b$["jalview.appletgui.TreePanel"].tree.reCount (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
-this.b$["jalview.appletgui.TreePanel"].tree.findHeight (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree (this.b$["jalview.appletgui.TreePanel"].tree);
-if (this.newtree != null) {
-var a = this.newtree.HasDistances () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeDistances", this.newtree.HasDistances ());
-var b = this.newtree.HasBootstrap () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeBootstraps", this.newtree.HasBootstrap ());
-this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState (a);
-this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState (b);
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap (b);
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances (a);
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders (this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showUnlinkedTreeNodes", false));
-}this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint ();
-this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree (this.b$["jalview.appletgui.TreePanel"].tree);
-});
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "java.lang.Thread", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuBar", "$.MenuItem", "$.ScrollPane", "java.awt.BorderLayout"], "jalview.appletgui.TreePanel", ["awt2swing.Frame", "jalview.analysis.NJTree", "jalview.api.analysis.ViewBasedAnalysisI", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.FontChooser", "$.TreeCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.MessageManager", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.seq = null;
+this.$type = null;
+this.pwtype = null;
+this.start = 0;
+this.end = 0;
+this.treeCanvas = null;
+this.tree = null;
+this.ap = null;
+this.av = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.TreePanel.TreeLoader")) {
+jalview.appletgui.TreePanel.$TreePanel$TreeLoader$ ();
+}
+this.borderLayout1 = null;
+this.scrollPane = null;
+this.jMenuBar1 = null;
+this.jMenu2 = null;
+this.fontSize = null;
+this.bootstrapMenu = null;
+this.distanceMenu = null;
+this.placeholdersMenu = null;
+this.fitToWindow = null;
+this.fileMenu = null;
+this.newickOutput = null;
+this.inputData = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "TreePanel", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz.prepareFields (c$, function () {
+this.borderLayout1 = new java.awt.BorderLayout ();
+this.scrollPane = new awt2swing.ScrollPane ();
+this.jMenuBar1 = new awt2swing.MenuBar ();
+this.jMenu2 = new awt2swing.Menu ();
+this.fontSize = new awt2swing.MenuItem ();
+this.bootstrapMenu = new awt2swing.CheckboxMenuItem ();
+this.distanceMenu = new awt2swing.CheckboxMenuItem ();
+this.placeholdersMenu = new awt2swing.CheckboxMenuItem ();
+this.fitToWindow = new awt2swing.CheckboxMenuItem ();
+this.fileMenu = new awt2swing.Menu ();
+this.newickOutput = new awt2swing.MenuItem ();
+this.inputData = new awt2swing.MenuItem ();
+});
+Clazz.defineMethod (c$, "getTree",
+function () {
+return this.tree;
+});
+Clazz.defineMethod (c$, "finalize",
+function () {
+this.ap = null;
+this.av = null;
+Clazz.superCall (this, jalview.appletgui.TreePanel, "finalize", []);
+});
+Clazz.makeConstructor (c$,
+function (ap, type, pwtype) {
+Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);
+try {
+this.jbInit ();
+this.setMenuBar (this.jMenuBar1);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+this.initTreePanel (ap, type, pwtype, null);
+}, "jalview.appletgui.AlignmentPanel,~S,~S");
+Clazz.makeConstructor (c$,
+function (ap, type, pwtype, newtree) {
+Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);
+try {
+this.jbInit ();
+this.setMenuBar (this.jMenuBar1);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.initTreePanel (ap, type, pwtype, newtree);
+}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+Clazz.defineMethod (c$, "initTreePanel",
+function (ap, type, pwtype, newTree) {
+this.ap = ap;
+this.av = ap.av;
+this.$type = type;
+this.pwtype = pwtype;
+this.treeCanvas = new jalview.appletgui.TreeCanvas (ap, this.scrollPane);
+var tl = Clazz.innerTypeInstance (jalview.appletgui.TreePanel.TreeLoader, this, null, newTree);
+tl.start ();
+this.embedMenuIfNeeded (this.treeCanvas);
+this.scrollPane.add (this.treeCanvas, "Center");
+}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+Clazz.defineMethod (c$, "showOriginalData",
+function () {
+if (this.tree.seqData != null) {
+var gc = '-';
+try {
+gc = this.av.getGapCharacter ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;var alAndColsel = this.tree.seqData.getAlignmentAndColumnSelection (gc);
+if (alAndColsel != null && alAndColsel[0] != null) {
+var al = new jalview.datamodel.Alignment (alAndColsel[0]);
+var af = new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for Tree", false);
+af.viewport.setHiddenColumns (alAndColsel[1]);
+}} else {
+System.out.println ("Original Tree Data not available");
+}});
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+if (evt.getSource () === this.newickOutput) {
+this.newickOutput_actionPerformed ();
+} else if (evt.getSource () === this.fontSize) {
+this.fontSize_actionPerformed ();
+} else if (evt.getSource () === this.inputData) {
+this.showOriginalData ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged",
+function (evt) {
+if (evt.getSource () === this.fitToWindow) {
+this.treeCanvas.fitToWindow = this.fitToWindow.getState ();
+} else if (evt.getSource () === this.distanceMenu) {
+this.treeCanvas.setShowDistances (this.distanceMenu.getState ());
+} else if (evt.getSource () === this.bootstrapMenu) {
+this.treeCanvas.setShowBootstrap (this.bootstrapMenu.getState ());
+} else if (evt.getSource () === this.placeholdersMenu) {
+this.treeCanvas.setMarkPlaceholders (this.placeholdersMenu.getState ());
+}this.treeCanvas.repaint ();
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "newickOutput_actionPerformed",
+function () {
+var fout = new jalview.io.NewickFile (this.tree.getTopNode ());
+var output = fout.print (false, true);
+var cap = new jalview.appletgui.CutAndPasteTransfer (false, null);
+cap.setText (output);
+var frame = new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.$type + " " + this.pwtype, 500, 100);
+});
+Clazz.defineMethod (c$, "getTreeFont",
+function () {
+return this.treeCanvas.$font;
+});
+Clazz.defineMethod (c$, "setTreeFont",
+function (font) {
+this.treeCanvas.$font = font;
+this.treeCanvas.repaint ();
+}, "java.awt.Font");
+Clazz.defineMethod (c$, "fontSize_actionPerformed",
+function () {
+if (this.treeCanvas == null) {
+return;
+} new jalview.appletgui.FontChooser (this);
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout (this.borderLayout1);
+this.setBackground (java.awt.Color.white);
+this.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jMenu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
+this.fontSize.setLabel (jalview.util.MessageManager.getString ("action.font"));
+this.fontSize.addActionListener (this);
+this.bootstrapMenu.setLabel (jalview.util.MessageManager.getString ("label.show_bootstrap_values"));
+this.bootstrapMenu.addItemListener (this);
+this.distanceMenu.setLabel (jalview.util.MessageManager.getString ("label.show_distances"));
+this.distanceMenu.addItemListener (this);
+this.placeholdersMenu.setLabel (jalview.util.MessageManager.getString ("label.mark_unassociated_leaves"));
+this.placeholdersMenu.addItemListener (this);
+this.fitToWindow.setState (true);
+this.fitToWindow.setLabel (jalview.util.MessageManager.getString ("label.fit_to_window"));
+this.fitToWindow.addItemListener (this);
+this.fileMenu.setLabel (jalview.util.MessageManager.getString ("action.file"));
+this.newickOutput.setLabel (jalview.util.MessageManager.getString ("label.newick_format"));
+this.newickOutput.addActionListener (this);
+this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
+this.add (this.scrollPane, "Center");
+this.jMenuBar1.add (this.fileMenu);
+this.jMenuBar1.add (this.jMenu2);
+this.jMenu2.add (this.fitToWindow);
+this.jMenu2.add (this.fontSize);
+this.jMenu2.add (this.distanceMenu);
+this.jMenu2.add (this.bootstrapMenu);
+this.jMenu2.add (this.placeholdersMenu);
+this.fileMenu.add (this.newickOutput);
+this.fileMenu.add (this.inputData);
+this.inputData.addActionListener (this);
+}, $fz.isPrivate = true, $fz));
+c$.$TreePanel$TreeLoader$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.newtree = null;
+this.odata = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.TreePanel, "TreeLoader", Thread);
+Clazz.makeConstructor (c$,
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.TreePanel.TreeLoader, []);
+this.newtree = a;
+}, "jalview.io.NewickFile");
+Clazz.overrideMethod (c$, "run",
+function () {
+if (this.newtree != null) {
+if (this.odata == null) {
+this.b$["jalview.appletgui.TreePanel"].tree = new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.newtree);
+} else {
+this.b$["jalview.appletgui.TreePanel"].tree = new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.odata, this.newtree);
+}} else {
+var a;
+var b;
+var c;
+var d = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSize () > 1;
+var e = this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView (d);
+if (!d) {
+a = 0;
+b = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getWidth ();
+c = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray ();
+} else {
+a = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getStartRes ();
+b = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getEndRes () + 1;
+c = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSequencesInOrder (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ());
+}var f = jalview.schemes.ResidueProperties.getScoreModel (this.b$["jalview.appletgui.TreePanel"].pwtype);
+if (Clazz.instanceOf (f, jalview.api.analysis.ViewBasedAnalysisI)) {
+try {
+f = f.getClass ().newInstance ();
+(f).configureFromAlignmentView (this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap);
+} catch (q) {
+if (Clazz.exceptionOf (q, Exception)) {
+System.err.println ("Couldn't create a scoremodel instance for " + f.getName ());
+q.printStackTrace ();
+} else {
+throw q;
+}
+}
+this.b$["jalview.appletgui.TreePanel"].tree = new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, f, a, b);
+} else {
+this.b$["jalview.appletgui.TreePanel"].tree = new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, null, a, b);
+}}this.b$["jalview.appletgui.TreePanel"].tree.reCount (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
+this.b$["jalview.appletgui.TreePanel"].tree.findHeight (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree (this.b$["jalview.appletgui.TreePanel"].tree);
+if (this.newtree != null) {
+var a = this.newtree.HasDistances () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeDistances", this.newtree.HasDistances ());
+var b = this.newtree.HasBootstrap () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeBootstraps", this.newtree.HasBootstrap ());
+this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState (a);
+this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState (b);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap (b);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances (a);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders (this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showUnlinkedTreeNodes", false));
+}this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint ();
+this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree (this.b$["jalview.appletgui.TreePanel"].tree);
+});
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/appletgui/UserDefinedColours.class b/bin/jalview/appletgui/UserDefinedColours.class
index c53d7e0e2533370b79bf6587502e0e59209a3117..593d23d327f13bcd94953cab4d567298de1e4421 100644
GIT binary patch
delta 46
xcmeBeXY6ig+z@HOn7KL1!kLLpm4Q!9U10JOD_zFw&6lh~AtGABoAqqt*#J9(3_}0_
delta 48
zcmeBfXY6ff+z@HOn6){|!kLL(je%cHotJ6yVk=$7n#~ujLLow00!*8AY~$GgOq2{o
diff --git a/bin/jalview/appletgui/UserDefinedColours.js b/bin/jalview/appletgui/UserDefinedColours.js
index 2cc0d9b..a1b23f6 100644
--- a/bin/jalview/appletgui/UserDefinedColours.js
+++ b/bin/jalview/appletgui/UserDefinedColours.js
@@ -1,481 +1,481 @@
-Clazz.declarePackage ("jalview.appletgui");
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.FocusListener", "awt2swing.Button", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.GridLayout", "java.util.Vector"], "jalview.appletgui.UserDefinedColours", ["awt2swing.Frame", "jalview.appletgui.AnnotationColourChooser", "$.FeatureColourChooser", "$.FeatureRenderer", "$.FeatureSettings", "jalview.bin.JalviewLite", "jalview.schemes.ResidueProperties", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.Color", "$.Dialog", "$.Font", "$.Rectangle", "java.awt.event.MouseAdapter", "java.lang.Error"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.ap = null;
-this.seqGroup = null;
-this.selectedButton = null;
-this.oldColours = null;
-this.oldColourScheme = null;
-this.frame = null;
-this.jmol = null;
-this.dialog = null;
-this.caller = null;
-this.originalLabel = null;
-this.originalColour = null;
-this.R = 0;
-this.G = 0;
-this.B = 0;
-this.buttonPanel = null;
-this.gridLayout = null;
-this.okcancelPanel = null;
-this.okButton = null;
-this.applyButton = null;
-this.cancelButton = null;
-this.rScroller = null;
-this.label1 = null;
-this.rText = null;
-this.label4 = null;
-this.gScroller = null;
-this.gText = null;
-this.label5 = null;
-this.bScroller = null;
-this.bText = null;
-this.target = null;
-Clazz.instantialize (this, arguments);
-}, jalview.appletgui, "UserDefinedColours", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.FocusListener]);
-Clazz.prepareFields (c$, function () {
-this.oldColours = new java.util.Vector ();
-this.buttonPanel = new awt2swing.Panel ();
-this.gridLayout = new java.awt.GridLayout ();
-this.okcancelPanel = new awt2swing.Panel ();
-this.okButton = new awt2swing.Button ();
-this.applyButton = new awt2swing.Button ();
-this.cancelButton = new awt2swing.Button ();
-this.rScroller = new awt2swing.Scrollbar ();
-this.label1 = new awt2swing.Label ();
-this.rText = new awt2swing.TextField ();
-this.label4 = new awt2swing.Label ();
-this.gScroller = new awt2swing.Scrollbar ();
-this.gText = new awt2swing.TextField ();
-this.label5 = new awt2swing.Label ();
-this.bScroller = new awt2swing.Scrollbar ();
-this.bText = new awt2swing.TextField ();
-this.target = new awt2swing.Panel ();
-});
-Clazz.defineMethod (c$, "loadDefaultColours",
-function () {
-return null;
-});
-Clazz.makeConstructor (c$,
-function (ap, sg) {
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
-this.ap = ap;
-this.seqGroup = sg;
-if (this.seqGroup != null) {
-this.oldColourScheme = this.seqGroup.cs;
-} else {
-this.oldColourScheme = ap.av.getGlobalColourScheme ();
-}this.init ();
-}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceGroup");
-Clazz.makeConstructor (c$,
-function (jmol) {
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
-this.jmol = jmol;
-this.init ();
-}, "jalview.appletgui.AppletJmol");
-Clazz.makeConstructor (c$,
-function (fr, alignframe) {
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
-this.caller = fr;
-this.originalColour = fr.colourPanel.getBackground ();
-this.originalLabel = "Feature Colour";
-this.setForDialog ("Select Feature Colour", alignframe);
-this.setTargetColour (fr.colourPanel.getBackground ());
-this.dialog.setVisible (true);
-}, "jalview.appletgui.FeatureRenderer,awt2swing.Frame");
-Clazz.makeConstructor (c$,
-function (caller, col1, alignframe) {
-this.construct (caller, col1, alignframe, "Select Colour");
-}, "java.awt.Component,java.awt.Color,awt2swing.Frame");
-Clazz.makeConstructor (c$,
-function (caller, col1, alignframe, title) {
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
-this.caller = caller;
-this.originalColour = col1;
-this.originalLabel = title;
-this.setForDialog (title, alignframe);
-this.setTargetColour (col1);
-this.dialog.setVisible (true);
-}, "java.awt.Component,java.awt.Color,awt2swing.Frame,~S");
-Clazz.makeConstructor (c$,
-function (caller, label, colour) {
-this.construct (caller, label, colour, colour);
-}, "~O,~S,java.awt.Color");
-Clazz.makeConstructor (c$,
-function (me, type, graduatedColor) {
-this.construct (me, type, graduatedColor, graduatedColor.getMaxColor ());
-}, "jalview.appletgui.FeatureSettings,~S,jalview.schemes.GraduatedColor");
-Clazz.makeConstructor (c$,
-($fz = function (caller, label, ocolour, colour) {
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
-this.caller = caller;
-this.originalColour = ocolour;
-this.originalLabel = label;
-this.init ();
-this.remove (this.buttonPanel);
-this.setTargetColour (colour);
-this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 113, 400, 35));
-this.frame.setTitle (jalview.util.MessageManager.getString ("label.user_defined_colours") + " - " + label);
-this.frame.setSize (420, 200);
-}, $fz.isPrivate = true, $fz), "~O,~S,~O,java.awt.Color");
-Clazz.defineMethod (c$, "setForDialog",
-function (title, alignframe) {
-this.init ();
-this.frame.setVisible (false);
-this.remove (this.buttonPanel);
-if (Clazz.instanceOf (alignframe, awt2swing.Frame)) {
-this.dialog = new java.awt.Dialog (alignframe, title, true);
-} else {
-throw new Error (jalview.util.MessageManager.getString ("label.error_unsupported_owwner_user_colour_scheme"));
-}this.dialog.add (this);
-this.setSize (400, 123);
-this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 35));
-var height = 160 + alignframe.getInsets ().top + this.getInsets ().bottom;
-var width = 400;
-this.dialog.setBounds (alignframe.getBounds ().x + Clazz.doubleToInt ((alignframe.getSize ().width - width) / 2), alignframe.getBounds ().y + Clazz.doubleToInt ((alignframe.getSize ().height - height) / 2), width, height);
-}, "~S,java.awt.Container");
-Clazz.overrideMethod (c$, "actionPerformed",
-function (evt) {
-var source = evt.getSource ();
-if (source === this.okButton) {
-this.okButton_actionPerformed ();
-} else if (source === this.applyButton) {
-this.applyButton_actionPerformed ();
-} else if (source === this.cancelButton) {
-this.cancelButton_actionPerformed ();
-} else if (source === this.rText) {
-this.rText_actionPerformed ();
-} else if (source === this.gText) {
-this.gText_actionPerformed ();
-} else if (source === this.bText) {
-this.bText_actionPerformed ();
-}}, "java.awt.event.ActionEvent");
-Clazz.overrideMethod (c$, "adjustmentValueChanged",
-function (evt) {
-if (evt.getSource () === this.rScroller) {
-this.rScroller_adjustmentValueChanged ();
-} else if (evt.getSource () === this.gScroller) {
-this.gScroller_adjustmentValueChanged ();
-} else if (evt.getSource () === this.bScroller) {
-this.bScroller_adjustmentValueChanged ();
-}}, "java.awt.event.AdjustmentEvent");
-Clazz.defineMethod (c$, "init",
-function () {
-try {
-this.jbInit ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-this.frame = new awt2swing.Frame ();
-this.frame.add (this);
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.user_defined_colours"), 420, 345);
-if (this.seqGroup != null) {
-this.frame.setTitle (this.frame.getTitle () + " (" + this.seqGroup.getName () + ")");
-}for (var i = 0; i < 20; i++) {
-this.makeButton (jalview.schemes.ResidueProperties.aa2Triplet.get (jalview.schemes.ResidueProperties.aa[i]) + "", jalview.schemes.ResidueProperties.aa[i]);
-}
-this.makeButton ("B", "B");
-this.makeButton ("Z", "Z");
-this.makeButton ("X", "X");
-this.makeButton ("Gap", "'.','-',' '");
-this.validate ();
-});
-Clazz.defineMethod (c$, "rText_actionPerformed",
-function () {
-try {
-var i = Integer.parseInt (this.rText.getText ());
-this.rScroller.setValue (i);
-this.rScroller_adjustmentValueChanged ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "gText_actionPerformed",
-function () {
-try {
-var i = Integer.parseInt (this.gText.getText ());
-this.gScroller.setValue (i);
-this.gScroller_adjustmentValueChanged ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "bText_actionPerformed",
-function () {
-try {
-var i = Integer.parseInt (this.bText.getText ());
-this.bScroller.setValue (i);
-this.bScroller_adjustmentValueChanged ();
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-} else {
-throw ex;
-}
-}
-});
-Clazz.defineMethod (c$, "rScroller_adjustmentValueChanged",
-function () {
-this.R = this.rScroller.getValue ();
-this.rText.setText (this.R + "");
-this.colourChanged ();
-});
-Clazz.defineMethod (c$, "gScroller_adjustmentValueChanged",
-function () {
-this.G = this.gScroller.getValue ();
-this.gText.setText (this.G + "");
-this.colourChanged ();
-});
-Clazz.defineMethod (c$, "bScroller_adjustmentValueChanged",
-function () {
-this.B = this.bScroller.getValue ();
-this.bText.setText (this.B + "");
-this.colourChanged ();
-});
-Clazz.defineMethod (c$, "colourChanged",
-function () {
-var col = new java.awt.Color (this.R, this.G, this.B);
-this.target.setBackground (col);
-this.target.repaint ();
-if (this.selectedButton != null) {
-this.selectedButton.setBackground (col);
-this.selectedButton.repaint ();
-}});
-Clazz.defineMethod (c$, "setTargetColour",
-function (col) {
-this.R = col.getRed ();
-this.G = col.getGreen ();
-this.B = col.getBlue ();
-this.rScroller.setValue (this.R);
-this.gScroller.setValue (this.G);
-this.bScroller.setValue (this.B);
-this.rText.setText (this.R + "");
-this.gText.setText (this.G + "");
-this.bText.setText (this.B + "");
-this.colourChanged ();
-}, "java.awt.Color");
-Clazz.defineMethod (c$, "colourButtonPressed",
-function (e) {
-this.selectedButton = e.getSource ();
-this.setTargetColour (this.selectedButton.getBackground ());
-}, "java.awt.event.MouseEvent");
-Clazz.defineMethod (c$, "makeButton",
-function (label, aa) {
-var button = new awt2swing.Button ();
-var col = java.awt.Color.white;
-if (this.oldColourScheme != null) {
-try {
-col = this.oldColourScheme.findColour (aa.charAt (0), -1, null);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-}button.setBackground (col);
-this.oldColours.addElement (col);
-button.setLabel (label);
-button.setForeground (col.darker ().darker ().darker ());
-button.setFont ( new java.awt.Font ("Verdana", 1, 10));
-button.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.UserDefinedColours$1") ? 0 : jalview.appletgui.UserDefinedColours.$UserDefinedColours$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.UserDefinedColours$1, this, null)));
-this.buttonPanel.add (button, null);
-}, "~S,~S");
-Clazz.defineMethod (c$, "okButton_actionPerformed",
-function () {
-this.applyButton_actionPerformed ();
-if (this.dialog != null) {
-this.dialog.setVisible (false);
-}this.frame.setVisible (false);
-});
-Clazz.defineMethod (c$, "getColor",
-function () {
-return new java.awt.Color (this.R, this.G, this.B);
-});
-Clazz.defineMethod (c$, "applyButton_actionPerformed",
-function () {
-if (this.caller != null) {
-if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
-(this.caller).setUserColour (this.originalLabel, this.getColor ());
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
-if (this.originalLabel.equals ("Min Colour")) {
-(this.caller).minColour_actionPerformed (this.getColor ());
-} else {
-(this.caller).maxColour_actionPerformed (this.getColor ());
-}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
-(this.caller).colourPanel.updateColor (this.getColor ());
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
-if (this.originalLabel.indexOf ("inimum") > -1) {
-(this.caller).minColour_actionPerformed (this.getColor ());
-} else {
-(this.caller).maxColour_actionPerformed (this.getColor ());
-}}return;
-}var newColours = new Array (24);
-for (var i = 0; i < 24; i++) {
-var button = this.buttonPanel.getComponent (i);
-newColours[i] = button.getBackground ();
-}
-var ucs = new jalview.schemes.UserColourScheme (newColours);
-if (this.ap != null) {
-ucs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
-}if (this.ap != null) {
-if (this.seqGroup != null) {
-this.seqGroup.cs = ucs;
-} else {
-this.ap.av.setGlobalColourScheme (ucs);
-}this.ap.seqPanel.seqCanvas.img = null;
-this.ap.paintAlignment (true);
-} else if (this.jmol != null) {
-this.jmol.setJalviewColourScheme (ucs);
-}});
-Clazz.defineMethod (c$, "cancelButton_actionPerformed",
-function () {
-if (this.caller != null) {
-if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
-(this.caller).setUserColour (this.originalLabel, this.originalColour);
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
-if (this.originalLabel.equals ("Min Colour")) {
-(this.caller).minColour_actionPerformed (this.originalColour);
-} else {
-(this.caller).maxColour_actionPerformed (this.originalColour);
-}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
-(this.caller).colourPanel.updateColor (this.originalColour);
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
-if (this.originalLabel.indexOf ("inimum") > -1) {
-(this.caller).minColour_actionPerformed (this.originalColour);
-} else {
-(this.caller).maxColour_actionPerformed (this.originalColour);
-}}if (this.dialog != null) {
-this.dialog.setVisible (false);
-}this.frame.setVisible (false);
-return;
-}var newColours = new Array (24);
-for (var i = 0; i < 24; i++) {
-newColours[i] = this.oldColours.elementAt (i);
-this.buttonPanel.getComponent (i).setBackground (newColours[i]);
-}
-var ucs = new jalview.schemes.UserColourScheme (newColours);
-if (this.ap != null) {
-if (this.seqGroup != null) {
-this.seqGroup.cs = ucs;
-} else {
-this.ap.av.setGlobalColourScheme (ucs);
-}this.ap.paintAlignment (true);
-} else if (this.jmol != null) {
-this.jmol.setJalviewColourScheme (ucs);
-}this.frame.setVisible (false);
-});
-Clazz.defineMethod (c$, "jbInit",
-($fz = function () {
-this.setLayout (null);
-this.buttonPanel.setLayout (this.gridLayout);
-this.gridLayout.setColumns (6);
-this.gridLayout.setRows (4);
-this.okButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.okButton.setLabel (jalview.util.MessageManager.getString ("action.ok"));
-this.okButton.addActionListener (this);
-this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
-this.applyButton.addActionListener (this);
-this.cancelButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
-this.cancelButton.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
-this.cancelButton.addActionListener (this);
-this.setBackground ( new java.awt.Color (212, 208, 223));
-this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 265, 400, 35));
-this.buttonPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 142));
-this.rScroller.setMaximum (256);
-this.rScroller.setMinimum (0);
-this.rScroller.setOrientation (0);
-this.rScroller.setUnitIncrement (1);
-this.rScroller.setVisibleAmount (1);
-this.rScroller.setBounds ( new java.awt.Rectangle (36, 27, 119, 19));
-this.rScroller.addAdjustmentListener (this);
-this.label1.setAlignment (4);
-this.label1.setText ("R");
-this.label1.setBounds ( new java.awt.Rectangle (19, 30, 16, 15));
-this.rText.setFont ( new java.awt.Font ("Dialog", 0, 10));
-this.rText.setText ("0 ");
-this.rText.setBounds ( new java.awt.Rectangle (156, 27, 53, 19));
-this.rText.addActionListener (this);
-this.rText.addFocusListener (this);
-this.label4.setAlignment (4);
-this.label4.setText ("G");
-this.label4.setBounds ( new java.awt.Rectangle (15, 56, 20, 15));
-this.gScroller.setMaximum (256);
-this.gScroller.setMinimum (0);
-this.gScroller.setOrientation (0);
-this.gScroller.setUnitIncrement (1);
-this.gScroller.setVisibleAmount (1);
-this.gScroller.setBounds ( new java.awt.Rectangle (35, 52, 120, 20));
-this.gScroller.addAdjustmentListener (this);
-this.gText.setFont ( new java.awt.Font ("Dialog", 0, 10));
-this.gText.setText ("0 ");
-this.gText.setBounds ( new java.awt.Rectangle (156, 52, 53, 20));
-this.gText.addActionListener (this);
-this.gText.addFocusListener (this);
-this.label5.setAlignment (4);
-this.label5.setText ("B");
-this.label5.setBounds ( new java.awt.Rectangle (14, 82, 20, 15));
-this.bScroller.setMaximum (256);
-this.bScroller.setMinimum (0);
-this.bScroller.setOrientation (0);
-this.bScroller.setUnitIncrement (1);
-this.bScroller.setVisibleAmount (1);
-this.bScroller.setBounds ( new java.awt.Rectangle (35, 78, 120, 20));
-this.bScroller.addAdjustmentListener (this);
-this.bText.setFont ( new java.awt.Font ("Dialog", 0, 10));
-this.bText.setText ("0 ");
-this.bText.setBounds ( new java.awt.Rectangle (157, 78, 52, 20));
-this.bText.addActionListener (this);
-this.bText.addFocusListener (this);
-this.target.setBackground (java.awt.Color.black);
-this.target.setBounds ( new java.awt.Rectangle (229, 26, 134, 79));
-this.add (this.okcancelPanel, null);
-this.okcancelPanel.add (this.okButton, null);
-this.okcancelPanel.add (this.applyButton, null);
-this.okcancelPanel.add (this.cancelButton, null);
-this.add (this.rText);
-this.add (this.gText);
-this.add (this.bText);
-this.add (this.buttonPanel, null);
-this.add (this.target, null);
-this.add (this.gScroller);
-this.add (this.rScroller);
-this.add (this.bScroller);
-this.add (this.label5);
-this.add (this.label4);
-this.add (this.label1);
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "focusGained",
-function (e) {
-}, "java.awt.event.FocusEvent");
-Clazz.overrideMethod (c$, "focusLost",
-function (e) {
-var c = e.getComponent ();
-if (c === this.rText) {
-this.rText_actionPerformed ();
-} else {
-if (c === this.gText) {
-this.gText_actionPerformed ();
-} else {
-if (c === this.bText) {
-this.bText_actionPerformed ();
-}}}}, "java.awt.event.FocusEvent");
-c$.$UserDefinedColours$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.appletgui, "UserDefinedColours$1", java.awt.event.MouseAdapter);
-Clazz.overrideMethod (c$, "mousePressed",
-function (e) {
-this.b$["jalview.appletgui.UserDefinedColours"].colourButtonPressed (e);
-}, "java.awt.event.MouseEvent");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.FocusListener", "awt2swing.Button", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.GridLayout", "java.util.Vector"], "jalview.appletgui.UserDefinedColours", ["awt2swing.Frame", "jalview.appletgui.AnnotationColourChooser", "$.FeatureColourChooser", "$.FeatureRenderer", "$.FeatureSettings", "jalview.bin.JalviewLite", "jalview.schemes.ResidueProperties", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.Color", "$.Dialog", "$.Font", "$.Rectangle", "java.awt.event.MouseAdapter", "java.lang.Error"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ap = null;
+this.seqGroup = null;
+this.selectedButton = null;
+this.oldColours = null;
+this.oldColourScheme = null;
+this.frame = null;
+this.jmol = null;
+this.dialog = null;
+this.caller = null;
+this.originalLabel = null;
+this.originalColour = null;
+this.R = 0;
+this.G = 0;
+this.B = 0;
+this.buttonPanel = null;
+this.gridLayout = null;
+this.okcancelPanel = null;
+this.okButton = null;
+this.applyButton = null;
+this.cancelButton = null;
+this.rScroller = null;
+this.label1 = null;
+this.rText = null;
+this.label4 = null;
+this.gScroller = null;
+this.gText = null;
+this.label5 = null;
+this.bScroller = null;
+this.bText = null;
+this.target = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "UserDefinedColours", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.FocusListener]);
+Clazz.prepareFields (c$, function () {
+this.oldColours = new java.util.Vector ();
+this.buttonPanel = new awt2swing.Panel ();
+this.gridLayout = new java.awt.GridLayout ();
+this.okcancelPanel = new awt2swing.Panel ();
+this.okButton = new awt2swing.Button ();
+this.applyButton = new awt2swing.Button ();
+this.cancelButton = new awt2swing.Button ();
+this.rScroller = new awt2swing.Scrollbar ();
+this.label1 = new awt2swing.Label ();
+this.rText = new awt2swing.TextField ();
+this.label4 = new awt2swing.Label ();
+this.gScroller = new awt2swing.Scrollbar ();
+this.gText = new awt2swing.TextField ();
+this.label5 = new awt2swing.Label ();
+this.bScroller = new awt2swing.Scrollbar ();
+this.bText = new awt2swing.TextField ();
+this.target = new awt2swing.Panel ();
+});
+Clazz.defineMethod (c$, "loadDefaultColours",
+function () {
+return null;
+});
+Clazz.makeConstructor (c$,
+function (ap, sg) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.ap = ap;
+this.seqGroup = sg;
+if (this.seqGroup != null) {
+this.oldColourScheme = this.seqGroup.cs;
+} else {
+this.oldColourScheme = ap.av.getGlobalColourScheme ();
+}this.init ();
+}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceGroup");
+Clazz.makeConstructor (c$,
+function (jmol) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.jmol = jmol;
+this.init ();
+}, "jalview.appletgui.AppletJmol");
+Clazz.makeConstructor (c$,
+function (fr, alignframe) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = fr;
+this.originalColour = fr.colourPanel.getBackground ();
+this.originalLabel = "Feature Colour";
+this.setForDialog ("Select Feature Colour", alignframe);
+this.setTargetColour (fr.colourPanel.getBackground ());
+this.dialog.setVisible (true);
+}, "jalview.appletgui.FeatureRenderer,awt2swing.Frame");
+Clazz.makeConstructor (c$,
+function (caller, col1, alignframe) {
+this.construct (caller, col1, alignframe, "Select Colour");
+}, "java.awt.Component,java.awt.Color,awt2swing.Frame");
+Clazz.makeConstructor (c$,
+function (caller, col1, alignframe, title) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = caller;
+this.originalColour = col1;
+this.originalLabel = title;
+this.setForDialog (title, alignframe);
+this.setTargetColour (col1);
+this.dialog.setVisible (true);
+}, "java.awt.Component,java.awt.Color,awt2swing.Frame,~S");
+Clazz.makeConstructor (c$,
+function (caller, label, colour) {
+this.construct (caller, label, colour, colour);
+}, "~O,~S,java.awt.Color");
+Clazz.makeConstructor (c$,
+function (me, type, graduatedColor) {
+this.construct (me, type, graduatedColor, graduatedColor.getMaxColor ());
+}, "jalview.appletgui.FeatureSettings,~S,jalview.schemes.GraduatedColor");
+Clazz.makeConstructor (c$,
+($fz = function (caller, label, ocolour, colour) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = caller;
+this.originalColour = ocolour;
+this.originalLabel = label;
+this.init ();
+this.remove (this.buttonPanel);
+this.setTargetColour (colour);
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 113, 400, 35));
+this.frame.setTitle (jalview.util.MessageManager.getString ("label.user_defined_colours") + " - " + label);
+this.frame.setSize (420, 200);
+}, $fz.isPrivate = true, $fz), "~O,~S,~O,java.awt.Color");
+Clazz.defineMethod (c$, "setForDialog",
+function (title, alignframe) {
+this.init ();
+this.frame.setVisible (false);
+this.remove (this.buttonPanel);
+if (Clazz.instanceOf (alignframe, awt2swing.Frame)) {
+this.dialog = new java.awt.Dialog (alignframe, title, true);
+} else {
+throw new Error (jalview.util.MessageManager.getString ("label.error_unsupported_owwner_user_colour_scheme"));
+}this.dialog.add (this);
+this.setSize (400, 123);
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 35));
+var height = 160 + alignframe.getInsets ().top + this.getInsets ().bottom;
+var width = 400;
+this.dialog.setBounds (alignframe.getBounds ().x + Clazz.doubleToInt ((alignframe.getSize ().width - width) / 2), alignframe.getBounds ().y + Clazz.doubleToInt ((alignframe.getSize ().height - height) / 2), width, height);
+}, "~S,java.awt.Container");
+Clazz.overrideMethod (c$, "actionPerformed",
+function (evt) {
+var source = evt.getSource ();
+if (source === this.okButton) {
+this.okButton_actionPerformed ();
+} else if (source === this.applyButton) {
+this.applyButton_actionPerformed ();
+} else if (source === this.cancelButton) {
+this.cancelButton_actionPerformed ();
+} else if (source === this.rText) {
+this.rText_actionPerformed ();
+} else if (source === this.gText) {
+this.gText_actionPerformed ();
+} else if (source === this.bText) {
+this.bText_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged",
+function (evt) {
+if (evt.getSource () === this.rScroller) {
+this.rScroller_adjustmentValueChanged ();
+} else if (evt.getSource () === this.gScroller) {
+this.gScroller_adjustmentValueChanged ();
+} else if (evt.getSource () === this.bScroller) {
+this.bScroller_adjustmentValueChanged ();
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "init",
+function () {
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.frame = new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.user_defined_colours"), 420, 345);
+if (this.seqGroup != null) {
+this.frame.setTitle (this.frame.getTitle () + " (" + this.seqGroup.getName () + ")");
+}for (var i = 0; i < 20; i++) {
+this.makeButton (jalview.schemes.ResidueProperties.aa2Triplet.get (jalview.schemes.ResidueProperties.aa[i]) + "", jalview.schemes.ResidueProperties.aa[i]);
+}
+this.makeButton ("B", "B");
+this.makeButton ("Z", "Z");
+this.makeButton ("X", "X");
+this.makeButton ("Gap", "'.','-',' '");
+this.validate ();
+});
+Clazz.defineMethod (c$, "rText_actionPerformed",
+function () {
+try {
+var i = Integer.parseInt (this.rText.getText ());
+this.rScroller.setValue (i);
+this.rScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "gText_actionPerformed",
+function () {
+try {
+var i = Integer.parseInt (this.gText.getText ());
+this.gScroller.setValue (i);
+this.gScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "bText_actionPerformed",
+function () {
+try {
+var i = Integer.parseInt (this.bText.getText ());
+this.bScroller.setValue (i);
+this.bScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "rScroller_adjustmentValueChanged",
+function () {
+this.R = this.rScroller.getValue ();
+this.rText.setText (this.R + "");
+this.colourChanged ();
+});
+Clazz.defineMethod (c$, "gScroller_adjustmentValueChanged",
+function () {
+this.G = this.gScroller.getValue ();
+this.gText.setText (this.G + "");
+this.colourChanged ();
+});
+Clazz.defineMethod (c$, "bScroller_adjustmentValueChanged",
+function () {
+this.B = this.bScroller.getValue ();
+this.bText.setText (this.B + "");
+this.colourChanged ();
+});
+Clazz.defineMethod (c$, "colourChanged",
+function () {
+var col = new java.awt.Color (this.R, this.G, this.B);
+this.target.setBackground (col);
+this.target.repaint ();
+if (this.selectedButton != null) {
+this.selectedButton.setBackground (col);
+this.selectedButton.repaint ();
+}});
+Clazz.defineMethod (c$, "setTargetColour",
+function (col) {
+this.R = col.getRed ();
+this.G = col.getGreen ();
+this.B = col.getBlue ();
+this.rScroller.setValue (this.R);
+this.gScroller.setValue (this.G);
+this.bScroller.setValue (this.B);
+this.rText.setText (this.R + "");
+this.gText.setText (this.G + "");
+this.bText.setText (this.B + "");
+this.colourChanged ();
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "colourButtonPressed",
+function (e) {
+this.selectedButton = e.getSource ();
+this.setTargetColour (this.selectedButton.getBackground ());
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "makeButton",
+function (label, aa) {
+var button = new awt2swing.Button ();
+var col = java.awt.Color.white;
+if (this.oldColourScheme != null) {
+try {
+col = this.oldColourScheme.findColour (aa.charAt (0), -1, null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}button.setBackground (col);
+this.oldColours.addElement (col);
+button.setLabel (label);
+button.setForeground (col.darker ().darker ().darker ());
+button.setFont ( new java.awt.Font ("Verdana", 1, 10));
+button.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.UserDefinedColours$1") ? 0 : jalview.appletgui.UserDefinedColours.$UserDefinedColours$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.UserDefinedColours$1, this, null)));
+this.buttonPanel.add (button, null);
+}, "~S,~S");
+Clazz.defineMethod (c$, "okButton_actionPerformed",
+function () {
+this.applyButton_actionPerformed ();
+if (this.dialog != null) {
+this.dialog.setVisible (false);
+}this.frame.setVisible (false);
+});
+Clazz.defineMethod (c$, "getColor",
+function () {
+return new java.awt.Color (this.R, this.G, this.B);
+});
+Clazz.defineMethod (c$, "applyButton_actionPerformed",
+function () {
+if (this.caller != null) {
+if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
+(this.caller).setUserColour (this.originalLabel, this.getColor ());
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
+if (this.originalLabel.equals ("Min Colour")) {
+(this.caller).minColour_actionPerformed (this.getColor ());
+} else {
+(this.caller).maxColour_actionPerformed (this.getColor ());
+}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
+(this.caller).colourPanel.updateColor (this.getColor ());
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
+if (this.originalLabel.indexOf ("inimum") > -1) {
+(this.caller).minColour_actionPerformed (this.getColor ());
+} else {
+(this.caller).maxColour_actionPerformed (this.getColor ());
+}}return;
+}var newColours = new Array (24);
+for (var i = 0; i < 24; i++) {
+var button = this.buttonPanel.getComponent (i);
+newColours[i] = button.getBackground ();
+}
+var ucs = new jalview.schemes.UserColourScheme (newColours);
+if (this.ap != null) {
+ucs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
+}if (this.ap != null) {
+if (this.seqGroup != null) {
+this.seqGroup.cs = ucs;
+} else {
+this.ap.av.setGlobalColourScheme (ucs);
+}this.ap.seqPanel.seqCanvas.img = null;
+this.ap.paintAlignment (true);
+} else if (this.jmol != null) {
+this.jmol.setJalviewColourScheme (ucs);
+}});
+Clazz.defineMethod (c$, "cancelButton_actionPerformed",
+function () {
+if (this.caller != null) {
+if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
+(this.caller).setUserColour (this.originalLabel, this.originalColour);
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
+if (this.originalLabel.equals ("Min Colour")) {
+(this.caller).minColour_actionPerformed (this.originalColour);
+} else {
+(this.caller).maxColour_actionPerformed (this.originalColour);
+}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
+(this.caller).colourPanel.updateColor (this.originalColour);
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
+if (this.originalLabel.indexOf ("inimum") > -1) {
+(this.caller).minColour_actionPerformed (this.originalColour);
+} else {
+(this.caller).maxColour_actionPerformed (this.originalColour);
+}}if (this.dialog != null) {
+this.dialog.setVisible (false);
+}this.frame.setVisible (false);
+return;
+}var newColours = new Array (24);
+for (var i = 0; i < 24; i++) {
+newColours[i] = this.oldColours.elementAt (i);
+this.buttonPanel.getComponent (i).setBackground (newColours[i]);
+}
+var ucs = new jalview.schemes.UserColourScheme (newColours);
+if (this.ap != null) {
+if (this.seqGroup != null) {
+this.seqGroup.cs = ucs;
+} else {
+this.ap.av.setGlobalColourScheme (ucs);
+}this.ap.paintAlignment (true);
+} else if (this.jmol != null) {
+this.jmol.setJalviewColourScheme (ucs);
+}this.frame.setVisible (false);
+});
+Clazz.defineMethod (c$, "jbInit",
+($fz = function () {
+this.setLayout (null);
+this.buttonPanel.setLayout (this.gridLayout);
+this.gridLayout.setColumns (6);
+this.gridLayout.setRows (4);
+this.okButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.okButton.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.okButton.addActionListener (this);
+this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
+this.applyButton.addActionListener (this);
+this.cancelButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.cancelButton.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancelButton.addActionListener (this);
+this.setBackground ( new java.awt.Color (212, 208, 223));
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 265, 400, 35));
+this.buttonPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 142));
+this.rScroller.setMaximum (256);
+this.rScroller.setMinimum (0);
+this.rScroller.setOrientation (0);
+this.rScroller.setUnitIncrement (1);
+this.rScroller.setVisibleAmount (1);
+this.rScroller.setBounds ( new java.awt.Rectangle (36, 27, 119, 19));
+this.rScroller.addAdjustmentListener (this);
+this.label1.setAlignment (4);
+this.label1.setText ("R");
+this.label1.setBounds ( new java.awt.Rectangle (19, 30, 16, 15));
+this.rText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.rText.setText ("0 ");
+this.rText.setBounds ( new java.awt.Rectangle (156, 27, 53, 19));
+this.rText.addActionListener (this);
+this.rText.addFocusListener (this);
+this.label4.setAlignment (4);
+this.label4.setText ("G");
+this.label4.setBounds ( new java.awt.Rectangle (15, 56, 20, 15));
+this.gScroller.setMaximum (256);
+this.gScroller.setMinimum (0);
+this.gScroller.setOrientation (0);
+this.gScroller.setUnitIncrement (1);
+this.gScroller.setVisibleAmount (1);
+this.gScroller.setBounds ( new java.awt.Rectangle (35, 52, 120, 20));
+this.gScroller.addAdjustmentListener (this);
+this.gText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.gText.setText ("0 ");
+this.gText.setBounds ( new java.awt.Rectangle (156, 52, 53, 20));
+this.gText.addActionListener (this);
+this.gText.addFocusListener (this);
+this.label5.setAlignment (4);
+this.label5.setText ("B");
+this.label5.setBounds ( new java.awt.Rectangle (14, 82, 20, 15));
+this.bScroller.setMaximum (256);
+this.bScroller.setMinimum (0);
+this.bScroller.setOrientation (0);
+this.bScroller.setUnitIncrement (1);
+this.bScroller.setVisibleAmount (1);
+this.bScroller.setBounds ( new java.awt.Rectangle (35, 78, 120, 20));
+this.bScroller.addAdjustmentListener (this);
+this.bText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.bText.setText ("0 ");
+this.bText.setBounds ( new java.awt.Rectangle (157, 78, 52, 20));
+this.bText.addActionListener (this);
+this.bText.addFocusListener (this);
+this.target.setBackground (java.awt.Color.black);
+this.target.setBounds ( new java.awt.Rectangle (229, 26, 134, 79));
+this.add (this.okcancelPanel, null);
+this.okcancelPanel.add (this.okButton, null);
+this.okcancelPanel.add (this.applyButton, null);
+this.okcancelPanel.add (this.cancelButton, null);
+this.add (this.rText);
+this.add (this.gText);
+this.add (this.bText);
+this.add (this.buttonPanel, null);
+this.add (this.target, null);
+this.add (this.gScroller);
+this.add (this.rScroller);
+this.add (this.bScroller);
+this.add (this.label5);
+this.add (this.label4);
+this.add (this.label1);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "focusGained",
+function (e) {
+}, "java.awt.event.FocusEvent");
+Clazz.overrideMethod (c$, "focusLost",
+function (e) {
+var c = e.getComponent ();
+if (c === this.rText) {
+this.rText_actionPerformed ();
+} else {
+if (c === this.gText) {
+this.gText_actionPerformed ();
+} else {
+if (c === this.bText) {
+this.bText_actionPerformed ();
+}}}}, "java.awt.event.FocusEvent");
+c$.$UserDefinedColours$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "UserDefinedColours$1", java.awt.event.MouseAdapter);
+Clazz.overrideMethod (c$, "mousePressed",
+function (e) {
+this.b$["jalview.appletgui.UserDefinedColours"].colourButtonPressed (e);
+}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/bin/Cache.js b/bin/jalview/bin/Cache.js
index b2a7cae..3013f58 100644
--- a/bin/jalview/bin/Cache.js
+++ b/bin/jalview/bin/Cache.js
@@ -1,29 +1,29 @@
-Clazz.declarePackage ("jalview.bin");
-c$ = Clazz.decorateAsClass (function () {
-if (!Clazz.isClassDefined ("jalview.bin.Cache.Log")) {
-jalview.bin.Cache.$Cache$Log$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.bin, "Cache");
-c$.getDefault = Clazz.defineMethod (c$, "getDefault",
-function (string, string2) {
-return null;
-}, "~S,~S");
-c$.$Cache$Log$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-Clazz.instantialize (this, arguments);
-}, jalview.bin.Cache, "Log");
-Clazz.defineMethod (c$, "error",
-function (a) {
-}, "~S");
-Clazz.defineMethod (c$, "isDebugEnabled",
-function () {
-return false;
-});
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"CASTORLOGLEVEL", null,
-"log", null);
+Clazz.declarePackage ("jalview.bin");
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.bin.Cache.Log")) {
+jalview.bin.Cache.$Cache$Log$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.bin, "Cache");
+c$.getDefault = Clazz.defineMethod (c$, "getDefault",
+function (string, string2) {
+return null;
+}, "~S,~S");
+c$.$Cache$Log$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.bin.Cache, "Log");
+Clazz.defineMethod (c$, "error",
+function (a) {
+}, "~S");
+Clazz.defineMethod (c$, "isDebugEnabled",
+function () {
+return false;
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"CASTORLOGLEVEL", null,
+"log", null);
diff --git a/bin/jalview/bin/JalviewLite$4.class b/bin/jalview/bin/JalviewLite$4.class
index 09353ffdf84fc88e703e3246ace3a756cb725b31..884af19eb9a936cacbe2e117efc2e06803f378f6 100644
GIT binary patch
delta 24
gcmdnRzmtE%G&aV6lc%$NVdG?A`pytPc@nz@0C!#pyZ`_I
delta 25
hcmdnVzl(pvG&aWnlc%$NVdr9C{>>2MGd*$M$`RR#3`
diff --git a/bin/jalview/bin/JalviewLite$LoadingThread.class b/bin/jalview/bin/JalviewLite$LoadingThread.class
index 6ffac37375320fca723ab6fd9057595c2ef345e7..4dc6751b21f72934fb454ff3f78ba733c567db79 100644
GIT binary patch
delta 122
zcmV-=0EPeEc;tAnH7fxKvoO+M3W0VQkI4tX8-^I
delta 138
zcmaD-akpZFsWv0$W;5+xR_1C3$;rnIN|>0KHd`BRWMNd?{MJ;2QJRN=$TI$62xMo9{>8xNv^mhCjfpXP^9?I0
nM#TUI?*9z349x5djO+~B>`cpmG$S{oBhWN&5W{J*kWCN(W>X$p
diff --git a/bin/jalview/bin/JalviewLite.class b/bin/jalview/bin/JalviewLite.class
index ae19296f78a267d582476954c2bed9b6abe49b54..7d7000785d2b23642896449277f1e882e9a9d94b 100644
GIT binary patch
delta 193
zcmX@QiD}O!rVWfyjHfm;MYXXrJ2R+G?oRAsasJ6*Hd!{wnbBf%QqnC!#&?@-OD-}p
z%P??G7AzBH)ZDCArq0HgyVgko;P}hH&dA8)%g*A%z#k0MCCdp^s1H||znQZs2xJr6zm%&7)c4@9~QjLhkiCzfe!4k`P}%9yv=tHz2&
zz?ebQK-`I)sX+KQLx7|m)8r`)ih|-y{0vMi<_sYWj0~X+42*`Gk2Xj%s)#ah{$*fi
zWaRN>XYpa+7XWFKF=DomU6
kn|BE@F4(L!ErpTUnt^lj#OeBMI!rRMf=-){Os`-B0FdN5SpWb4
diff --git a/bin/jalview/bin/JalviewLite.js b/bin/jalview/bin/JalviewLite.js
index 23d66b7..1049dcb 100644
--- a/bin/jalview/bin/JalviewLite.js
+++ b/bin/jalview/bin/JalviewLite.js
@@ -1,1617 +1,1617 @@
-Clazz.declarePackage ("jalview.bin");
-Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.javascript.JalviewLiteJsApi", "java.lang.Thread", "javax.swing.JApplet", "jalview.util.MessageManager", "java.util.Hashtable", "$.Vector", "javax.swing.JButton"], "jalview.bin.JalviewLite", ["jalview.analysis.SequenceIdMatcher", "jalview.appletgui.AlignFrame", "$.EmbmenuFrame", "$.FeatureSettings", "$.SplitFrame", "jalview.datamodel.Alignment", "$.AlignmentOrder", "$.ColumnSelection", "$.PDBEntry", "$.SequenceGroup", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.FileParse", "$.IdentifyFile", "$.JnetAnnotationMaker", "$.NewickFile", "jalview.javascript.JSFunctionExec", "$.JsSelectionSender", "$.MouseOverListener", "$.MouseOverStructureListener", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.UserColourScheme", "jalview.structure.SelectionListener", "$.StructureSelectionManager", "java.awt.Color", "$.EventQueue", "$.Font", "java.awt.event.ActionListener", "$.WindowAdapter", "java.io.BufferedReader", "$.InputStreamReader", "java.lang.Error", "$.StringBuffer", "java.net.URL", "java.util.StringTokenizer", "netscape.javascript.JSObject"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.embedded = false;
-this.enableSplitFrame = false;
-this.showButton = true;
-this.checkForJmol = true;
-this.jalviewServletURL = null;
-this.startupFile = "No file";
-this.helpUrl = null;
-this.externalstructureviewer = null;
-this.sep = null;
-this.rgb = null;
-this.labelColour = null;
-this.initjscallback = null;
-this.pdbFile = null;
-this.sequence = null;
-this.jnetFile = null;
-this.annotations = null;
-this.hideFeatureGroups = null;
-this.showFeatureGroups = null;
-this.features = null;
-this.showFeatureSettings = null;
-this.scoreFile = null;
-this.treeFile = null;
-this.windowWidth = null;
-this.windowHeight = null;
-this.defaultColour = null;
-this.sortBy = null;
-this.wrap = null;
-this.centrecolumnlabels = null;
-this.userDefinedColour = null;
-this.widthScale = null;
-this.heightScale = null;
-this.upperCase = null;
-this.file2 = null;
-this.javascriptListeners = null;
-this.jsFunctionExec = null;
-this.fileFound = true;
-this.launcher = null;
-this.currentAlignFrame = null;
-this.initialAlignFrame = null;
-this.checkedForJmol = false;
-this.jmolAvailable = false;
-this.alignPdbStructures = false;
-this.useXtrnalSviewer = false;
-this.haveShownLoadMessage = false;
-if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadJmolThread")) {
-jalview.bin.JalviewLite.$JalviewLite$LoadJmolThread$ ();
-}
-if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadingThread")) {
-jalview.bin.JalviewLite.$JalviewLite$LoadingThread$ ();
-}
-this.separator = "\u00ac";
-this.jsfallbackEnabled = false;
-this.jshashes = null;
-this.jsmessages = null;
-this.jsExecQueue = null;
-Clazz.instantialize (this, arguments);
-}, jalview.bin, "JalviewLite", javax.swing.JApplet, [jalview.api.StructureSelectionManagerProvider, jalview.javascript.JalviewLiteJsApi]);
-Clazz.prepareFields (c$, function () {
-this.javascriptListeners = new java.util.Vector ();
-this.launcher = new javax.swing.JButton (jalview.util.MessageManager.getString ("label.start_jalview"));
-this.jshashes = new java.util.Hashtable ();
-this.jsmessages = new java.util.Hashtable ();
-this.jsExecQueue = new java.util.Vector ();
-});
-Clazz.defineMethod (c$, "setParams",
-($fz = function () {
-jalview.bin.JalviewLite.debug = "true".equalsIgnoreCase (this.getParameter ("debug"));
-this.enableSplitFrame = "true".equalsIgnoreCase (this.getParameter ("enableSplitFrame"));
-this.embedded = "true".equalsIgnoreCase (this.getParameter ("embedded"));
-this.showButton = !"false".equalsIgnoreCase (this.getParameter ("showbutton"));
-this.jalviewServletURL = this.getParameter ("APPLICATION_URL");
-this.startupFile = this.getParameter ("file");
-this.helpUrl = this.getParameter ("jalviewhelpurl");
-this.externalstructureviewer = this.getParameter ("externalstructureviewer");
-this.checkForJmol = !"true".equals (this.getParameter ("nojmol"));
-this.sep = this.getParameter ("separator");
-this.rgb = this.getParameter ("RGB");
-this.labelColour = this.getParameter ("label");
-this.initjscallback = this.getParameter ("oninit");
-this.pdbFile = this.getParameter ("PDBFILE");
-this.sequence = this.getParameter ("PDBSEQ");
-this.jnetFile = this.getParameter ("jnetfile");
-this.annotations = this.getParameter ("annotations");
-this.hideFeatureGroups = this.getParameter ("hidefeaturegroups");
-this.showFeatureGroups = this.getParameter ("showfeaturegroups");
-this.features = this.getParameter ("features");
-this.showFeatureSettings = this.getParameter ("showFeatureSettings");
-this.scoreFile = this.getParameter ("scoreFile");
-this.treeFile = this.getParameter ("tree");
-if (this.treeFile == null) this.treeFile = this.getParameter ("treeFile");
-this.windowWidth = this.getParameter ("windowWidth");
-this.windowHeight = this.getParameter ("windowHeight");
-this.defaultColour = this.getParameter ("defaultColour");
-this.sortBy = this.getParameter ("sortBy");
-this.wrap = this.getParameter ("wrap");
-this.centrecolumnlabels = this.getParameter ("centrecolumnlabels");
-this.userDefinedColour = this.getParameter ("userDefinedColour");
-this.widthScale = this.getParameter ("widthScale");
-this.heightScale = this.getParameter ("heightScale");
-this.upperCase = this.getParameter ("upperCase");
-this.file2 = this.getParameter ("file2");
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "getDefaultParameter",
-function (name, def) {
-var stn;
-if ((stn = this.getParameter (name)) == null) {
-return def;
-}if (stn.toLowerCase ().equals ("true")) {
-return true;
-}return false;
-}, "~S,~B");
-Clazz.defineMethod (c$, "getLinkParams",
-function (links) {
-var label;
-var url;
-for (var i = 1; i < 10; i++) {
-label = this.getParameter ("linkLabel_" + i);
-url = this.getParameter ("linkURL_" + i);
-if (label != null && url != null) {
-links.addElement (label + "|" + url);
-}}
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "getStructureSelectionManager",
-function () {
-return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this);
-});
-Clazz.defineMethod (c$, "getSelectedSequences",
-function () {
-return this.getSelectedSequencesFrom (this.getDefaultTargetFrame ());
-});
-Clazz.defineMethod (c$, "getSelectedSequences",
-function (sep) {
-return this.getSelectedSequencesFrom (this.getDefaultTargetFrame (), sep);
-}, "~S");
-Clazz.defineMethod (c$, "getSelectedSequencesFrom",
-function (alf) {
-return this.getSelectedSequencesFrom (alf, this.separator);
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "getSelectedSequencesFrom",
-function (alf, sep) {
-var result = new StringBuffer ("");
-if (sep == null || sep.length == 0) {
-sep = this.separator;
-}if (alf.viewport.getSelectionGroup () != null) {
-var seqs = alf.viewport.getSelectionGroup ().getSequencesInOrder (alf.viewport.getAlignment ());
-for (var i = 0; i < seqs.length; i++) {
-result.append (seqs[i].getName ());
-result.append (sep);
-}
-}return result.toString ();
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "highlight",
-function (sequenceId, position, alignedPosition) {
-this.highlightIn (this.getDefaultTargetFrame (), sequenceId, position, alignedPosition);
-}, "~S,~S,~S");
-Clazz.overrideMethod (c$, "highlightIn",
-function (alf, sequenceId, position, alignedPosition) {
-var matcher = new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
-var sq = matcher.findIdMatch (sequenceId);
-if (sq != null) {
-var apos = -1;
-try {
-apos = new Integer (position).intValue ();
-apos--;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-return;
-} else {
-throw ex;
-}
-}
-var me = this;
-var pos = apos;
-if (alignedPosition != null && (alignedPosition.trim ().length == 0 || alignedPosition.toLowerCase ().indexOf ("false") > -1)) {
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$1") ? 0 : jalview.bin.JalviewLite.$JalviewLite$1$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$1, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));
-} else {
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$2") ? 0 : jalview.bin.JalviewLite.$JalviewLite$2$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$2, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));
-}}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
-Clazz.defineMethod (c$, "select",
-function (sequenceIds, columns) {
-this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, this.separator);
-}, "~S,~S");
-Clazz.defineMethod (c$, "select",
-function (sequenceIds, columns, sep) {
-this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, sep);
-}, "~S,~S,~S");
-Clazz.defineMethod (c$, "selectIn",
-function (alf, sequenceIds, columns) {
-this.selectIn (alf, sequenceIds, columns, this.separator);
-}, "jalview.appletgui.AlignFrame,~S,~S");
-Clazz.defineMethod (c$, "selectIn",
-function (alf, sequenceIds, columns, sep) {
-if (sep == null || sep.length == 0) {
-sep = this.separator;
-} else {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Selecting region using separator string '" + this.separator + "'");
-}}var ids = this.separatorListToArray (sequenceIds, sep);
-var cols = this.separatorListToArray (columns, sep);
-var sel = new jalview.datamodel.SequenceGroup ();
-var csel = new jalview.datamodel.ColumnSelection ();
-var al = alf.viewport.getAlignment ();
-var matcher = new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
-var start = 0;
-var end = al.getWidth ();
-var alw = al.getWidth ();
-var seqsfound = true;
-if (ids != null && ids.length > 0) {
-seqsfound = false;
-for (var i = 0; i < ids.length; i++) {
-if (ids[i].trim ().length == 0) {
-continue;
-}var sq = matcher.findIdMatch (ids[i]);
-if (sq != null) {
-seqsfound = true;
-sel.addSequence (sq, false);
-}}
-}var inseqpos = false;
-if (cols != null && cols.length > 0) {
-var seset = false;
-for (var i = 0; i < cols.length; i++) {
-var cl = cols[i].trim ();
-if (cl.length == 0) {
-continue;
-}var p;
-if ((p = cl.indexOf ("-")) > -1) {
-var from = -1;
-var to = -1;
-try {
-from = new Integer (cl.substring (0, p)).intValue ();
-from--;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-System.err.println ("ERROR: Couldn't parse first integer in range element column selection string '" + cl + "' - format is 'from-to'");
-return;
-} else {
-throw ex;
-}
-}
-try {
-to = new Integer (cl.substring (p + 1)).intValue ();
-to--;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-System.err.println ("ERROR: Couldn't parse second integer in range element column selection string '" + cl + "' - format is 'from-to'");
-return;
-} else {
-throw ex;
-}
-}
-if (from >= 0 && to >= 0) {
-if (from < to) {
-var t = to;
-to = from;
-to = t;
-}if (!seset) {
-start = from;
-end = to;
-seset = true;
-} else {
-if (start > from) {
-start = from;
-}if (end < to) {
-end = to;
-}}for (var r = from; r <= to; r++) {
-if (r >= 0 && r < alw) {
-csel.addElement (r);
-}}
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Range '" + cl + "' deparsed as [" + from + "," + to + "]");
-}} else {
-System.err.println ("ERROR: Invalid Range '" + cl + "' deparsed as [" + from + "," + to + "]");
-}} else {
-var r = -1;
-try {
-r = new Integer (cl).intValue ();
-r--;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, NumberFormatException)) {
-if (cl.toLowerCase ().equals ("sequence")) {
-inseqpos = true;
-} else {
-System.err.println ("ERROR: Couldn't parse integer from point selection element of column selection string '" + cl + "'");
-return;
-}} else {
-throw ex;
-}
-}
-if (r >= 0 && r <= alw) {
-if (!seset) {
-start = r;
-end = r;
-seset = true;
-} else {
-if (start > r) {
-start = r;
-}if (end < r) {
-end = r;
-}}csel.addElement (r);
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Point selection '" + cl + "' deparsed as [" + r + "]");
-}} else {
-System.err.println ("ERROR: Invalid Point selection '" + cl + "' deparsed as [" + r + "]");
-}}}
-}if (seqsfound) {
-if (inseqpos && sel.getSize () > 0) {
-var rs = sel.getSequenceAt (0);
-start = rs.findIndex (start);
-end = rs.findIndex (end);
-if (csel != null) {
-var cs = csel.getSelected ();
-csel.clear ();
-for (var selectedCol, $selectedCol = cs.iterator (); $selectedCol.hasNext () && ((selectedCol = $selectedCol.next ()) || true);) {
-csel.addElement (rs.findIndex ((selectedCol).intValue ()));
-}
-}}sel.setStartRes (start);
-sel.setEndRes (end);
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$3") ? 0 : jalview.bin.JalviewLite.$JalviewLite$3$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$3, this, Clazz.cloneFinals ("alf", alf, "sel", sel, "csel", csel))));
-}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
-Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignment",
-function (format, suffix) {
-return this.getSelectedSequencesAsAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
-}, "~S,~S");
-Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignmentFrom",
-function (alf, format, suffix) {
-try {
-var seqlimits = suffix.equalsIgnoreCase ("true");
-if (alf.viewport.getSelectionGroup () != null) {
-var reply = new jalview.io.AppletFormatAdapter ().formatSequences (format, new jalview.datamodel.Alignment (alf.viewport.getSelectionAsNewSequence ()), seqlimits);
-return reply;
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-return "Error retrieving alignment in " + format + " format. ";
-} else {
-throw ex;
-}
-}
-return "";
-}, "jalview.appletgui.AlignFrame,~S,~S");
-Clazz.overrideMethod (c$, "getAlignmentOrder",
-function () {
-return this.getAlignmentOrderFrom (this.getDefaultTargetFrame ());
-});
-Clazz.defineMethod (c$, "getAlignmentOrderFrom",
-function (alf) {
-return this.getAlignmentOrderFrom (alf, this.separator);
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "getAlignmentOrderFrom",
-function (alf, sep) {
-var alorder = alf.getAlignViewport ().getAlignment ();
-var order = new Array (alorder.getHeight ());
-for (var i = 0; i < order.length; i++) {
-order[i] = alorder.getSequenceAt (i).getName ();
-}
-return this.arrayToSeparatorList (order);
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.defineMethod (c$, "orderBy",
-function (order, undoName) {
-return this.orderBy (order, undoName, this.separator);
-}, "~S,~S");
-Clazz.defineMethod (c$, "orderBy",
-function (order, undoName, sep) {
-return this.orderAlignmentBy (this.getDefaultTargetFrame (), order, undoName, sep);
-}, "~S,~S,~S");
-Clazz.overrideMethod (c$, "orderAlignmentBy",
-function (alf, order, undoName, sep) {
-var ids = this.separatorListToArray (order, sep);
-var sqs = null;
-if (ids != null && ids.length > 0) {
-var matcher = new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
-var s = 0;
-sqs = new Array (ids.length);
-for (var i = 0; i < ids.length; i++) {
-if (ids[i].trim ().length == 0) {
-continue;
-}var sq = matcher.findIdMatch (ids[i]);
-if (sq != null) {
-sqs[s++] = sq;
-}}
-if (s > 0) {
-var sqq = new Array (s);
-System.arraycopy (sqs, 0, sqq, 0, s);
-sqs = sqq;
-} else {
-sqs = null;
-}}if (sqs == null) {
-return "";
-};var aorder = new jalview.datamodel.AlignmentOrder (sqs);
-if (undoName != null && undoName.trim ().length == 0) {
-undoName = null;
-}var _undoName = undoName;
-return alf.sortBy (aorder, _undoName) ? "true" : "";
-}, "jalview.appletgui.AlignFrame,~S,~S,~S");
-Clazz.defineMethod (c$, "getAlignment",
-function (format) {
-return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, "true");
-}, "~S");
-Clazz.defineMethod (c$, "getAlignmentFrom",
-function (alf, format) {
-return this.getAlignmentFrom (alf, format, "true");
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.defineMethod (c$, "getAlignment",
-function (format, suffix) {
-return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
-}, "~S,~S");
-Clazz.defineMethod (c$, "getAlignmentFrom",
-function (alf, format, suffix) {
-try {
-var seqlimits = suffix.equalsIgnoreCase ("true");
-var reply = new jalview.io.AppletFormatAdapter ().formatSequences (format, alf.viewport.getAlignment (), seqlimits);
-return reply;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-return "Error retrieving alignment in " + format + " format. ";
-} else {
-throw ex;
-}
-}
-}, "jalview.appletgui.AlignFrame,~S,~S");
-Clazz.overrideMethod (c$, "loadAnnotation",
-function (annotation) {
-this.loadAnnotationFrom (this.getDefaultTargetFrame (), annotation);
-}, "~S");
-Clazz.overrideMethod (c$, "loadAnnotationFrom",
-function (alf, annotation) {
-if ( new jalview.io.AnnotationFile ().annotateAlignmentView (alf.getAlignViewport (), annotation, jalview.io.AppletFormatAdapter.PASTE)) {
-alf.alignPanel.fontChanged ();
-alf.alignPanel.setScrollValues (0, 0);
-} else {
-alf.parseFeaturesFile (annotation, jalview.io.AppletFormatAdapter.PASTE);
-}}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "loadFeatures",
-function (features, autoenabledisplay) {
-this.loadFeaturesFrom (this.getDefaultTargetFrame (), features, autoenabledisplay);
-}, "~S,~B");
-Clazz.overrideMethod (c$, "loadFeaturesFrom",
-function (alf, features, autoenabledisplay) {
-return alf.parseFeaturesFile (features, jalview.io.AppletFormatAdapter.PASTE, autoenabledisplay);
-}, "jalview.appletgui.AlignFrame,~S,~B");
-Clazz.overrideMethod (c$, "getFeatures",
-function (format) {
-return this.getFeaturesFrom (this.getDefaultTargetFrame (), format);
-}, "~S");
-Clazz.overrideMethod (c$, "getFeaturesFrom",
-function (alf, format) {
-return alf.outputFeatures (false, format);
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "getAnnotation",
-function () {
-return this.getAnnotationFrom (this.getDefaultTargetFrame ());
-});
-Clazz.overrideMethod (c$, "getAnnotationFrom",
-function (alf) {
-return alf.outputAnnotations (false);
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "newView",
-function () {
-return this.newViewFrom (this.getDefaultTargetFrame ());
-});
-Clazz.defineMethod (c$, "newView",
-function (name) {
-return this.newViewFrom (this.getDefaultTargetFrame (), name);
-}, "~S");
-Clazz.defineMethod (c$, "newViewFrom",
-function (alf) {
-return alf.newView (null);
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "newViewFrom",
-function (alf, name) {
-return alf.newView (name);
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "loadAlignment",
-function (text, title) {
-var al = null;
-var format = new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
-try {
-al = new jalview.io.AppletFormatAdapter ().readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
-if (al.getHeight () > 0) {
-return new jalview.appletgui.AlignFrame (al, this, title, false);
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, java.io.IOException)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-return null;
-}, "~S,~S");
-Clazz.defineMethod (c$, "setMouseoverListener",
-function (listener) {
-this.setMouseoverListener (this.currentAlignFrame, listener);
-}, "~S");
-Clazz.defineMethod (c$, "setMouseoverListener",
-function (af, listener) {
-if (listener != null) {
-listener = listener.trim ();
-if (listener.length == 0) {
-System.err.println ("jalview Javascript error: Ignoring empty function for mouseover listener.");
-return;
-}}var mol = new jalview.javascript.MouseOverListener (this, af, listener);
-this.javascriptListeners.addElement (mol);
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Added a mouseover listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
-}}, "jalview.appletgui.AlignFrame,~S");
-Clazz.defineMethod (c$, "setSelectionListener",
-function (listener) {
-this.setSelectionListener (null, listener);
-}, "~S");
-Clazz.defineMethod (c$, "setSelectionListener",
-function (af, listener) {
-if (listener != null) {
-listener = listener.trim ();
-if (listener.length == 0) {
-System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
-return;
-}}var mol = new jalview.javascript.JsSelectionSender (this, af, listener);
-this.javascriptListeners.addElement (mol);
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addSelectionListener (mol);
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Added a selection listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
-}}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "setStructureListener",
-function (listener, modelSet) {
-if (listener != null) {
-listener = listener.trim ();
-if (listener.length == 0) {
-System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
-return;
-}}var mol = new jalview.javascript.MouseOverStructureListener (this, listener, this.separatorListToArray (modelSet));
-this.javascriptListeners.addElement (mol);
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Added a javascript structure viewer listener '" + listener + "'");
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
-}}, "~S,~S");
-Clazz.overrideMethod (c$, "removeJavascriptListener",
-function (af, listener) {
-if (listener != null) {
-listener = listener.trim ();
-if (listener.length == 0) {
-listener = null;
-}}var rprt = false;
-for (var ms = 0, msSize = this.javascriptListeners.size (); ms < msSize; ) {
-var lstn = this.javascriptListeners.elementAt (ms);
-var lstner = lstn;
-if ((af == null || lstner.getAlignFrame () === af) && (listener == null || lstner.getListenerFunction ().equals (listener))) {
-this.javascriptListeners.removeElement (lstner);
-msSize--;
-if (Clazz.instanceOf (lstner, jalview.structure.SelectionListener)) {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (lstner);
-} else {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (lstner, null);
-}rprt = jalview.bin.JalviewLite.debug;
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Removed listener '" + listener + "'");
-}} else {
-ms++;
-}}
-if (rprt) {
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
-}}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "stop",
-function () {
-System.err.println ("Applet " + this.getName () + " stop().");
-this.tidyUp ();
-});
-Clazz.overrideMethod (c$, "destroy",
-function () {
-System.err.println ("Applet " + this.getName () + " destroy().");
-this.tidyUp ();
-});
-Clazz.defineMethod (c$, "tidyUp",
-($fz = function () {
-this.removeAll ();
-if (this.currentAlignFrame != null && this.currentAlignFrame.viewport != null && this.currentAlignFrame.viewport.applet != null) {
-var av = this.currentAlignFrame.viewport;
-this.currentAlignFrame.closeMenuItem_actionPerformed ();
-av.applet = null;
-this.currentAlignFrame = null;
-}if (this.javascriptListeners != null) {
-while (this.javascriptListeners.size () > 0) {
-var mol = this.javascriptListeners.elementAt (0);
-this.javascriptListeners.removeElement (mol);
-if (Clazz.instanceOf (mol, jalview.structure.SelectionListener)) {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (mol);
-} else {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (mol, null);
-}mol.jvlite = null;
-}
-}if (this.jsFunctionExec != null) {
-this.jsFunctionExec.stopQueue ();
-this.jsFunctionExec.jvlite = null;
-}this.initialAlignFrame = null;
-this.jsFunctionExec = null;
-this.javascriptListeners = null;
-jalview.structure.StructureSelectionManager.release (this);
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "mouseOverStructure",
-function (pdbResNum, chain, pdbfile) {
-var me = this;
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$4") ? 0 : jalview.bin.JalviewLite.$JalviewLite$4$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$4, this, Clazz.cloneFinals ("me", me, "pdbResNum", pdbResNum, "chain", chain, "pdbfile", pdbfile))));
-}, "~S,~S,~S");
-Clazz.overrideMethod (c$, "scrollViewToIn",
-function (alf, topRow, leftHandColumn) {
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$5") ? 0 : jalview.bin.JalviewLite.$JalviewLite$5$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$5, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow, "leftHandColumn", leftHandColumn))));
-}, "jalview.appletgui.AlignFrame,~S,~S");
-Clazz.overrideMethod (c$, "scrollViewToRowIn",
-function (alf, topRow) {
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$6") ? 0 : jalview.bin.JalviewLite.$JalviewLite$6$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$6, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow))));
-}, "jalview.appletgui.AlignFrame,~S");
-Clazz.overrideMethod (c$, "scrollViewToColumnIn",
-function (alf, leftHandColumn) {
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$7") ? 0 : jalview.bin.JalviewLite.$JalviewLite$7$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$7, this, Clazz.cloneFinals ("alf", alf, "leftHandColumn", leftHandColumn))));
-}, "jalview.appletgui.AlignFrame,~S");
-c$.initBuildDetails = Clazz.defineMethod (c$, "initBuildDetails",
-($fz = function () {
-if (jalview.bin.JalviewLite.builddate == null) {
-jalview.bin.JalviewLite.builddate = "unknown";
-jalview.bin.JalviewLite.version = "test";
-jalview.bin.JalviewLite.installation = "Webstart";
-var url = jalview.bin.JalviewLite.getResource ("/.build_properties");
-if (url != null) {
-try {
-var reader = new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));
-var line;
-while ((line = reader.readLine ()) != null) {
-if (line.indexOf ("VERSION") > -1) {
-jalview.bin.JalviewLite.version = line.substring (line.indexOf ("=") + 1);
-}if (line.indexOf ("BUILD_DATE") > -1) {
-jalview.bin.JalviewLite.builddate = line.substring (line.indexOf ("=") + 1);
-}if (line.indexOf ("INSTALLATION") > -1) {
-jalview.bin.JalviewLite.installation = line.substring (line.indexOf ("=") + 1);
-}}
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-}}}, $fz.isPrivate = true, $fz));
-c$.getBuildDate = Clazz.defineMethod (c$, "getBuildDate",
-function () {
-jalview.bin.JalviewLite.initBuildDetails ();
-return jalview.bin.JalviewLite.builddate;
-});
-c$.getInstallation = Clazz.defineMethod (c$, "getInstallation",
-function () {
-jalview.bin.JalviewLite.initBuildDetails ();
-return jalview.bin.JalviewLite.installation;
-});
-c$.getVersion = Clazz.defineMethod (c$, "getVersion",
-function () {
-jalview.bin.JalviewLite.initBuildDetails ();
-return jalview.bin.JalviewLite.version;
-});
-Clazz.overrideMethod (c$, "init",
-function () {
-this.setParams ();
-try {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Applet context is '" + this.getAppletContext ().getClass ().toString () + "'");
-}var scriptObject = netscape.javascript.JSObject.getWindow (this);
-if (jalview.bin.JalviewLite.debug && scriptObject != null) {
-System.err.println ("Applet has Javascript callback support.");
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-System.err.println ("Warning: No JalviewLite javascript callbacks available.");
-if (jalview.bin.JalviewLite.debug) {
-ex.printStackTrace ();
-}} else {
-throw ex;
-}
-}
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("JalviewLite Version " + jalview.bin.JalviewLite.getVersion ());
-System.err.println ("Build Date : " + jalview.bin.JalviewLite.getBuildDate ());
-System.err.println ("Installation : " + jalview.bin.JalviewLite.getInstallation ());
-}if (this.externalstructureviewer != null) {
-this.useXtrnalSviewer = this.externalstructureviewer.trim ().toLowerCase ().equals ("true");
-}if (this.sep != null) {
-if (this.sep.length > 0) {
-this.separator = this.sep;
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Separator set to '" + this.separator + "'");
-}} else {
-throw new Error (jalview.util.MessageManager.getString ("error.invalid_separator_parameter"));
-}}var r = 255;
-var g = 255;
-var b = 255;
-if (this.rgb != null) {
-try {
-r = Integer.parseInt (this.rgb.substring (0, 2), 16);
-g = Integer.parseInt (this.rgb.substring (2, 4), 16);
-b = Integer.parseInt (this.rgb.substring (4, 6), 16);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-r = 255;
-g = 255;
-b = 255;
-} else {
-throw ex;
-}
-}
-}this.rgb = this.labelColour;
-if (this.rgb != null) {
-this.launcher.setLabel (this.rgb);
-}this.setBackground ( new java.awt.Color (r, g, b));
-if (this.startupFile == null) {
-var data = new StringBuffer ("PASTE");
-var i = 1;
-while ((this.startupFile = this.getParameter ("sequence" + i)) != null) {
-data.append (this.startupFile.toString () + "\n");
-i++;
-}
-if (data.length () > 5) {
-this.startupFile = data.toString ();
-}}if (!this.enableSplitFrame) {
-this.file2 = null;
-}if (this.embedded) {
-var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
-{
-loader.run();
-}} else if (this.startupFile != null) {
-if (!this.showButton) {
-var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
-loader.start ();
-} else {
-this.add (this.launcher);
-this.launcher.addActionListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$8") ? 0 : jalview.bin.JalviewLite.$JalviewLite$8$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$8, this, null)));
-}} else {
-this.startupFile = "NO FILE";
-this.fileFound = false;
-this.callInitCallback ();
-}});
-Clazz.defineMethod (c$, "initLiveConnect",
-($fz = function () {
-var notFailed = false;
-var tries = 0;
-while (!notFailed && tries < 10) {
-if (tries > 0) {
-System.err.println ("LiveConnect request thread going to sleep.");
-}try {
-Thread.sleep (700 * (1 + tries));
-} catch (q) {
-if (Clazz.exceptionOf (q, InterruptedException)) {
-} else {
-throw q;
-}
-}
-;if (tries++ > 0) {
-System.err.println ("LiveConnect request thread woken up.");
-}try {
-var scriptObject = netscape.javascript.JSObject.getWindow (this);
-if (scriptObject.eval ("navigator") != null) {
-notFailed = true;
-}} catch (jsex) {
-if (Clazz.exceptionOf (jsex, Exception)) {
-System.err.println ("Attempt " + tries + " to access LiveConnect javascript failed.");
-} else {
-throw jsex;
-}
-}
-}
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "callInitCallback",
-($fz = function () {
-if (this.initjscallback == null) {
-return;
-}this.initjscallback = this.initjscallback.trim ();
-if (this.initjscallback.length > 0) {
-var scriptObject = null;
-try {
-scriptObject = netscape.javascript.JSObject.getWindow (this);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-} else {
-throw ex;
-}
-}
-;this.initLiveConnect ();
-if (scriptObject != null) {
-try {
- new jalview.javascript.JSFunctionExec (this).executeJavascriptFunction (true, this.initjscallback, null, "Calling oninit callback '" + this.initjscallback + "'.");
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-System.err.println ("Exception when executing _oninit callback '" + this.initjscallback + "'.");
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-} else {
-System.err.println ("Not executing _oninit callback '" + this.initjscallback + "' - no scripting allowed.");
-}}}, $fz.isPrivate = true, $fz));
-c$.addFrame = Clazz.defineMethod (c$, "addFrame",
-function (frame, title, width, height) {
-frame.setLocation (jalview.bin.JalviewLite.lastFrameX, jalview.bin.JalviewLite.lastFrameY);
-jalview.bin.JalviewLite.lastFrameX += 40;
-jalview.bin.JalviewLite.lastFrameY += 40;
-frame.setSize (width, height);
-frame.setTitle (title);
-frame.addWindowListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$9") ? 0 : jalview.bin.JalviewLite.$JalviewLite$9$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$9, this, Clazz.cloneFinals ("frame", frame))));
-frame.setVisible (true);
-}, "javax.swing.JFrame,~S,~N,~N");
-Clazz.defineMethod (c$, "paintComponent",
-function (g) {
-if (!this.fileFound) {
-g.setColor ( new java.awt.Color (200, 200, 200));
-g.setColor (java.awt.Color.cyan);
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
-g.setColor (java.awt.Color.red);
-g.drawString (jalview.util.MessageManager.getString ("label.jalview_cannot_open_file"), 5, 15);
-g.drawString ("\"" + this.startupFile + "\"", 5, 30);
-} else if (this.embedded && !this.haveShownLoadMessage) {
-g.setColor (java.awt.Color.black);
-g.setFont ( new java.awt.Font ("Arial", 1, 24));
-g.drawString (jalview.util.MessageManager.getString ("label.jalview_applet"), 50, Clazz.doubleToInt (this.getSize ().height / 2) - 30);
-g.drawString (jalview.util.MessageManager.getString ("label.loading_data") + "...", 50, Clazz.doubleToInt (this.getSize ().height / 2));
-this.haveShownLoadMessage = true;
-}}, "java.awt.Graphics");
-Clazz.defineMethod (c$, "getAppletWindow",
-function (class1) {
-var wnds = new java.util.Vector ();
-var cmp = this.getComponents ();
-if (cmp != null) {
-for (var i = 0; i < cmp.length; i++) {
-if (class1.isAssignableFrom (cmp[i].getClass ())) {
-wnds.addElement (cmp);
-}}
-}return wnds;
-}, "Class");
-Clazz.defineMethod (c$, "getDefaultTargetFrame",
-function () {
-if (this.currentAlignFrame != null) {
-return this.currentAlignFrame;
-}if (this.initialAlignFrame != null) {
-return this.initialAlignFrame;
-}System.err.println ("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");
-return null;
-});
-Clazz.defineMethod (c$, "separatorListToArray",
-function (list) {
-return this.separatorListToArray (list, this.separator);
-}, "~S");
-Clazz.defineMethod (c$, "separatorListToArray",
-function (list, separator) {
-var seplen = separator.length;
-if (list == null || list.equals ("") || list.equals (separator)) {
-return null;
-}var jv = new java.util.Vector ();
-var cp = 0;
-var pos;
-while ((pos = list.indexOf (separator, cp)) > cp) {
-jv.addElement (list.substring (cp, pos));
-cp = pos + seplen;
-}
-if (cp < list.length) {
-var c = list.substring (cp);
-if (!c.equals (separator)) {
-jv.addElement (c);
-}}if (jv.size () > 0) {
-var v = new Array (jv.size ());
-for (var i = 0; i < v.length; i++) {
-v[i] = jv.elementAt (i);
-}
-jv.removeAllElements ();
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Array from '" + separator + "' separated List:\n" + v.length);
-for (var i = 0; i < v.length; i++) {
-System.err.println ("item " + i + " '" + v[i] + "'");
-}
-}return v;
-}if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Empty Array from '" + separator + "' separated List");
-}return null;
-}, "~S,~S");
-Clazz.defineMethod (c$, "arrayToSeparatorList",
-function (list) {
-return this.arrayToSeparatorList (list, this.separator);
-}, "~A");
-Clazz.defineMethod (c$, "arrayToSeparatorList",
-function (list, separator) {
-var v = new StringBuffer ();
-if (list != null && list.length > 0) {
-for (var i = 0, iSize = list.length; i < iSize; i++) {
-if (list[i] != null) {
-if (i > 0) {
-v.append (separator);
-}v.append (list[i]);
-}}
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Returning '" + separator + "' separated List:\n");
-System.err.println (v);
-}return v.toString ();
-}if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Returning empty '" + separator + "' separated List\n");
-}return "" + separator;
-}, "~A,~S");
-Clazz.overrideMethod (c$, "getFeatureGroups",
-function () {
-var lst = this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroups ());
-return lst;
-});
-Clazz.overrideMethod (c$, "getFeatureGroupsOn",
-function (alf) {
-var lst = this.arrayToSeparatorList (alf.getFeatureGroups ());
-return lst;
-}, "jalview.appletgui.AlignFrame");
-Clazz.overrideMethod (c$, "getFeatureGroupsOfState",
-function (visible) {
-return this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroupsOfState (visible));
-}, "~B");
-Clazz.overrideMethod (c$, "getFeatureGroupsOfStateOn",
-function (alf, visible) {
-return this.arrayToSeparatorList (alf.getFeatureGroupsOfState (visible));
-}, "jalview.appletgui.AlignFrame,~B");
-Clazz.overrideMethod (c$, "setFeatureGroupStateOn",
-function (alf, groups, state) {
-var st = state;
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$10") ? 0 : jalview.bin.JalviewLite.$JalviewLite$10$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$10, this, Clazz.cloneFinals ("alf", alf, "groups", groups, "st", st))));
-}, "jalview.appletgui.AlignFrame,~S,~B");
-Clazz.overrideMethod (c$, "setFeatureGroupState",
-function (groups, state) {
-this.setFeatureGroupStateOn (this.getDefaultTargetFrame (), groups, state);
-}, "~S,~B");
-Clazz.overrideMethod (c$, "getSeparator",
-function () {
-return this.separator;
-});
-Clazz.overrideMethod (c$, "setSeparator",
-function (separator) {
-if (separator == null || separator.length < 1) {
-separator = "\u00ac";
-}this.separator = separator;
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Default Separator now: '" + separator + "'");
-}}, "~S");
-Clazz.overrideMethod (c$, "addPdbFile",
-function (alFrame, sequenceId, pdbEntryString, pdbFile) {
-return alFrame.addPdbFile (sequenceId, pdbEntryString, pdbFile);
-}, "jalview.appletgui.AlignFrame,~S,~S,~S");
-Clazz.defineMethod (c$, "setAlignPdbStructures",
-function (alignPdbStructures) {
-this.alignPdbStructures = alignPdbStructures;
-}, "~B");
-Clazz.defineMethod (c$, "isAlignPdbStructures",
-function () {
-return this.alignPdbStructures;
-});
-Clazz.overrideMethod (c$, "start",
-function () {
-});
-Clazz.defineMethod (c$, "setJsMessageSet",
-function (messageclass, viewId, colcommands) {
-var msgset = this.jsmessages.get (messageclass);
-if (msgset == null) {
-msgset = new java.util.Hashtable ();
-this.jsmessages.put (messageclass, msgset);
-}msgset.put (viewId, colcommands);
-var l = Clazz.newLongArray (colcommands.length, 0);
-for (var i = 0; i < colcommands.length; i++) {
-l[i] = colcommands[i].hashCode ();
-}
-this.jshashes.put (messageclass + "|" + viewId, l);
-}, "~S,~S,~A");
-Clazz.overrideMethod (c$, "getJsMessage",
-function (messageclass, viewId) {
-var msgset = this.jsmessages.get (messageclass);
-if (msgset != null) {
-var msgs = msgset.get (viewId);
-if (msgs != null) {
-for (var i = 0; i < msgs.length; i++) {
-if (msgs[i] != null) {
-var m = msgs[i];
-msgs[i] = null;
-return m;
-}}
-}}return "";
-}, "~S,~S");
-Clazz.defineMethod (c$, "isJsMessageSetChanged",
-function (string, string2, colcommands) {
-var l = this.jshashes.get (string + "|" + string2);
-if (l == null && colcommands != null) {
-return true;
-}for (var i = 0; i < colcommands.length; i++) {
-if (l[i] != colcommands[i].hashCode ()) {
-return true;
-}}
-return false;
-}, "~S,~S,~A");
-Clazz.defineMethod (c$, "getJsExecQueue",
-function () {
-return this.jsExecQueue;
-});
-Clazz.defineMethod (c$, "setExecutor",
-function (jsFunctionExec2) {
-this.jsFunctionExec = jsFunctionExec2;
-}, "jalview.javascript.JSFunctionExec");
-Clazz.defineMethod (c$, "getDefaultColourParameter",
-function (colparam, defcolour) {
-var colprop = this.getParameter (colparam);
-if (colprop == null || colprop.trim ().length == 0) {
-return defcolour;
-}var col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colprop);
-if (col == null) {
-try {
-col = new jalview.schemes.UserColourScheme (colprop).findColour ('A');
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-System.err.println ("Couldn't parse '" + colprop + "' as a colour for " + colparam);
-col = null;
-} else {
-throw ex;
-}
-}
-}return (col == null) ? defcolour : col;
-}, "~S,java.awt.Color");
-Clazz.defineMethod (c$, "openJalviewHelpUrl",
-function () {
-if (this.helpUrl == null || this.helpUrl.trim ().length < 5) {
-this.helpUrl = "http://www.jalview.org/help.html";
-}this.showURL (this.helpUrl, "HELP");
-});
-Clazz.defineMethod (c$, "resolveUrlForLocalOrAbsolute",
-($fz = function (url, localref) {
-var codebase = localref.toString ();
-var pt = codebase.indexOf ("?");
-if (pt < 0) pt = codebase.length;
-codebase = codebase.substring (0, pt);
-codebase = codebase.substring (0, codebase.lastIndexOf ("/") + 1);
-if (url.indexOf ("/") == 0 && !localref.getProtocol ().equals ("file")) {
-pt = codebase.indexOf ("/", 8);
-return codebase.substring (0, pt) + url;
-}return codebase + url;
-}, $fz.isPrivate = true, $fz), "~S,java.net.URL");
-Clazz.defineMethod (c$, "showURL",
-function (url, target) {
-try {
-if (url.indexOf (":") == -1) {
-var prepend;
-url = this.resolveUrlForLocalOrAbsolute (url, prepend = this.getDefaultParameter ("resolvetocodebase", false) ? this.getDocumentBase () : this.getCodeBase ());
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Show url (prepended " + prepend + " - toggle resolvetocodebase if code/docbase resolution is wrong): " + url);
-}} else {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Show url: " + url);
-}}if (url.indexOf ("javascript:") == 0) {
-this.getAppletContext ().showDocument ( new java.net.URL (url));
-} else {
-this.getAppletContext ().showDocument ( new java.net.URL (url), target);
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-}, "~S,~S");
-c$.$JalviewLite$LoadJmolThread$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.running = false;
-Clazz.instantialize (this, arguments);
-}, jalview.bin.JalviewLite, "LoadJmolThread", Thread);
-Clazz.overrideMethod (c$, "run",
-function () {
-if (this.running || this.b$["jalview.bin.JalviewLite"].checkedForJmol) {
-return;
-}this.running = true;
-if (this.b$["jalview.bin.JalviewLite"].checkForJmol) {
-try {
-if (!System.getProperty ("java.version").startsWith ("1.1")) {
-Class.forName ("org.jmol.adapter.smarter.SmarterJmolAdapter");
-this.b$["jalview.bin.JalviewLite"].jmolAvailable = true;
-}if (!this.b$["jalview.bin.JalviewLite"].jmolAvailable) {
-System.out.println ("Jmol not available - Using MCview for structures");
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, ClassNotFoundException)) {
-} else {
-throw ex;
-}
-}
-} else {
-this.b$["jalview.bin.JalviewLite"].jmolAvailable = false;
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Skipping Jmol check. Will use MCView (probably)");
-}}this.b$["jalview.bin.JalviewLite"].checkedForJmol = true;
-this.running = false;
-});
-Clazz.defineMethod (c$, "notFinished",
-function () {
-return this.running || !this.b$["jalview.bin.JalviewLite"].checkedForJmol;
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$LoadingThread$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.protocol = null;
-this._file = null;
-this._file2 = null;
-this.applet = null;
-Clazz.instantialize (this, arguments);
-}, jalview.bin.JalviewLite, "LoadingThread", Thread);
-Clazz.defineMethod (c$, "dbgMsg",
-($fz = function (a) {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println (a);
-}}, $fz.isPrivate = true, $fz), "~S");
-Clazz.defineMethod (c$, "setProtocolState",
-function (a) {
-if (a.startsWith ("PASTE")) {
-a = a.substring (5);
-this.protocol = jalview.io.AppletFormatAdapter.PASTE;
-} else if (this.inArchive (a)) {
-this.protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
-} else {
-a = this.addProtocol (a);
-this.protocol = jalview.io.AppletFormatAdapter.URL;
-}this.dbgMsg ("Protocol identified as '" + this.protocol + "'");
-return a;
-}, "~S");
-Clazz.makeConstructor (c$,
-function (a, b, c) {
-Clazz.superConstructor (this, jalview.bin.JalviewLite.LoadingThread, []);
-this._file = a;
-this._file2 = b;
-this.applet = c;
-}, "~S,~S,jalview.bin.JalviewLite");
-Clazz.overrideMethod (c$, "run",
-function () {
-{
-System.out.println("BYPASSING JMOL LOADING FOR NOW. THIS WILL BE DONE ANOTHER WAY")
-}this.startLoading ();
-});
-Clazz.defineMethod (c$, "startLoading",
-($fz = function () {
-this.dbgMsg ("Loading thread started with:\n>>file\n" + this._file + ">>endfile");
-this.dbgMsg ("Loading started.");
-var a = this.readAlignment (this._file);
-var b = this.readAlignment (this._file2);
-if (a != null) {
-this.addToDisplay (a, b);
-this.loadTree (a);
-this.loadScoreFile (a);
-this.loadFeatures (a);
-this.loadAnnotations (a);
-this.loadJnetFile (a);
-this.loadPdbFiles (a);
-} else {
-this.b$["jalview.bin.JalviewLite"].fileFound = false;
-this.applet.remove (this.b$["jalview.bin.JalviewLite"].launcher);
-this.applet.repaint ();
-}this.b$["jalview.bin.JalviewLite"].callInitCallback ();
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "addToDisplay",
-function (a, b) {
-if (b == null) {
-a.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded);
-} else {
-var c = new jalview.appletgui.SplitFrame (a, b);
-c.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded, this.b$["jalview.bin.JalviewLite"]);
-}}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "readAlignment",
-function (a) {
-if (a == null) {
-return null;
-}var b = this.setProtocolState (a);
-var c = new jalview.io.IdentifyFile ().Identify (b, this.protocol);
-this.dbgMsg ("File identified as '" + c + "'");
-var d = null;
-try {
-d = new jalview.io.AppletFormatAdapter ().readFile (b, this.protocol, c);
-if ((d != null) && (d.getHeight () > 0)) {
-this.dbgMsg ("Successfully loaded file.");
-d.setDataset (null);
-var e = new jalview.appletgui.AlignFrame (d, this.applet, b, this.b$["jalview.bin.JalviewLite"].embedded, false);
-e.setTitle (b);
-if (this.b$["jalview.bin.JalviewLite"].initialAlignFrame == null) {
-this.b$["jalview.bin.JalviewLite"].initialAlignFrame = e;
-}this.b$["jalview.bin.JalviewLite"].currentAlignFrame = e;
-if (this.protocol === jalview.io.AppletFormatAdapter.PASTE) {
-e.setTitle (jalview.util.MessageManager.formatMessage ("label.sequences_from", Clazz.newArray (-1, [this.applet.getDocumentBase ().toString ()])));
-}e.setStatus (jalview.util.MessageManager.formatMessage ("label.successfully_loaded_file", Clazz.newArray (-1, [b])));
-return e;
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, java.io.IOException)) {
-this.dbgMsg ("File load exception.");
-ex.printStackTrace ();
-if (jalview.bin.JalviewLite.debug) {
-try {
-var e = new jalview.io.FileParse (b, this.protocol);
-var f = null;
-this.dbgMsg (">>>Dumping contents of '" + b + "' " + "(" + this.protocol + ")");
-while ((f = e.nextLine ()) != null) {
-this.dbgMsg (f);
-}
-this.dbgMsg (">>>Dump finished.");
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-System.err.println ("Exception when trying to dump the content of the file parameter.");
-e.printStackTrace ();
-} else {
-throw e;
-}
-}
-}} else {
-throw ex;
-}
-}
-return null;
-}, "~S");
-Clazz.defineMethod (c$, "loadPdbFiles",
-function (a) {
-var b = false;
-this.applet.setAlignPdbStructures (this.b$["jalview.bin.JalviewLite"].getDefaultParameter ("alignpdbfiles", false));
-var c = 0;
-var d = new java.util.Vector ();
-var e = (this.applet.getDefaultParameter ("relaxedidmatch", false)) ? new jalview.analysis.SequenceIdMatcher (a.getAlignViewport ().getAlignment ().getSequencesArray ()) : null;
-var f;
-do {
-if (c > 0) {
-f = this.applet.getParameter ("PDBFILE" + c);
-} else {
-f = this.b$["jalview.bin.JalviewLite"].pdbFile;
-}if (f != null) {
-var g = new jalview.datamodel.PDBEntry ();
-var h;
-var i = null;
-var j = null;
-var k = new java.util.StringTokenizer (f, " ");
-if (k.countTokens () < 2) {
-if (this.b$["jalview.bin.JalviewLite"].sequence != null) {
-i = Clazz.newArray (-1, [e == null ? a.getAlignViewport ().getAlignment ().findName (this.b$["jalview.bin.JalviewLite"].sequence) : e.findIdMatch (this.b$["jalview.bin.JalviewLite"].sequence)]);
-}} else {
-f = k.nextToken ();
-var l = new java.util.Vector ();
-var m = new java.util.Vector ();
-while (k.hasMoreTokens ()) {
-h = k.nextToken ();
-var n = new java.util.StringTokenizer (h, "=");
-if (n.countTokens () > 1) {
-m.addElement (n.nextToken ());
-h = n.nextToken ();
-}l.addElement (e == null ? a.getAlignViewport ().getAlignment ().findName (h) : e.findIdMatch (h));
-}
-i = new Array (l.size ());
-l.copyInto (i);
-if (m.size () == l.size ()) {
-j = new Array (m.size ());
-m.copyInto (j);
-}}f = this.setProtocolState (f);
-if (this.protocol === jalview.io.AppletFormatAdapter.CLASSLOADER && !this.b$["jalview.bin.JalviewLite"].useXtrnalSviewer) {
-this.protocol = jalview.io.AppletFormatAdapter.URL;
-f = this.addProtocol (f);
-}g.setFile (f);
-if (i != null) {
-for (var l = 0; l < i.length; l++) {
-if (i[l] != null) {
-(i[l]).addPDBId (g);
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet).registerPDBEntry (g);
-} else {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + l + ")");
-}}}
-if (!this.b$["jalview.bin.JalviewLite"].alignPdbStructures) {
-a.newStructureView (this.applet, g, i, j, this.protocol);
-} else {
-d.addElement ( Clazz.newArray (-1, [g, i, j, String.instantialize (this.protocol)]));
-}}}c++;
-} while (f != null || c < 10);
-if (d.size () > 0) {
-var g = new Array (d.size ());
-var h = new Array (d.size ());
-var i = new Array (d.size ());
-var j = new Array (d.size ());
-for (var k = 0, l = d.size (); k < l; k++) {
-var m = d.elementAt (k);
-h[k] = m[0];
-g[k] = m[1];
-i[k] = m[2];
-j[k] = m[3];
-}
-a.alignedStructureView (this.applet, h, g, i, j);
-b = true;
-}return b;
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "loadJnetFile",
-function (a) {
-var b = false;
-var c = this.b$["jalview.bin.JalviewLite"].jnetFile;
-if (c != null) {
-try {
-c = this.setProtocolState (c);
-var d = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [c, this.protocol]);
-jalview.io.JnetAnnotationMaker.add_annotation (d, a.viewport.getAlignment (), 0, false);
-var e = a.viewport.getAlignment ().getSequenceAt (0);
-a.viewport.getAlignment ().setSeqrep (e);
-var f = new jalview.datamodel.ColumnSelection ();
-f.hideInsertionsFor (e);
-a.viewport.setColumnSelection (f);
-a.alignPanel.fontChanged ();
-a.alignPanel.setScrollValues (0, 0);
-b = true;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-}return b;
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "loadAnnotations",
-function (a) {
-var b = false;
-var c = this.b$["jalview.bin.JalviewLite"].annotations;
-if (c != null) {
-c = this.setProtocolState (c);
-if ( new jalview.io.AnnotationFile ().annotateAlignmentView (a.viewport, c, this.protocol)) {
-a.alignPanel.fontChanged ();
-a.alignPanel.setScrollValues (0, 0);
-b = true;
-} else {
-System.err.println ("Annotations were not added from annotation file '" + c + "'");
-}}return b;
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "loadFeatures",
-function (a) {
-var b = false;
-var c = this.b$["jalview.bin.JalviewLite"].hideFeatureGroups;
-if (c != null) {
-a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), false);
-}c = this.b$["jalview.bin.JalviewLite"].showFeatureGroups;
-if (c != null) {
-a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), true);
-}c = this.b$["jalview.bin.JalviewLite"].features;
-if (c != null) {
-c = this.setProtocolState (c);
-b = a.parseFeaturesFile (c, this.protocol);
-}c = this.b$["jalview.bin.JalviewLite"].showFeatureSettings;
-if (c != null && c.equalsIgnoreCase ("true")) {
-a.viewport.setShowSequenceFeatures (true);
- new jalview.appletgui.FeatureSettings (a.alignPanel);
-}return b;
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "loadScoreFile",
-function (a) {
-var b = false;
-if (this.b$["jalview.bin.JalviewLite"].scoreFile != null && !"".equals (this.b$["jalview.bin.JalviewLite"].scoreFile)) {
-try {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Attempting to load T-COFFEE score file from the scoreFile parameter");
-}b = a.loadScoreFile (this.b$["jalview.bin.JalviewLite"].scoreFile);
-if (!b) {
-System.err.println ("Failed to parse T-COFFEE parameter as a valid score file ('" + this.b$["jalview.bin.JalviewLite"].scoreFile + "')");
-}} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-System.err.printf ("Cannot read score file: '%s'. Cause: %s \n", [this.b$["jalview.bin.JalviewLite"].scoreFile, e.getMessage ()]);
-} else {
-throw e;
-}
-}
-}return b;
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "loadTree",
-function (a) {
-var b = false;
-if (this.b$["jalview.bin.JalviewLite"].treeFile == null) {
-this.b$["jalview.bin.JalviewLite"].treeFile = this.applet.getParameter ("treeFile");
-}if (this.b$["jalview.bin.JalviewLite"].treeFile != null) {
-try {
-this.b$["jalview.bin.JalviewLite"].treeFile = this.setProtocolState (this.b$["jalview.bin.JalviewLite"].treeFile);
-var c = new jalview.io.NewickFile (this.b$["jalview.bin.JalviewLite"].treeFile, this.protocol);
-c.parse ();
-if (c.getTree () != null) {
-a.loadTree (c, this.b$["jalview.bin.JalviewLite"].treeFile);
-b = true;
-this.dbgMsg ("Successfully imported tree.");
-} else {
-this.dbgMsg ("Tree parameter did not resolve to a valid tree.");
-}} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-}return b;
-}, "jalview.appletgui.AlignFrame");
-Clazz.defineMethod (c$, "inArchive",
-function (a) {
-try {
-var b = (this.getClass ().getResourceAsStream ("/" + a) != null);
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Resource '" + a + "' was " + (b ? "" : "not") + " located by classloader.");
-}return b;
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-System.out.println ("Exception checking resources: " + a + " " + ex);
-return false;
-} else {
-throw ex;
-}
-}
-}, "~S");
-Clazz.defineMethod (c$, "addProtocol",
-function (a) {
-if (a.indexOf ("://") == -1) {
-var b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getDocumentBase ());
-if (this.urlExists (b)) {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Prepended document base for resource: '" + a + "'");
-}return b;
-}b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getCodeBase ());
-if (this.urlExists (b)) {
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Prepended codebase for resource: '" + a + "'");
-}return b;
-}}return a;
-}, "~S");
-Clazz.defineMethod (c$, "urlExists",
-($fz = function (a) {
-var b = null;
-try {
-b = new java.net.URL (a).openStream ();
-if (b != null) {
-return true;
-}} catch (x) {
-if (Clazz.exceptionOf (x, Exception)) {
-} else {
-throw x;
-}
-} finally {
-if (b != null) {
-try {
-b.close ();
-} catch (e) {
-if (Clazz.exceptionOf (e, java.io.IOException)) {
-} else {
-throw e;
-}
-}
-}}
-return false;
-}, $fz.isPrivate = true, $fz), "~S");
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$1$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$1", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.sq.findIndex (this.f$.pos), null);
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$2$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$2", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.pos, null);
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$3$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$3", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-this.f$.alf.select (this.f$.sel, this.f$.csel);
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$4$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$4", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-try {
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverStructure ( new Integer (this.f$.pdbResNum).intValue (), this.f$.chain, this.f$.pdbfile);
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("mouseOver for '" + this.f$.pdbResNum + "' in chain '" + this.f$.chain + "' in structure '" + this.f$.pdbfile + "'");
-}} catch (e) {
-if (Clazz.exceptionOf (e, NumberFormatException)) {
-System.err.println ("Ignoring invalid residue number string '" + this.f$.pdbResNum + "'");
-} else {
-throw e;
-}
-}
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$5$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$5", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-try {
-this.f$.alf.scrollTo ( new Integer (this.f$.topRow).intValue (), new Integer (this.f$.leftHandColumn).intValue ());
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "' and leftHandColumn='" + this.f$.leftHandColumn + "')");
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$6$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$6", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-try {
-this.f$.alf.scrollToRow ( new Integer (this.f$.topRow).intValue ());
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "')");
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$7$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$7", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-try {
-this.f$.alf.scrollToColumn ( new Integer (this.f$.leftHandColumn).intValue ());
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-System.err.println ("Couldn't parse integer arguments (leftHandColumn='" + this.f$.leftHandColumn + "')");
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-});
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$8$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$8", null, java.awt.event.ActionListener);
-Clazz.overrideMethod (c$, "actionPerformed",
-function (e) {
-var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.b$["jalview.bin.JalviewLite"].startupFile, this.b$["jalview.bin.JalviewLite"].file2, this.b$["jalview.bin.JalviewLite"]);
-loader.start ();
-}, "java.awt.event.ActionEvent");
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$9$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$9", java.awt.event.WindowAdapter);
-Clazz.overrideMethod (c$, "windowClosing",
-function (e) {
-if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
-var vp = (this.f$.frame).viewport;
-(this.f$.frame).closeMenuItem_actionPerformed ();
-if (vp.applet.currentAlignFrame === this.f$.frame) {
-vp.applet.currentAlignFrame = null;
-}vp.applet = null;
-vp = null;
-}jalview.bin.JalviewLite.lastFrameX -= 40;
-jalview.bin.JalviewLite.lastFrameY -= 40;
-if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.EmbmenuFrame)) {
-(this.f$.frame).destroyMenus ();
-}this.f$.frame.setMenuBar (null);
-this.f$.frame.dispose ();
-}, "java.awt.event.WindowEvent");
-Clazz.defineMethod (c$, "windowActivated",
-function (e) {
-if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
-(this.f$.frame).viewport.applet.currentAlignFrame = this.f$.frame;
-if (jalview.bin.JalviewLite.debug) {
-System.err.println ("Activated window " + this.f$.frame);
-}}Clazz.superCall (this, jalview.bin.JalviewLite$9, "windowActivated", [e]);
-}, "java.awt.event.WindowEvent");
-c$ = Clazz.p0p ();
-};
-c$.$JalviewLite$10$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$10", null, Runnable);
-Clazz.overrideMethod (c$, "run",
-function () {
-this.f$.alf.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (this.f$.groups), this.f$.st);
-});
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"TRUE", "true",
-"FALSE", "false",
-"debug", false,
-"lastFrameX", 200,
-"lastFrameY", 200,
-"builddate", null,
-"version", null,
-"installation", null);
-});
+Clazz.declarePackage ("jalview.bin");
+Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.javascript.JalviewLiteJsApi", "java.lang.Thread", "javax.swing.JApplet", "jalview.util.MessageManager", "java.util.Hashtable", "$.Vector", "javax.swing.JButton"], "jalview.bin.JalviewLite", ["jalview.analysis.SequenceIdMatcher", "jalview.appletgui.AlignFrame", "$.EmbmenuFrame", "$.FeatureSettings", "$.SplitFrame", "jalview.datamodel.Alignment", "$.AlignmentOrder", "$.ColumnSelection", "$.PDBEntry", "$.SequenceGroup", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.FileParse", "$.IdentifyFile", "$.JnetAnnotationMaker", "$.NewickFile", "jalview.javascript.JSFunctionExec", "$.JsSelectionSender", "$.MouseOverListener", "$.MouseOverStructureListener", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.UserColourScheme", "jalview.structure.SelectionListener", "$.StructureSelectionManager", "java.awt.Color", "$.EventQueue", "$.Font", "java.awt.event.ActionListener", "$.WindowAdapter", "java.io.BufferedReader", "$.InputStreamReader", "java.lang.Error", "$.StringBuffer", "java.net.URL", "java.util.StringTokenizer", "netscape.javascript.JSObject"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.embedded = false;
+this.enableSplitFrame = false;
+this.showButton = true;
+this.checkForJmol = true;
+this.jalviewServletURL = null;
+this.startupFile = "No file";
+this.helpUrl = null;
+this.externalstructureviewer = null;
+this.sep = null;
+this.rgb = null;
+this.labelColour = null;
+this.initjscallback = null;
+this.pdbFile = null;
+this.sequence = null;
+this.jnetFile = null;
+this.annotations = null;
+this.hideFeatureGroups = null;
+this.showFeatureGroups = null;
+this.features = null;
+this.showFeatureSettings = null;
+this.scoreFile = null;
+this.treeFile = null;
+this.windowWidth = null;
+this.windowHeight = null;
+this.defaultColour = null;
+this.sortBy = null;
+this.wrap = null;
+this.centrecolumnlabels = null;
+this.userDefinedColour = null;
+this.widthScale = null;
+this.heightScale = null;
+this.upperCase = null;
+this.file2 = null;
+this.javascriptListeners = null;
+this.jsFunctionExec = null;
+this.fileFound = true;
+this.launcher = null;
+this.currentAlignFrame = null;
+this.initialAlignFrame = null;
+this.checkedForJmol = false;
+this.jmolAvailable = false;
+this.alignPdbStructures = false;
+this.useXtrnalSviewer = false;
+this.haveShownLoadMessage = false;
+if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadJmolThread")) {
+jalview.bin.JalviewLite.$JalviewLite$LoadJmolThread$ ();
+}
+if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadingThread")) {
+jalview.bin.JalviewLite.$JalviewLite$LoadingThread$ ();
+}
+this.separator = "\u00ac";
+this.jsfallbackEnabled = false;
+this.jshashes = null;
+this.jsmessages = null;
+this.jsExecQueue = null;
+Clazz.instantialize (this, arguments);
+}, jalview.bin, "JalviewLite", javax.swing.JApplet, [jalview.api.StructureSelectionManagerProvider, jalview.javascript.JalviewLiteJsApi]);
+Clazz.prepareFields (c$, function () {
+this.javascriptListeners = new java.util.Vector ();
+this.launcher = new javax.swing.JButton (jalview.util.MessageManager.getString ("label.start_jalview"));
+this.jshashes = new java.util.Hashtable ();
+this.jsmessages = new java.util.Hashtable ();
+this.jsExecQueue = new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "setParams",
+($fz = function () {
+jalview.bin.JalviewLite.debug = "true".equalsIgnoreCase (this.getParameter ("debug"));
+this.enableSplitFrame = "true".equalsIgnoreCase (this.getParameter ("enableSplitFrame"));
+this.embedded = "true".equalsIgnoreCase (this.getParameter ("embedded"));
+this.showButton = !"false".equalsIgnoreCase (this.getParameter ("showbutton"));
+this.jalviewServletURL = this.getParameter ("APPLICATION_URL");
+this.startupFile = this.getParameter ("file");
+this.helpUrl = this.getParameter ("jalviewhelpurl");
+this.externalstructureviewer = this.getParameter ("externalstructureviewer");
+this.checkForJmol = !"true".equals (this.getParameter ("nojmol"));
+this.sep = this.getParameter ("separator");
+this.rgb = this.getParameter ("RGB");
+this.labelColour = this.getParameter ("label");
+this.initjscallback = this.getParameter ("oninit");
+this.pdbFile = this.getParameter ("PDBFILE");
+this.sequence = this.getParameter ("PDBSEQ");
+this.jnetFile = this.getParameter ("jnetfile");
+this.annotations = this.getParameter ("annotations");
+this.hideFeatureGroups = this.getParameter ("hidefeaturegroups");
+this.showFeatureGroups = this.getParameter ("showfeaturegroups");
+this.features = this.getParameter ("features");
+this.showFeatureSettings = this.getParameter ("showFeatureSettings");
+this.scoreFile = this.getParameter ("scoreFile");
+this.treeFile = this.getParameter ("tree");
+if (this.treeFile == null) this.treeFile = this.getParameter ("treeFile");
+this.windowWidth = this.getParameter ("windowWidth");
+this.windowHeight = this.getParameter ("windowHeight");
+this.defaultColour = this.getParameter ("defaultColour");
+this.sortBy = this.getParameter ("sortBy");
+this.wrap = this.getParameter ("wrap");
+this.centrecolumnlabels = this.getParameter ("centrecolumnlabels");
+this.userDefinedColour = this.getParameter ("userDefinedColour");
+this.widthScale = this.getParameter ("widthScale");
+this.heightScale = this.getParameter ("heightScale");
+this.upperCase = this.getParameter ("upperCase");
+this.file2 = this.getParameter ("file2");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getDefaultParameter",
+function (name, def) {
+var stn;
+if ((stn = this.getParameter (name)) == null) {
+return def;
+}if (stn.toLowerCase ().equals ("true")) {
+return true;
+}return false;
+}, "~S,~B");
+Clazz.defineMethod (c$, "getLinkParams",
+function (links) {
+var label;
+var url;
+for (var i = 1; i < 10; i++) {
+label = this.getParameter ("linkLabel_" + i);
+url = this.getParameter ("linkURL_" + i);
+if (label != null && url != null) {
+links.addElement (label + "|" + url);
+}}
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getStructureSelectionManager",
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this);
+});
+Clazz.defineMethod (c$, "getSelectedSequences",
+function () {
+return this.getSelectedSequencesFrom (this.getDefaultTargetFrame ());
+});
+Clazz.defineMethod (c$, "getSelectedSequences",
+function (sep) {
+return this.getSelectedSequencesFrom (this.getDefaultTargetFrame (), sep);
+}, "~S");
+Clazz.defineMethod (c$, "getSelectedSequencesFrom",
+function (alf) {
+return this.getSelectedSequencesFrom (alf, this.separator);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "getSelectedSequencesFrom",
+function (alf, sep) {
+var result = new StringBuffer ("");
+if (sep == null || sep.length == 0) {
+sep = this.separator;
+}if (alf.viewport.getSelectionGroup () != null) {
+var seqs = alf.viewport.getSelectionGroup ().getSequencesInOrder (alf.viewport.getAlignment ());
+for (var i = 0; i < seqs.length; i++) {
+result.append (seqs[i].getName ());
+result.append (sep);
+}
+}return result.toString ();
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "highlight",
+function (sequenceId, position, alignedPosition) {
+this.highlightIn (this.getDefaultTargetFrame (), sequenceId, position, alignedPosition);
+}, "~S,~S,~S");
+Clazz.overrideMethod (c$, "highlightIn",
+function (alf, sequenceId, position, alignedPosition) {
+var matcher = new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var sq = matcher.findIdMatch (sequenceId);
+if (sq != null) {
+var apos = -1;
+try {
+apos = new Integer (position).intValue ();
+apos--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+return;
+} else {
+throw ex;
+}
+}
+var me = this;
+var pos = apos;
+if (alignedPosition != null && (alignedPosition.trim ().length == 0 || alignedPosition.toLowerCase ().indexOf ("false") > -1)) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$1") ? 0 : jalview.bin.JalviewLite.$JalviewLite$1$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$1, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));
+} else {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$2") ? 0 : jalview.bin.JalviewLite.$JalviewLite$2$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$2, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));
+}}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.defineMethod (c$, "select",
+function (sequenceIds, columns) {
+this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, this.separator);
+}, "~S,~S");
+Clazz.defineMethod (c$, "select",
+function (sequenceIds, columns, sep) {
+this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, sep);
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "selectIn",
+function (alf, sequenceIds, columns) {
+this.selectIn (alf, sequenceIds, columns, this.separator);
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.defineMethod (c$, "selectIn",
+function (alf, sequenceIds, columns, sep) {
+if (sep == null || sep.length == 0) {
+sep = this.separator;
+} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Selecting region using separator string '" + this.separator + "'");
+}}var ids = this.separatorListToArray (sequenceIds, sep);
+var cols = this.separatorListToArray (columns, sep);
+var sel = new jalview.datamodel.SequenceGroup ();
+var csel = new jalview.datamodel.ColumnSelection ();
+var al = alf.viewport.getAlignment ();
+var matcher = new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var start = 0;
+var end = al.getWidth ();
+var alw = al.getWidth ();
+var seqsfound = true;
+if (ids != null && ids.length > 0) {
+seqsfound = false;
+for (var i = 0; i < ids.length; i++) {
+if (ids[i].trim ().length == 0) {
+continue;
+}var sq = matcher.findIdMatch (ids[i]);
+if (sq != null) {
+seqsfound = true;
+sel.addSequence (sq, false);
+}}
+}var inseqpos = false;
+if (cols != null && cols.length > 0) {
+var seset = false;
+for (var i = 0; i < cols.length; i++) {
+var cl = cols[i].trim ();
+if (cl.length == 0) {
+continue;
+}var p;
+if ((p = cl.indexOf ("-")) > -1) {
+var from = -1;
+var to = -1;
+try {
+from = new Integer (cl.substring (0, p)).intValue ();
+from--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+System.err.println ("ERROR: Couldn't parse first integer in range element column selection string '" + cl + "' - format is 'from-to'");
+return;
+} else {
+throw ex;
+}
+}
+try {
+to = new Integer (cl.substring (p + 1)).intValue ();
+to--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+System.err.println ("ERROR: Couldn't parse second integer in range element column selection string '" + cl + "' - format is 'from-to'");
+return;
+} else {
+throw ex;
+}
+}
+if (from >= 0 && to >= 0) {
+if (from < to) {
+var t = to;
+to = from;
+to = t;
+}if (!seset) {
+start = from;
+end = to;
+seset = true;
+} else {
+if (start > from) {
+start = from;
+}if (end < to) {
+end = to;
+}}for (var r = from; r <= to; r++) {
+if (r >= 0 && r < alw) {
+csel.addElement (r);
+}}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Range '" + cl + "' deparsed as [" + from + "," + to + "]");
+}} else {
+System.err.println ("ERROR: Invalid Range '" + cl + "' deparsed as [" + from + "," + to + "]");
+}} else {
+var r = -1;
+try {
+r = new Integer (cl).intValue ();
+r--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+if (cl.toLowerCase ().equals ("sequence")) {
+inseqpos = true;
+} else {
+System.err.println ("ERROR: Couldn't parse integer from point selection element of column selection string '" + cl + "'");
+return;
+}} else {
+throw ex;
+}
+}
+if (r >= 0 && r <= alw) {
+if (!seset) {
+start = r;
+end = r;
+seset = true;
+} else {
+if (start > r) {
+start = r;
+}if (end < r) {
+end = r;
+}}csel.addElement (r);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Point selection '" + cl + "' deparsed as [" + r + "]");
+}} else {
+System.err.println ("ERROR: Invalid Point selection '" + cl + "' deparsed as [" + r + "]");
+}}}
+}if (seqsfound) {
+if (inseqpos && sel.getSize () > 0) {
+var rs = sel.getSequenceAt (0);
+start = rs.findIndex (start);
+end = rs.findIndex (end);
+if (csel != null) {
+var cs = csel.getSelected ();
+csel.clear ();
+for (var selectedCol, $selectedCol = cs.iterator (); $selectedCol.hasNext () && ((selectedCol = $selectedCol.next ()) || true);) {
+csel.addElement (rs.findIndex ((selectedCol).intValue ()));
+}
+}}sel.setStartRes (start);
+sel.setEndRes (end);
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$3") ? 0 : jalview.bin.JalviewLite.$JalviewLite$3$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$3, this, Clazz.cloneFinals ("alf", alf, "sel", sel, "csel", csel))));
+}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignment",
+function (format, suffix) {
+return this.getSelectedSequencesAsAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
+}, "~S,~S");
+Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignmentFrom",
+function (alf, format, suffix) {
+try {
+var seqlimits = suffix.equalsIgnoreCase ("true");
+if (alf.viewport.getSelectionGroup () != null) {
+var reply = new jalview.io.AppletFormatAdapter ().formatSequences (format, new jalview.datamodel.Alignment (alf.viewport.getSelectionAsNewSequence ()), seqlimits);
+return reply;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return "Error retrieving alignment in " + format + " format. ";
+} else {
+throw ex;
+}
+}
+return "";
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.overrideMethod (c$, "getAlignmentOrder",
+function () {
+return this.getAlignmentOrderFrom (this.getDefaultTargetFrame ());
+});
+Clazz.defineMethod (c$, "getAlignmentOrderFrom",
+function (alf) {
+return this.getAlignmentOrderFrom (alf, this.separator);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "getAlignmentOrderFrom",
+function (alf, sep) {
+var alorder = alf.getAlignViewport ().getAlignment ();
+var order = new Array (alorder.getHeight ());
+for (var i = 0; i < order.length; i++) {
+order[i] = alorder.getSequenceAt (i).getName ();
+}
+return this.arrayToSeparatorList (order);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.defineMethod (c$, "orderBy",
+function (order, undoName) {
+return this.orderBy (order, undoName, this.separator);
+}, "~S,~S");
+Clazz.defineMethod (c$, "orderBy",
+function (order, undoName, sep) {
+return this.orderAlignmentBy (this.getDefaultTargetFrame (), order, undoName, sep);
+}, "~S,~S,~S");
+Clazz.overrideMethod (c$, "orderAlignmentBy",
+function (alf, order, undoName, sep) {
+var ids = this.separatorListToArray (order, sep);
+var sqs = null;
+if (ids != null && ids.length > 0) {
+var matcher = new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var s = 0;
+sqs = new Array (ids.length);
+for (var i = 0; i < ids.length; i++) {
+if (ids[i].trim ().length == 0) {
+continue;
+}var sq = matcher.findIdMatch (ids[i]);
+if (sq != null) {
+sqs[s++] = sq;
+}}
+if (s > 0) {
+var sqq = new Array (s);
+System.arraycopy (sqs, 0, sqq, 0, s);
+sqs = sqq;
+} else {
+sqs = null;
+}}if (sqs == null) {
+return "";
+};var aorder = new jalview.datamodel.AlignmentOrder (sqs);
+if (undoName != null && undoName.trim ().length == 0) {
+undoName = null;
+}var _undoName = undoName;
+return alf.sortBy (aorder, _undoName) ? "true" : "";
+}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.defineMethod (c$, "getAlignment",
+function (format) {
+return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, "true");
+}, "~S");
+Clazz.defineMethod (c$, "getAlignmentFrom",
+function (alf, format) {
+return this.getAlignmentFrom (alf, format, "true");
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.defineMethod (c$, "getAlignment",
+function (format, suffix) {
+return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
+}, "~S,~S");
+Clazz.defineMethod (c$, "getAlignmentFrom",
+function (alf, format, suffix) {
+try {
+var seqlimits = suffix.equalsIgnoreCase ("true");
+var reply = new jalview.io.AppletFormatAdapter ().formatSequences (format, alf.viewport.getAlignment (), seqlimits);
+return reply;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return "Error retrieving alignment in " + format + " format. ";
+} else {
+throw ex;
+}
+}
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.overrideMethod (c$, "loadAnnotation",
+function (annotation) {
+this.loadAnnotationFrom (this.getDefaultTargetFrame (), annotation);
+}, "~S");
+Clazz.overrideMethod (c$, "loadAnnotationFrom",
+function (alf, annotation) {
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (alf.getAlignViewport (), annotation, jalview.io.AppletFormatAdapter.PASTE)) {
+alf.alignPanel.fontChanged ();
+alf.alignPanel.setScrollValues (0, 0);
+} else {
+alf.parseFeaturesFile (annotation, jalview.io.AppletFormatAdapter.PASTE);
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "loadFeatures",
+function (features, autoenabledisplay) {
+this.loadFeaturesFrom (this.getDefaultTargetFrame (), features, autoenabledisplay);
+}, "~S,~B");
+Clazz.overrideMethod (c$, "loadFeaturesFrom",
+function (alf, features, autoenabledisplay) {
+return alf.parseFeaturesFile (features, jalview.io.AppletFormatAdapter.PASTE, autoenabledisplay);
+}, "jalview.appletgui.AlignFrame,~S,~B");
+Clazz.overrideMethod (c$, "getFeatures",
+function (format) {
+return this.getFeaturesFrom (this.getDefaultTargetFrame (), format);
+}, "~S");
+Clazz.overrideMethod (c$, "getFeaturesFrom",
+function (alf, format) {
+return alf.outputFeatures (false, format);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "getAnnotation",
+function () {
+return this.getAnnotationFrom (this.getDefaultTargetFrame ());
+});
+Clazz.overrideMethod (c$, "getAnnotationFrom",
+function (alf) {
+return alf.outputAnnotations (false);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "newView",
+function () {
+return this.newViewFrom (this.getDefaultTargetFrame ());
+});
+Clazz.defineMethod (c$, "newView",
+function (name) {
+return this.newViewFrom (this.getDefaultTargetFrame (), name);
+}, "~S");
+Clazz.defineMethod (c$, "newViewFrom",
+function (alf) {
+return alf.newView (null);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "newViewFrom",
+function (alf, name) {
+return alf.newView (name);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "loadAlignment",
+function (text, title) {
+var al = null;
+var format = new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
+try {
+al = new jalview.io.AppletFormatAdapter ().readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
+if (al.getHeight () > 0) {
+return new jalview.appletgui.AlignFrame (al, this, title, false);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+return null;
+}, "~S,~S");
+Clazz.defineMethod (c$, "setMouseoverListener",
+function (listener) {
+this.setMouseoverListener (this.currentAlignFrame, listener);
+}, "~S");
+Clazz.defineMethod (c$, "setMouseoverListener",
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for mouseover listener.");
+return;
+}}var mol = new jalview.javascript.MouseOverListener (this, af, listener);
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a mouseover listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.defineMethod (c$, "setSelectionListener",
+function (listener) {
+this.setSelectionListener (null, listener);
+}, "~S");
+Clazz.defineMethod (c$, "setSelectionListener",
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
+return;
+}}var mol = new jalview.javascript.JsSelectionSender (this, af, listener);
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addSelectionListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a selection listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "setStructureListener",
+function (listener, modelSet) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
+return;
+}}var mol = new jalview.javascript.MouseOverStructureListener (this, listener, this.separatorListToArray (modelSet));
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a javascript structure viewer listener '" + listener + "'");
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "~S,~S");
+Clazz.overrideMethod (c$, "removeJavascriptListener",
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+listener = null;
+}}var rprt = false;
+for (var ms = 0, msSize = this.javascriptListeners.size (); ms < msSize; ) {
+var lstn = this.javascriptListeners.elementAt (ms);
+var lstner = lstn;
+if ((af == null || lstner.getAlignFrame () === af) && (listener == null || lstner.getListenerFunction ().equals (listener))) {
+this.javascriptListeners.removeElement (lstner);
+msSize--;
+if (Clazz.instanceOf (lstner, jalview.structure.SelectionListener)) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (lstner);
+} else {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (lstner, null);
+}rprt = jalview.bin.JalviewLite.debug;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Removed listener '" + listener + "'");
+}} else {
+ms++;
+}}
+if (rprt) {
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "stop",
+function () {
+System.err.println ("Applet " + this.getName () + " stop().");
+this.tidyUp ();
+});
+Clazz.overrideMethod (c$, "destroy",
+function () {
+System.err.println ("Applet " + this.getName () + " destroy().");
+this.tidyUp ();
+});
+Clazz.defineMethod (c$, "tidyUp",
+($fz = function () {
+this.removeAll ();
+if (this.currentAlignFrame != null && this.currentAlignFrame.viewport != null && this.currentAlignFrame.viewport.applet != null) {
+var av = this.currentAlignFrame.viewport;
+this.currentAlignFrame.closeMenuItem_actionPerformed ();
+av.applet = null;
+this.currentAlignFrame = null;
+}if (this.javascriptListeners != null) {
+while (this.javascriptListeners.size () > 0) {
+var mol = this.javascriptListeners.elementAt (0);
+this.javascriptListeners.removeElement (mol);
+if (Clazz.instanceOf (mol, jalview.structure.SelectionListener)) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (mol);
+} else {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (mol, null);
+}mol.jvlite = null;
+}
+}if (this.jsFunctionExec != null) {
+this.jsFunctionExec.stopQueue ();
+this.jsFunctionExec.jvlite = null;
+}this.initialAlignFrame = null;
+this.jsFunctionExec = null;
+this.javascriptListeners = null;
+jalview.structure.StructureSelectionManager.release (this);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "mouseOverStructure",
+function (pdbResNum, chain, pdbfile) {
+var me = this;
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$4") ? 0 : jalview.bin.JalviewLite.$JalviewLite$4$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$4, this, Clazz.cloneFinals ("me", me, "pdbResNum", pdbResNum, "chain", chain, "pdbfile", pdbfile))));
+}, "~S,~S,~S");
+Clazz.overrideMethod (c$, "scrollViewToIn",
+function (alf, topRow, leftHandColumn) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$5") ? 0 : jalview.bin.JalviewLite.$JalviewLite$5$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$5, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow, "leftHandColumn", leftHandColumn))));
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.overrideMethod (c$, "scrollViewToRowIn",
+function (alf, topRow) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$6") ? 0 : jalview.bin.JalviewLite.$JalviewLite$6$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$6, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow))));
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "scrollViewToColumnIn",
+function (alf, leftHandColumn) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$7") ? 0 : jalview.bin.JalviewLite.$JalviewLite$7$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$7, this, Clazz.cloneFinals ("alf", alf, "leftHandColumn", leftHandColumn))));
+}, "jalview.appletgui.AlignFrame,~S");
+c$.initBuildDetails = Clazz.defineMethod (c$, "initBuildDetails",
+($fz = function () {
+if (jalview.bin.JalviewLite.builddate == null) {
+jalview.bin.JalviewLite.builddate = "unknown";
+jalview.bin.JalviewLite.version = "test";
+jalview.bin.JalviewLite.installation = "Webstart";
+var url = jalview.bin.JalviewLite.getResource ("/.build_properties");
+if (url != null) {
+try {
+var reader = new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));
+var line;
+while ((line = reader.readLine ()) != null) {
+if (line.indexOf ("VERSION") > -1) {
+jalview.bin.JalviewLite.version = line.substring (line.indexOf ("=") + 1);
+}if (line.indexOf ("BUILD_DATE") > -1) {
+jalview.bin.JalviewLite.builddate = line.substring (line.indexOf ("=") + 1);
+}if (line.indexOf ("INSTALLATION") > -1) {
+jalview.bin.JalviewLite.installation = line.substring (line.indexOf ("=") + 1);
+}}
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}}, $fz.isPrivate = true, $fz));
+c$.getBuildDate = Clazz.defineMethod (c$, "getBuildDate",
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.builddate;
+});
+c$.getInstallation = Clazz.defineMethod (c$, "getInstallation",
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.installation;
+});
+c$.getVersion = Clazz.defineMethod (c$, "getVersion",
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.version;
+});
+Clazz.overrideMethod (c$, "init",
+function () {
+this.setParams ();
+try {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Applet context is '" + this.getAppletContext ().getClass ().toString () + "'");
+}var scriptObject = netscape.javascript.JSObject.getWindow (this);
+if (jalview.bin.JalviewLite.debug && scriptObject != null) {
+System.err.println ("Applet has Javascript callback support.");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Warning: No JalviewLite javascript callbacks available.");
+if (jalview.bin.JalviewLite.debug) {
+ex.printStackTrace ();
+}} else {
+throw ex;
+}
+}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("JalviewLite Version " + jalview.bin.JalviewLite.getVersion ());
+System.err.println ("Build Date : " + jalview.bin.JalviewLite.getBuildDate ());
+System.err.println ("Installation : " + jalview.bin.JalviewLite.getInstallation ());
+}if (this.externalstructureviewer != null) {
+this.useXtrnalSviewer = this.externalstructureviewer.trim ().toLowerCase ().equals ("true");
+}if (this.sep != null) {
+if (this.sep.length > 0) {
+this.separator = this.sep;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Separator set to '" + this.separator + "'");
+}} else {
+throw new Error (jalview.util.MessageManager.getString ("error.invalid_separator_parameter"));
+}}var r = 255;
+var g = 255;
+var b = 255;
+if (this.rgb != null) {
+try {
+r = Integer.parseInt (this.rgb.substring (0, 2), 16);
+g = Integer.parseInt (this.rgb.substring (2, 4), 16);
+b = Integer.parseInt (this.rgb.substring (4, 6), 16);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+r = 255;
+g = 255;
+b = 255;
+} else {
+throw ex;
+}
+}
+}this.rgb = this.labelColour;
+if (this.rgb != null) {
+this.launcher.setLabel (this.rgb);
+}this.setBackground ( new java.awt.Color (r, g, b));
+if (this.startupFile == null) {
+var data = new StringBuffer ("PASTE");
+var i = 1;
+while ((this.startupFile = this.getParameter ("sequence" + i)) != null) {
+data.append (this.startupFile.toString () + "\n");
+i++;
+}
+if (data.length () > 5) {
+this.startupFile = data.toString ();
+}}if (!this.enableSplitFrame) {
+this.file2 = null;
+}if (this.embedded) {
+var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
+{
+loader.run();
+}} else if (this.startupFile != null) {
+if (!this.showButton) {
+var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
+loader.start ();
+} else {
+this.add (this.launcher);
+this.launcher.addActionListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$8") ? 0 : jalview.bin.JalviewLite.$JalviewLite$8$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$8, this, null)));
+}} else {
+this.startupFile = "NO FILE";
+this.fileFound = false;
+this.callInitCallback ();
+}});
+Clazz.defineMethod (c$, "initLiveConnect",
+($fz = function () {
+var notFailed = false;
+var tries = 0;
+while (!notFailed && tries < 10) {
+if (tries > 0) {
+System.err.println ("LiveConnect request thread going to sleep.");
+}try {
+Thread.sleep (700 * (1 + tries));
+} catch (q) {
+if (Clazz.exceptionOf (q, InterruptedException)) {
+} else {
+throw q;
+}
+}
+;if (tries++ > 0) {
+System.err.println ("LiveConnect request thread woken up.");
+}try {
+var scriptObject = netscape.javascript.JSObject.getWindow (this);
+if (scriptObject.eval ("navigator") != null) {
+notFailed = true;
+}} catch (jsex) {
+if (Clazz.exceptionOf (jsex, Exception)) {
+System.err.println ("Attempt " + tries + " to access LiveConnect javascript failed.");
+} else {
+throw jsex;
+}
+}
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "callInitCallback",
+($fz = function () {
+if (this.initjscallback == null) {
+return;
+}this.initjscallback = this.initjscallback.trim ();
+if (this.initjscallback.length > 0) {
+var scriptObject = null;
+try {
+scriptObject = netscape.javascript.JSObject.getWindow (this);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;this.initLiveConnect ();
+if (scriptObject != null) {
+try {
+ new jalview.javascript.JSFunctionExec (this).executeJavascriptFunction (true, this.initjscallback, null, "Calling oninit callback '" + this.initjscallback + "'.");
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Exception when executing _oninit callback '" + this.initjscallback + "'.");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+} else {
+System.err.println ("Not executing _oninit callback '" + this.initjscallback + "' - no scripting allowed.");
+}}}, $fz.isPrivate = true, $fz));
+c$.addFrame = Clazz.defineMethod (c$, "addFrame",
+function (frame, title, width, height) {
+frame.setLocation (jalview.bin.JalviewLite.lastFrameX, jalview.bin.JalviewLite.lastFrameY);
+jalview.bin.JalviewLite.lastFrameX += 40;
+jalview.bin.JalviewLite.lastFrameY += 40;
+frame.setSize (width, height);
+frame.setTitle (title);
+frame.addWindowListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$9") ? 0 : jalview.bin.JalviewLite.$JalviewLite$9$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$9, this, Clazz.cloneFinals ("frame", frame))));
+frame.setVisible (true);
+}, "javax.swing.JFrame,~S,~N,~N");
+Clazz.defineMethod (c$, "paintComponent",
+function (g) {
+if (!this.fileFound) {
+g.setColor ( new java.awt.Color (200, 200, 200));
+g.setColor (java.awt.Color.cyan);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.setColor (java.awt.Color.red);
+g.drawString (jalview.util.MessageManager.getString ("label.jalview_cannot_open_file"), 5, 15);
+g.drawString ("\"" + this.startupFile + "\"", 5, 30);
+} else if (this.embedded && !this.haveShownLoadMessage) {
+g.setColor (java.awt.Color.black);
+g.setFont ( new java.awt.Font ("Arial", 1, 24));
+g.drawString (jalview.util.MessageManager.getString ("label.jalview_applet"), 50, Clazz.doubleToInt (this.getSize ().height / 2) - 30);
+g.drawString (jalview.util.MessageManager.getString ("label.loading_data") + "...", 50, Clazz.doubleToInt (this.getSize ().height / 2));
+this.haveShownLoadMessage = true;
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "getAppletWindow",
+function (class1) {
+var wnds = new java.util.Vector ();
+var cmp = this.getComponents ();
+if (cmp != null) {
+for (var i = 0; i < cmp.length; i++) {
+if (class1.isAssignableFrom (cmp[i].getClass ())) {
+wnds.addElement (cmp);
+}}
+}return wnds;
+}, "Class");
+Clazz.defineMethod (c$, "getDefaultTargetFrame",
+function () {
+if (this.currentAlignFrame != null) {
+return this.currentAlignFrame;
+}if (this.initialAlignFrame != null) {
+return this.initialAlignFrame;
+}System.err.println ("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");
+return null;
+});
+Clazz.defineMethod (c$, "separatorListToArray",
+function (list) {
+return this.separatorListToArray (list, this.separator);
+}, "~S");
+Clazz.defineMethod (c$, "separatorListToArray",
+function (list, separator) {
+var seplen = separator.length;
+if (list == null || list.equals ("") || list.equals (separator)) {
+return null;
+}var jv = new java.util.Vector ();
+var cp = 0;
+var pos;
+while ((pos = list.indexOf (separator, cp)) > cp) {
+jv.addElement (list.substring (cp, pos));
+cp = pos + seplen;
+}
+if (cp < list.length) {
+var c = list.substring (cp);
+if (!c.equals (separator)) {
+jv.addElement (c);
+}}if (jv.size () > 0) {
+var v = new Array (jv.size ());
+for (var i = 0; i < v.length; i++) {
+v[i] = jv.elementAt (i);
+}
+jv.removeAllElements ();
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Array from '" + separator + "' separated List:\n" + v.length);
+for (var i = 0; i < v.length; i++) {
+System.err.println ("item " + i + " '" + v[i] + "'");
+}
+}return v;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Empty Array from '" + separator + "' separated List");
+}return null;
+}, "~S,~S");
+Clazz.defineMethod (c$, "arrayToSeparatorList",
+function (list) {
+return this.arrayToSeparatorList (list, this.separator);
+}, "~A");
+Clazz.defineMethod (c$, "arrayToSeparatorList",
+function (list, separator) {
+var v = new StringBuffer ();
+if (list != null && list.length > 0) {
+for (var i = 0, iSize = list.length; i < iSize; i++) {
+if (list[i] != null) {
+if (i > 0) {
+v.append (separator);
+}v.append (list[i]);
+}}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Returning '" + separator + "' separated List:\n");
+System.err.println (v);
+}return v.toString ();
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Returning empty '" + separator + "' separated List\n");
+}return "" + separator;
+}, "~A,~S");
+Clazz.overrideMethod (c$, "getFeatureGroups",
+function () {
+var lst = this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroups ());
+return lst;
+});
+Clazz.overrideMethod (c$, "getFeatureGroupsOn",
+function (alf) {
+var lst = this.arrayToSeparatorList (alf.getFeatureGroups ());
+return lst;
+}, "jalview.appletgui.AlignFrame");
+Clazz.overrideMethod (c$, "getFeatureGroupsOfState",
+function (visible) {
+return this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroupsOfState (visible));
+}, "~B");
+Clazz.overrideMethod (c$, "getFeatureGroupsOfStateOn",
+function (alf, visible) {
+return this.arrayToSeparatorList (alf.getFeatureGroupsOfState (visible));
+}, "jalview.appletgui.AlignFrame,~B");
+Clazz.overrideMethod (c$, "setFeatureGroupStateOn",
+function (alf, groups, state) {
+var st = state;
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$10") ? 0 : jalview.bin.JalviewLite.$JalviewLite$10$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$10, this, Clazz.cloneFinals ("alf", alf, "groups", groups, "st", st))));
+}, "jalview.appletgui.AlignFrame,~S,~B");
+Clazz.overrideMethod (c$, "setFeatureGroupState",
+function (groups, state) {
+this.setFeatureGroupStateOn (this.getDefaultTargetFrame (), groups, state);
+}, "~S,~B");
+Clazz.overrideMethod (c$, "getSeparator",
+function () {
+return this.separator;
+});
+Clazz.overrideMethod (c$, "setSeparator",
+function (separator) {
+if (separator == null || separator.length < 1) {
+separator = "\u00ac";
+}this.separator = separator;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Default Separator now: '" + separator + "'");
+}}, "~S");
+Clazz.overrideMethod (c$, "addPdbFile",
+function (alFrame, sequenceId, pdbEntryString, pdbFile) {
+return alFrame.addPdbFile (sequenceId, pdbEntryString, pdbFile);
+}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.defineMethod (c$, "setAlignPdbStructures",
+function (alignPdbStructures) {
+this.alignPdbStructures = alignPdbStructures;
+}, "~B");
+Clazz.defineMethod (c$, "isAlignPdbStructures",
+function () {
+return this.alignPdbStructures;
+});
+Clazz.overrideMethod (c$, "start",
+function () {
+});
+Clazz.defineMethod (c$, "setJsMessageSet",
+function (messageclass, viewId, colcommands) {
+var msgset = this.jsmessages.get (messageclass);
+if (msgset == null) {
+msgset = new java.util.Hashtable ();
+this.jsmessages.put (messageclass, msgset);
+}msgset.put (viewId, colcommands);
+var l = Clazz.newLongArray (colcommands.length, 0);
+for (var i = 0; i < colcommands.length; i++) {
+l[i] = colcommands[i].hashCode ();
+}
+this.jshashes.put (messageclass + "|" + viewId, l);
+}, "~S,~S,~A");
+Clazz.overrideMethod (c$, "getJsMessage",
+function (messageclass, viewId) {
+var msgset = this.jsmessages.get (messageclass);
+if (msgset != null) {
+var msgs = msgset.get (viewId);
+if (msgs != null) {
+for (var i = 0; i < msgs.length; i++) {
+if (msgs[i] != null) {
+var m = msgs[i];
+msgs[i] = null;
+return m;
+}}
+}}return "";
+}, "~S,~S");
+Clazz.defineMethod (c$, "isJsMessageSetChanged",
+function (string, string2, colcommands) {
+var l = this.jshashes.get (string + "|" + string2);
+if (l == null && colcommands != null) {
+return true;
+}for (var i = 0; i < colcommands.length; i++) {
+if (l[i] != colcommands[i].hashCode ()) {
+return true;
+}}
+return false;
+}, "~S,~S,~A");
+Clazz.defineMethod (c$, "getJsExecQueue",
+function () {
+return this.jsExecQueue;
+});
+Clazz.defineMethod (c$, "setExecutor",
+function (jsFunctionExec2) {
+this.jsFunctionExec = jsFunctionExec2;
+}, "jalview.javascript.JSFunctionExec");
+Clazz.defineMethod (c$, "getDefaultColourParameter",
+function (colparam, defcolour) {
+var colprop = this.getParameter (colparam);
+if (colprop == null || colprop.trim ().length == 0) {
+return defcolour;
+}var col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colprop);
+if (col == null) {
+try {
+col = new jalview.schemes.UserColourScheme (colprop).findColour ('A');
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse '" + colprop + "' as a colour for " + colparam);
+col = null;
+} else {
+throw ex;
+}
+}
+}return (col == null) ? defcolour : col;
+}, "~S,java.awt.Color");
+Clazz.defineMethod (c$, "openJalviewHelpUrl",
+function () {
+if (this.helpUrl == null || this.helpUrl.trim ().length < 5) {
+this.helpUrl = "http://www.jalview.org/help.html";
+}this.showURL (this.helpUrl, "HELP");
+});
+Clazz.defineMethod (c$, "resolveUrlForLocalOrAbsolute",
+($fz = function (url, localref) {
+var codebase = localref.toString ();
+var pt = codebase.indexOf ("?");
+if (pt < 0) pt = codebase.length;
+codebase = codebase.substring (0, pt);
+codebase = codebase.substring (0, codebase.lastIndexOf ("/") + 1);
+if (url.indexOf ("/") == 0 && !localref.getProtocol ().equals ("file")) {
+pt = codebase.indexOf ("/", 8);
+return codebase.substring (0, pt) + url;
+}return codebase + url;
+}, $fz.isPrivate = true, $fz), "~S,java.net.URL");
+Clazz.defineMethod (c$, "showURL",
+function (url, target) {
+try {
+if (url.indexOf (":") == -1) {
+var prepend;
+url = this.resolveUrlForLocalOrAbsolute (url, prepend = this.getDefaultParameter ("resolvetocodebase", false) ? this.getDocumentBase () : this.getCodeBase ());
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Show url (prepended " + prepend + " - toggle resolvetocodebase if code/docbase resolution is wrong): " + url);
+}} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Show url: " + url);
+}}if (url.indexOf ("javascript:") == 0) {
+this.getAppletContext ().showDocument ( new java.net.URL (url));
+} else {
+this.getAppletContext ().showDocument ( new java.net.URL (url), target);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}, "~S,~S");
+c$.$JalviewLite$LoadJmolThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.running = false;
+Clazz.instantialize (this, arguments);
+}, jalview.bin.JalviewLite, "LoadJmolThread", Thread);
+Clazz.overrideMethod (c$, "run",
+function () {
+if (this.running || this.b$["jalview.bin.JalviewLite"].checkedForJmol) {
+return;
+}this.running = true;
+if (this.b$["jalview.bin.JalviewLite"].checkForJmol) {
+try {
+if (!System.getProperty ("java.version").startsWith ("1.1")) {
+Class.forName ("org.jmol.adapter.smarter.SmarterJmolAdapter");
+this.b$["jalview.bin.JalviewLite"].jmolAvailable = true;
+}if (!this.b$["jalview.bin.JalviewLite"].jmolAvailable) {
+System.out.println ("Jmol not available - Using MCview for structures");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, ClassNotFoundException)) {
+} else {
+throw ex;
+}
+}
+} else {
+this.b$["jalview.bin.JalviewLite"].jmolAvailable = false;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Skipping Jmol check. Will use MCView (probably)");
+}}this.b$["jalview.bin.JalviewLite"].checkedForJmol = true;
+this.running = false;
+});
+Clazz.defineMethod (c$, "notFinished",
+function () {
+return this.running || !this.b$["jalview.bin.JalviewLite"].checkedForJmol;
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$LoadingThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.protocol = null;
+this._file = null;
+this._file2 = null;
+this.applet = null;
+Clazz.instantialize (this, arguments);
+}, jalview.bin.JalviewLite, "LoadingThread", Thread);
+Clazz.defineMethod (c$, "dbgMsg",
+($fz = function (a) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (a);
+}}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "setProtocolState",
+function (a) {
+if (a.startsWith ("PASTE")) {
+a = a.substring (5);
+this.protocol = jalview.io.AppletFormatAdapter.PASTE;
+} else if (this.inArchive (a)) {
+this.protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
+} else {
+a = this.addProtocol (a);
+this.protocol = jalview.io.AppletFormatAdapter.URL;
+}this.dbgMsg ("Protocol identified as '" + this.protocol + "'");
+return a;
+}, "~S");
+Clazz.makeConstructor (c$,
+function (a, b, c) {
+Clazz.superConstructor (this, jalview.bin.JalviewLite.LoadingThread, []);
+this._file = a;
+this._file2 = b;
+this.applet = c;
+}, "~S,~S,jalview.bin.JalviewLite");
+Clazz.overrideMethod (c$, "run",
+function () {
+{
+System.out.println("BYPASSING JMOL LOADING FOR NOW. THIS WILL BE DONE ANOTHER WAY")
+}this.startLoading ();
+});
+Clazz.defineMethod (c$, "startLoading",
+($fz = function () {
+this.dbgMsg ("Loading thread started with:\n>>file\n" + this._file + ">>endfile");
+this.dbgMsg ("Loading started.");
+var a = this.readAlignment (this._file);
+var b = this.readAlignment (this._file2);
+if (a != null) {
+this.addToDisplay (a, b);
+this.loadTree (a);
+this.loadScoreFile (a);
+this.loadFeatures (a);
+this.loadAnnotations (a);
+this.loadJnetFile (a);
+this.loadPdbFiles (a);
+} else {
+this.b$["jalview.bin.JalviewLite"].fileFound = false;
+this.applet.remove (this.b$["jalview.bin.JalviewLite"].launcher);
+this.applet.repaint ();
+}this.b$["jalview.bin.JalviewLite"].callInitCallback ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "addToDisplay",
+function (a, b) {
+if (b == null) {
+a.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded);
+} else {
+var c = new jalview.appletgui.SplitFrame (a, b);
+c.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded, this.b$["jalview.bin.JalviewLite"]);
+}}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "readAlignment",
+function (a) {
+if (a == null) {
+return null;
+}var b = this.setProtocolState (a);
+var c = new jalview.io.IdentifyFile ().Identify (b, this.protocol);
+this.dbgMsg ("File identified as '" + c + "'");
+var d = null;
+try {
+d = new jalview.io.AppletFormatAdapter ().readFile (b, this.protocol, c);
+if ((d != null) && (d.getHeight () > 0)) {
+this.dbgMsg ("Successfully loaded file.");
+d.setDataset (null);
+var e = new jalview.appletgui.AlignFrame (d, this.applet, b, this.b$["jalview.bin.JalviewLite"].embedded, false);
+e.setTitle (b);
+if (this.b$["jalview.bin.JalviewLite"].initialAlignFrame == null) {
+this.b$["jalview.bin.JalviewLite"].initialAlignFrame = e;
+}this.b$["jalview.bin.JalviewLite"].currentAlignFrame = e;
+if (this.protocol === jalview.io.AppletFormatAdapter.PASTE) {
+e.setTitle (jalview.util.MessageManager.formatMessage ("label.sequences_from", Clazz.newArray (-1, [this.applet.getDocumentBase ().toString ()])));
+}e.setStatus (jalview.util.MessageManager.formatMessage ("label.successfully_loaded_file", Clazz.newArray (-1, [b])));
+return e;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+this.dbgMsg ("File load exception.");
+ex.printStackTrace ();
+if (jalview.bin.JalviewLite.debug) {
+try {
+var e = new jalview.io.FileParse (b, this.protocol);
+var f = null;
+this.dbgMsg (">>>Dumping contents of '" + b + "' " + "(" + this.protocol + ")");
+while ((f = e.nextLine ()) != null) {
+this.dbgMsg (f);
+}
+this.dbgMsg (">>>Dump finished.");
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Exception when trying to dump the content of the file parameter.");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}} else {
+throw ex;
+}
+}
+return null;
+}, "~S");
+Clazz.defineMethod (c$, "loadPdbFiles",
+function (a) {
+var b = false;
+this.applet.setAlignPdbStructures (this.b$["jalview.bin.JalviewLite"].getDefaultParameter ("alignpdbfiles", false));
+var c = 0;
+var d = new java.util.Vector ();
+var e = (this.applet.getDefaultParameter ("relaxedidmatch", false)) ? new jalview.analysis.SequenceIdMatcher (a.getAlignViewport ().getAlignment ().getSequencesArray ()) : null;
+var f;
+do {
+if (c > 0) {
+f = this.applet.getParameter ("PDBFILE" + c);
+} else {
+f = this.b$["jalview.bin.JalviewLite"].pdbFile;
+}if (f != null) {
+var g = new jalview.datamodel.PDBEntry ();
+var h;
+var i = null;
+var j = null;
+var k = new java.util.StringTokenizer (f, " ");
+if (k.countTokens () < 2) {
+if (this.b$["jalview.bin.JalviewLite"].sequence != null) {
+i = Clazz.newArray (-1, [e == null ? a.getAlignViewport ().getAlignment ().findName (this.b$["jalview.bin.JalviewLite"].sequence) : e.findIdMatch (this.b$["jalview.bin.JalviewLite"].sequence)]);
+}} else {
+f = k.nextToken ();
+var l = new java.util.Vector ();
+var m = new java.util.Vector ();
+while (k.hasMoreTokens ()) {
+h = k.nextToken ();
+var n = new java.util.StringTokenizer (h, "=");
+if (n.countTokens () > 1) {
+m.addElement (n.nextToken ());
+h = n.nextToken ();
+}l.addElement (e == null ? a.getAlignViewport ().getAlignment ().findName (h) : e.findIdMatch (h));
+}
+i = new Array (l.size ());
+l.copyInto (i);
+if (m.size () == l.size ()) {
+j = new Array (m.size ());
+m.copyInto (j);
+}}f = this.setProtocolState (f);
+if (this.protocol === jalview.io.AppletFormatAdapter.CLASSLOADER && !this.b$["jalview.bin.JalviewLite"].useXtrnalSviewer) {
+this.protocol = jalview.io.AppletFormatAdapter.URL;
+f = this.addProtocol (f);
+}g.setFile (f);
+if (i != null) {
+for (var l = 0; l < i.length; l++) {
+if (i[l] != null) {
+(i[l]).addPDBId (g);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet).registerPDBEntry (g);
+} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + l + ")");
+}}}
+if (!this.b$["jalview.bin.JalviewLite"].alignPdbStructures) {
+a.newStructureView (this.applet, g, i, j, this.protocol);
+} else {
+d.addElement ( Clazz.newArray (-1, [g, i, j, String.instantialize (this.protocol)]));
+}}}c++;
+} while (f != null || c < 10);
+if (d.size () > 0) {
+var g = new Array (d.size ());
+var h = new Array (d.size ());
+var i = new Array (d.size ());
+var j = new Array (d.size ());
+for (var k = 0, l = d.size (); k < l; k++) {
+var m = d.elementAt (k);
+h[k] = m[0];
+g[k] = m[1];
+i[k] = m[2];
+j[k] = m[3];
+}
+a.alignedStructureView (this.applet, h, g, i, j);
+b = true;
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadJnetFile",
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].jnetFile;
+if (c != null) {
+try {
+c = this.setProtocolState (c);
+var d = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [c, this.protocol]);
+jalview.io.JnetAnnotationMaker.add_annotation (d, a.viewport.getAlignment (), 0, false);
+var e = a.viewport.getAlignment ().getSequenceAt (0);
+a.viewport.getAlignment ().setSeqrep (e);
+var f = new jalview.datamodel.ColumnSelection ();
+f.hideInsertionsFor (e);
+a.viewport.setColumnSelection (f);
+a.alignPanel.fontChanged ();
+a.alignPanel.setScrollValues (0, 0);
+b = true;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadAnnotations",
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].annotations;
+if (c != null) {
+c = this.setProtocolState (c);
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (a.viewport, c, this.protocol)) {
+a.alignPanel.fontChanged ();
+a.alignPanel.setScrollValues (0, 0);
+b = true;
+} else {
+System.err.println ("Annotations were not added from annotation file '" + c + "'");
+}}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadFeatures",
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].hideFeatureGroups;
+if (c != null) {
+a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), false);
+}c = this.b$["jalview.bin.JalviewLite"].showFeatureGroups;
+if (c != null) {
+a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), true);
+}c = this.b$["jalview.bin.JalviewLite"].features;
+if (c != null) {
+c = this.setProtocolState (c);
+b = a.parseFeaturesFile (c, this.protocol);
+}c = this.b$["jalview.bin.JalviewLite"].showFeatureSettings;
+if (c != null && c.equalsIgnoreCase ("true")) {
+a.viewport.setShowSequenceFeatures (true);
+ new jalview.appletgui.FeatureSettings (a.alignPanel);
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadScoreFile",
+function (a) {
+var b = false;
+if (this.b$["jalview.bin.JalviewLite"].scoreFile != null && !"".equals (this.b$["jalview.bin.JalviewLite"].scoreFile)) {
+try {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Attempting to load T-COFFEE score file from the scoreFile parameter");
+}b = a.loadScoreFile (this.b$["jalview.bin.JalviewLite"].scoreFile);
+if (!b) {
+System.err.println ("Failed to parse T-COFFEE parameter as a valid score file ('" + this.b$["jalview.bin.JalviewLite"].scoreFile + "')");
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.printf ("Cannot read score file: '%s'. Cause: %s \n", [this.b$["jalview.bin.JalviewLite"].scoreFile, e.getMessage ()]);
+} else {
+throw e;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadTree",
+function (a) {
+var b = false;
+if (this.b$["jalview.bin.JalviewLite"].treeFile == null) {
+this.b$["jalview.bin.JalviewLite"].treeFile = this.applet.getParameter ("treeFile");
+}if (this.b$["jalview.bin.JalviewLite"].treeFile != null) {
+try {
+this.b$["jalview.bin.JalviewLite"].treeFile = this.setProtocolState (this.b$["jalview.bin.JalviewLite"].treeFile);
+var c = new jalview.io.NewickFile (this.b$["jalview.bin.JalviewLite"].treeFile, this.protocol);
+c.parse ();
+if (c.getTree () != null) {
+a.loadTree (c, this.b$["jalview.bin.JalviewLite"].treeFile);
+b = true;
+this.dbgMsg ("Successfully imported tree.");
+} else {
+this.dbgMsg ("Tree parameter did not resolve to a valid tree.");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "inArchive",
+function (a) {
+try {
+var b = (this.getClass ().getResourceAsStream ("/" + a) != null);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Resource '" + a + "' was " + (b ? "" : "not") + " located by classloader.");
+}return b;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.out.println ("Exception checking resources: " + a + " " + ex);
+return false;
+} else {
+throw ex;
+}
+}
+}, "~S");
+Clazz.defineMethod (c$, "addProtocol",
+function (a) {
+if (a.indexOf ("://") == -1) {
+var b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getDocumentBase ());
+if (this.urlExists (b)) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Prepended document base for resource: '" + a + "'");
+}return b;
+}b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getCodeBase ());
+if (this.urlExists (b)) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Prepended codebase for resource: '" + a + "'");
+}return b;
+}}return a;
+}, "~S");
+Clazz.defineMethod (c$, "urlExists",
+($fz = function (a) {
+var b = null;
+try {
+b = new java.net.URL (a).openStream ();
+if (b != null) {
+return true;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+} finally {
+if (b != null) {
+try {
+b.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+}}
+return false;
+}, $fz.isPrivate = true, $fz), "~S");
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$1", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.sq.findIndex (this.f$.pos), null);
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$2", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.pos, null);
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$3", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+this.f$.alf.select (this.f$.sel, this.f$.csel);
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$4", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+try {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverStructure ( new Integer (this.f$.pdbResNum).intValue (), this.f$.chain, this.f$.pdbfile);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("mouseOver for '" + this.f$.pdbResNum + "' in chain '" + this.f$.chain + "' in structure '" + this.f$.pdbfile + "'");
+}} catch (e) {
+if (Clazz.exceptionOf (e, NumberFormatException)) {
+System.err.println ("Ignoring invalid residue number string '" + this.f$.pdbResNum + "'");
+} else {
+throw e;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$5", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+try {
+this.f$.alf.scrollTo ( new Integer (this.f$.topRow).intValue (), new Integer (this.f$.leftHandColumn).intValue ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "' and leftHandColumn='" + this.f$.leftHandColumn + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$6$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$6", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+try {
+this.f$.alf.scrollToRow ( new Integer (this.f$.topRow).intValue ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$7$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$7", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+try {
+this.f$.alf.scrollToColumn ( new Integer (this.f$.leftHandColumn).intValue ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (leftHandColumn='" + this.f$.leftHandColumn + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$8$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$8", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed",
+function (e) {
+var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.b$["jalview.bin.JalviewLite"].startupFile, this.b$["jalview.bin.JalviewLite"].file2, this.b$["jalview.bin.JalviewLite"]);
+loader.start ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$9$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$9", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing",
+function (e) {
+if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
+var vp = (this.f$.frame).viewport;
+(this.f$.frame).closeMenuItem_actionPerformed ();
+if (vp.applet.currentAlignFrame === this.f$.frame) {
+vp.applet.currentAlignFrame = null;
+}vp.applet = null;
+vp = null;
+}jalview.bin.JalviewLite.lastFrameX -= 40;
+jalview.bin.JalviewLite.lastFrameY -= 40;
+if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.EmbmenuFrame)) {
+(this.f$.frame).destroyMenus ();
+}this.f$.frame.setMenuBar (null);
+this.f$.frame.dispose ();
+}, "java.awt.event.WindowEvent");
+Clazz.defineMethod (c$, "windowActivated",
+function (e) {
+if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
+(this.f$.frame).viewport.applet.currentAlignFrame = this.f$.frame;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Activated window " + this.f$.frame);
+}}Clazz.superCall (this, jalview.bin.JalviewLite$9, "windowActivated", [e]);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$10$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$10", null, Runnable);
+Clazz.overrideMethod (c$, "run",
+function () {
+this.f$.alf.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (this.f$.groups), this.f$.st);
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"TRUE", "true",
+"FALSE", "false",
+"debug", false,
+"lastFrameX", 200,
+"lastFrameY", 200,
+"builddate", null,
+"version", null,
+"installation", null);
+});
diff --git a/bin/jalview/commands/ChangeCaseCommand.js b/bin/jalview/commands/ChangeCaseCommand.js
index fb085d6..0ebfc96 100644
--- a/bin/jalview/commands/ChangeCaseCommand.js
+++ b/bin/jalview/commands/ChangeCaseCommand.js
@@ -1,74 +1,74 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.CommandI"], "jalview.commands.ChangeCaseCommand", ["java.lang.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.description = null;
-this.caseChange = -1;
-this.seqs = null;
-this.regions = null;
-Clazz.instantialize (this, arguments);
-}, jalview.commands, "ChangeCaseCommand", null, jalview.commands.CommandI);
-Clazz.makeConstructor (c$,
-function (description, seqs, regions, caseChange) {
-this.description = description;
-this.seqs = seqs;
-this.regions = regions;
-this.caseChange = caseChange;
-this.doCommand (null);
-}, "~S,~A,java.util.List,~N");
-Clazz.overrideMethod (c$, "getDescription",
-function () {
-return this.description;
-});
-Clazz.overrideMethod (c$, "getSize",
-function () {
-return 1;
-});
-Clazz.overrideMethod (c$, "doCommand",
-function (views) {
-this.changeCase (true);
-}, "~A");
-Clazz.overrideMethod (c$, "undoCommand",
-function (views) {
-this.changeCase (false);
-}, "~A");
-Clazz.defineMethod (c$, "changeCase",
-function (doCommand) {
-var sequence;
-var start;
-var end;
-var nextChar;
-for (var r, $r = this.regions.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
-start = r[0];
-for (var s = 0; s < this.seqs.length; s++) {
-sequence = this.seqs[s].getSequenceAsString ();
-var newSeq = new StringBuffer ();
-if (r[1] > sequence.length) {
-end = sequence.length;
-} else {
-end = r[1];
-}if (start > 0) {
-newSeq.append (sequence.substring (0, start));
-}if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && !doCommand)) {
-newSeq.append (sequence.substring (start, end).toUpperCase ());
-} else if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && !doCommand)) {
-newSeq.append (sequence.substring (start, end).toLowerCase ());
-} else {
-for (var c = start; c < end; c++) {
-nextChar = sequence.charAt (c);
-if ('a' <= nextChar && nextChar <= 'z') {
-nextChar = String.fromCharCode (nextChar.charCodeAt (0) - (32));
-} else if ('A' <= nextChar && nextChar <= 'Z') {
-nextChar = String.fromCharCode (nextChar.charCodeAt (0) + (32));
-}newSeq.append (nextChar);
-}
-}if (end < sequence.length) {
-newSeq.append (sequence.substring (end));
-}this.seqs[s].setSequence (newSeq.toString ());
-}
-}
-}, "~B");
-Clazz.defineStatics (c$,
-"TO_LOWER", 0,
-"TO_UPPER", 1,
-"TOGGLE_CASE", 2);
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.CommandI"], "jalview.commands.ChangeCaseCommand", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.description = null;
+this.caseChange = -1;
+this.seqs = null;
+this.regions = null;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "ChangeCaseCommand", null, jalview.commands.CommandI);
+Clazz.makeConstructor (c$,
+function (description, seqs, regions, caseChange) {
+this.description = description;
+this.seqs = seqs;
+this.regions = regions;
+this.caseChange = caseChange;
+this.doCommand (null);
+}, "~S,~A,java.util.List,~N");
+Clazz.overrideMethod (c$, "getDescription",
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "getSize",
+function () {
+return 1;
+});
+Clazz.overrideMethod (c$, "doCommand",
+function (views) {
+this.changeCase (true);
+}, "~A");
+Clazz.overrideMethod (c$, "undoCommand",
+function (views) {
+this.changeCase (false);
+}, "~A");
+Clazz.defineMethod (c$, "changeCase",
+function (doCommand) {
+var sequence;
+var start;
+var end;
+var nextChar;
+for (var r, $r = this.regions.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+start = r[0];
+for (var s = 0; s < this.seqs.length; s++) {
+sequence = this.seqs[s].getSequenceAsString ();
+var newSeq = new StringBuffer ();
+if (r[1] > sequence.length) {
+end = sequence.length;
+} else {
+end = r[1];
+}if (start > 0) {
+newSeq.append (sequence.substring (0, start));
+}if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && !doCommand)) {
+newSeq.append (sequence.substring (start, end).toUpperCase ());
+} else if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && !doCommand)) {
+newSeq.append (sequence.substring (start, end).toLowerCase ());
+} else {
+for (var c = start; c < end; c++) {
+nextChar = sequence.charAt (c);
+if ('a' <= nextChar && nextChar <= 'z') {
+nextChar = String.fromCharCode (nextChar.charCodeAt (0) - (32));
+} else if ('A' <= nextChar && nextChar <= 'Z') {
+nextChar = String.fromCharCode (nextChar.charCodeAt (0) + (32));
+}newSeq.append (nextChar);
+}
+}if (end < sequence.length) {
+newSeq.append (sequence.substring (end));
+}this.seqs[s].setSequence (newSeq.toString ());
+}
+}
+}, "~B");
+Clazz.defineStatics (c$,
+"TO_LOWER", 0,
+"TO_UPPER", 1,
+"TOGGLE_CASE", 2);
+});
diff --git a/bin/jalview/commands/CommandI.js b/bin/jalview/commands/CommandI.js
index 792918f..598c931 100644
--- a/bin/jalview/commands/CommandI.js
+++ b/bin/jalview/commands/CommandI.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.declareInterface (jalview.commands, "CommandI");
+Clazz.declarePackage ("jalview.commands");
+Clazz.declareInterface (jalview.commands, "CommandI");
diff --git a/bin/jalview/commands/EditCommand.class b/bin/jalview/commands/EditCommand.class
index 21a616107a7a24691e05ebf7d2ef1d0a7056933e..8e6645ea80f69a154d1cc7a11c0a2ca688e96452 100644
GIT binary patch
delta 140
zcmeykfbq!!#tr+enYcf1K4`t1i`kpOYI3$)w1_f0!lJUQDfT2g_X@fgz|23AG|rk@P#K+MJTi$UN&
z1JmSNZkkM7Op{sM4J<^N{xj$?aIrIJF*33<<^i<;sb7qYj0_CQzZlqosu?(uB^f|6
ivK&m4)7=#XIhpwWFsL*BVQ>WM`Nw0XMwSq=d0$s-v6
diff --git a/bin/jalview/commands/EditCommand.js b/bin/jalview/commands/EditCommand.js
index b556231..0839473 100644
--- a/bin/jalview/commands/EditCommand.js
+++ b/bin/jalview/commands/EditCommand.js
@@ -1,661 +1,661 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.CommandI", "java.lang.Enum", "java.util.ArrayList"], "jalview.commands.EditCommand", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.ReverseListIterator", "$.StringUtils", "java.lang.StringBuffer", "java.util.HashMap", "$.Hashtable"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.edits = null;
-this.description = null;
-if (!Clazz.isClassDefined ("jalview.commands.EditCommand.Edit")) {
-jalview.commands.EditCommand.$EditCommand$Edit$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.commands, "EditCommand", null, jalview.commands.CommandI);
-Clazz.prepareFields (c$, function () {
-this.edits = new java.util.ArrayList ();
-});
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.makeConstructor (c$,
-function (description) {
-this.description = description;
-}, "~S");
-Clazz.makeConstructor (c$,
-function (description, command, seqs, position, number, al) {
-this.description = description;
-if (command === jalview.commands.EditCommand.Action.CUT || command === jalview.commands.EditCommand.Action.PASTE) {
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al));
-}this.performEdit (0, null);
-}, "~S,jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
-Clazz.makeConstructor (c$,
-function (description, command, replace, seqs, position, number, al) {
-this.description = description;
-if (command === jalview.commands.EditCommand.Action.REPLACE) {
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al, replace));
-}this.performEdit (0, null);
-}, "~S,jalview.commands.EditCommand.Action,~S,~A,~N,~N,jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "setEdit",
-function (e) {
-this.edits.clear ();
-this.edits.add (e);
-}, "jalview.commands.EditCommand.Edit");
-Clazz.defineMethod (c$, "addEdit",
-function (e) {
-if (!jalview.commands.EditCommand.expandEdit (this.edits, e)) {
-this.edits.add (e);
-}}, "jalview.commands.EditCommand.Edit");
-c$.expandEdit = Clazz.defineMethod (c$, "expandEdit",
-function (edits, e) {
-if (edits == null || edits.isEmpty ()) {
-return false;
-}var lastEdit = edits.get (edits.size () - 1);
-var action = e.command;
-if (lastEdit.command !== action) {
-return false;
-}if (lastEdit.seqs.length != e.seqs.length) {
-return false;
-}for (var i = 0; i < e.seqs.length; i++) {
-if (lastEdit.seqs[i].getDatasetSequence () !== e.seqs[i].getDatasetSequence ()) {
-return false;
-}}
-var contiguous = (action === jalview.commands.EditCommand.Action.INSERT_GAP && e.position == lastEdit.position + lastEdit.number) || (action === jalview.commands.EditCommand.Action.DELETE_GAP && e.position + e.number == lastEdit.position);
-if (contiguous) {
-lastEdit.number += e.number;
-lastEdit.seqs = e.seqs;
-if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
-lastEdit.position--;
-}return true;
-}return false;
-}, "java.util.List,jalview.commands.EditCommand.Edit");
-Clazz.defineMethod (c$, "clearEdits",
-function () {
-this.edits.clear ();
-});
-Clazz.defineMethod (c$, "getEdit",
-function (i) {
-if (i >= 0 && i < this.edits.size ()) {
-return this.edits.get (i);
-}return null;
-}, "~N");
-Clazz.overrideMethod (c$, "getDescription",
-function () {
-return this.description;
-});
-Clazz.overrideMethod (c$, "getSize",
-function () {
-return this.edits.size ();
-});
-Clazz.defineMethod (c$, "getAlignment",
-function () {
-return (this.edits.isEmpty () ? null : this.edits.get (0).al);
-});
-Clazz.defineMethod (c$, "appendEdit",
-function (command, seqs, position, number, al, performEdit) {
-this.appendEdit (command, seqs, position, number, al, performEdit, null);
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B");
-Clazz.defineMethod (c$, "appendEdit",
-function (command, seqs, position, number, al, performEdit, views) {
-var edit = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al.getGapCharacter ());
-if (al.getHeight () == seqs.length) {
-edit.al = al;
-edit.fullAlignmentHeight = true;
-}this.addEdit (edit);
-if (performEdit) {
-jalview.commands.EditCommand.performEdit (edit, views);
-}}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B,~A");
-Clazz.defineMethod (c$, "appendEdit",
-function (edit, al, performEdit, views) {
-if (al.getHeight () == edit.seqs.length) {
-edit.al = al;
-edit.fullAlignmentHeight = true;
-}this.addEdit (edit);
-if (performEdit) {
-jalview.commands.EditCommand.performEdit (edit, views);
-}}, "jalview.commands.EditCommand.Edit,jalview.datamodel.AlignmentI,~B,~A");
-Clazz.defineMethod (c$, "performEdit",
-function (commandIndex, views) {
-var iterator = this.edits.listIterator (commandIndex);
-while (iterator.hasNext ()) {
-var edit = iterator.next ();
-jalview.commands.EditCommand.performEdit (edit, views);
-}
-}, "~N,~A");
-c$.performEdit = Clazz.defineMethod (c$, "performEdit",
-function (edit, views) {
-switch (edit.command) {
-case jalview.commands.EditCommand.Action.INSERT_GAP:
-jalview.commands.EditCommand.insertGap (edit);
-break;
-case jalview.commands.EditCommand.Action.DELETE_GAP:
-jalview.commands.EditCommand.deleteGap (edit);
-break;
-case jalview.commands.EditCommand.Action.CUT:
-jalview.commands.EditCommand.cut (edit, views);
-break;
-case jalview.commands.EditCommand.Action.PASTE:
-jalview.commands.EditCommand.paste (edit, views);
-break;
-case jalview.commands.EditCommand.Action.REPLACE:
-jalview.commands.EditCommand.replace (edit);
-break;
-case jalview.commands.EditCommand.Action.INSERT_NUC:
-break;
-default:
-break;
-}
-}, "jalview.commands.EditCommand.Edit,~A");
-Clazz.overrideMethod (c$, "doCommand",
-function (views) {
-this.performEdit (0, views);
-}, "~A");
-Clazz.overrideMethod (c$, "undoCommand",
-function (views) {
-var iterator = this.edits.listIterator (this.edits.size ());
-while (iterator.hasPrevious ()) {
-var e = iterator.previous ();
-switch (e.command) {
-case jalview.commands.EditCommand.Action.INSERT_GAP:
-jalview.commands.EditCommand.deleteGap (e);
-break;
-case jalview.commands.EditCommand.Action.DELETE_GAP:
-jalview.commands.EditCommand.insertGap (e);
-break;
-case jalview.commands.EditCommand.Action.CUT:
-jalview.commands.EditCommand.paste (e, views);
-break;
-case jalview.commands.EditCommand.Action.PASTE:
-jalview.commands.EditCommand.cut (e, views);
-break;
-case jalview.commands.EditCommand.Action.REPLACE:
-jalview.commands.EditCommand.replace (e);
-break;
-case jalview.commands.EditCommand.Action.INSERT_NUC:
-break;
-default:
-break;
-}
-}
-}, "~A");
-c$.insertGap = Clazz.defineMethod (c$, "insertGap",
-($fz = function (command) {
-for (var s = 0; s < command.seqs.length; s++) {
-command.seqs[s].insertCharAt (command.position, command.number, command.gapChar);
-}
-jalview.commands.EditCommand.adjustAnnotations (command, true, false, null);
-}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");
-c$.deleteGap = Clazz.defineMethod (c$, "deleteGap",
-($fz = function (command) {
-for (var s = 0; s < command.seqs.length; s++) {
-command.seqs[s].deleteChars (command.position, command.position + command.number);
-}
-jalview.commands.EditCommand.adjustAnnotations (command, false, false, null);
-}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");
-c$.cut = Clazz.defineMethod (c$, "cut",
-function (command, views) {
-var seqDeleted = false;
-command.string = Clazz.newCharArray (command.seqs.length, '\0');
-for (var i = 0; i < command.seqs.length; i++) {
-var sequence = command.seqs[i];
-if (sequence.getLength () > command.position) {
-command.string[i] = sequence.getSequence (command.position, command.position + command.number);
-var oldds = sequence.getDatasetSequence ();
-if (command.oldds != null && command.oldds[i] != null) {
-sequence.setDatasetSequence (null);
-}sequence.deleteChars (command.position, command.position + command.number);
-if (command.oldds != null && command.oldds[i] != null) {
-sequence.setDatasetSequence (command.oldds[i]);
-command.oldds[i] = oldds;
-} else {
-if (oldds !== sequence.getDatasetSequence () || sequence.getSequenceFeatures () != null) {
-if (command.oldds == null) {
-command.oldds = new Array (command.seqs.length);
-}command.oldds[i] = oldds;
-jalview.commands.EditCommand.adjustFeatures (command, i, sequence.findPosition (command.position), sequence.findPosition (command.position + command.number), false);
-}}}if (sequence.getLength () < 1) {
-command.al.deleteSequence (sequence);
-seqDeleted = true;
-}}
-jalview.commands.EditCommand.adjustAnnotations (command, false, seqDeleted, views);
-}, "jalview.commands.EditCommand.Edit,~A");
-c$.paste = Clazz.defineMethod (c$, "paste",
-function (command, views) {
-var tmp;
-var newDSNeeded;
-var newDSWasNeeded;
-var newstart;
-var newend;
-var seqWasDeleted = false;
-var start = 0;
-var end = 0;
-for (var i = 0; i < command.seqs.length; i++) {
-newDSNeeded = false;
-newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
-if (command.seqs[i].getLength () < 1) {
-if (command.alIndex[i] < command.al.getHeight ()) {
-var sequences;
-{
-if (!(command.alIndex[i] < 0)) {
-sequences.add (command.alIndex[i], command.seqs[i]);
-}}} else {
-command.al.addSequence (command.seqs[i]);
-}seqWasDeleted = true;
-}newstart = command.seqs[i].getStart ();
-newend = command.seqs[i].getEnd ();
-tmp = new StringBuffer ();
-tmp.append (command.seqs[i].getSequence ());
-if (command.string != null && command.string[i] != null) {
-if (command.position >= tmp.length ()) {
-var length = command.position - tmp.length ();
-while (length > 0) {
-tmp.append (command.gapChar);
-length--;
-}
-}tmp.insert (command.position, command.string[i]);
-for (var s = 0; s < command.string[i].length; s++) {
-if (jalview.schemes.ResidueProperties.aaIndex[command.string[i][s].charCodeAt (0)] != 23) {
-if (!newDSNeeded) {
-newDSNeeded = true;
-start = command.seqs[i].findPosition (command.position);
-end = command.seqs[i].findPosition (command.position + command.number);
-}if (command.seqs[i].getStart () == start) {
-newstart--;
-} else {
-newend++;
-}}}
-command.string[i] = null;
-}command.seqs[i].setSequence (tmp.toString ());
-command.seqs[i].setStart (newstart);
-command.seqs[i].setEnd (newend);
-if (newDSNeeded) {
-if (command.seqs[i].getDatasetSequence () != null) {
-var ds;
-if (newDSWasNeeded) {
-ds = command.oldds[i];
-} else {
-ds = new jalview.datamodel.Sequence (command.seqs[i].getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, command.seqs[i].getSequenceAsString ()), command.seqs[i].getStart (), command.seqs[i].getEnd ());
-ds.setDescription (command.seqs[i].getDescription ());
-}if (command.oldds == null) {
-command.oldds = new Array (command.seqs.length);
-}command.oldds[i] = command.seqs[i].getDatasetSequence ();
-command.seqs[i].setDatasetSequence (ds);
-}jalview.commands.EditCommand.adjustFeatures (command, i, start, end, true);
-}}
-jalview.commands.EditCommand.adjustAnnotations (command, true, seqWasDeleted, views);
-command.string = null;
-}, "jalview.commands.EditCommand.Edit,~A");
-c$.replace = Clazz.defineMethod (c$, "replace",
-function (command) {
-var tmp;
-var oldstring;
-var start = command.position;
-var end = command.number;
-command.number = start + command.string[0].length;
-for (var i = 0; i < command.seqs.length; i++) {
-var newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
-oldstring = command.seqs[i].getSequenceAsString ();
-tmp = new StringBuffer (oldstring.substring (0, start));
-tmp.append (command.string[i]);
-var nogaprep = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (command.string[i]));
-var ipos = command.seqs[i].findPosition (start) - command.seqs[i].getStart ();
-tmp.append (oldstring.substring (end));
-command.seqs[i].setSequence (tmp.toString ());
-command.string[i] = oldstring.substring (start, end).toCharArray ();
-var nogapold = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (command.string[i]));
-if (!nogaprep.toLowerCase ().equals (nogapold.toLowerCase ())) {
-if (newDSWasNeeded) {
-var oldds = command.seqs[i].getDatasetSequence ();
-command.seqs[i].setDatasetSequence (command.oldds[i]);
-command.oldds[i] = oldds;
-} else {
-if (command.oldds == null) {
-command.oldds = new Array (command.seqs.length);
-}command.oldds[i] = command.seqs[i].getDatasetSequence ();
-var newds = new jalview.datamodel.Sequence (command.seqs[i].getDatasetSequence ());
-var fullseq;
-var osp = newds.getSequenceAsString ();
-fullseq = osp.substring (0, ipos) + nogaprep + osp.substring (ipos + nogaprep.length);
-newds.setSequence (fullseq.toUpperCase ());
-command.seqs[i].setDatasetSequence (newds);
-}}tmp = null;
-oldstring = null;
-}
-}, "jalview.commands.EditCommand.Edit");
-c$.adjustAnnotations = Clazz.defineMethod (c$, "adjustAnnotations",
-function (command, insert, modifyVisibility, views) {
-var annotations = null;
-if (modifyVisibility && !insert) {
-command.deletedAnnotationRows = new java.util.Hashtable ();
-}if (command.fullAlignmentHeight) {
-annotations = command.al.getAlignmentAnnotation ();
-} else {
-var aSize = 0;
-var tmp;
-for (var s = 0; s < command.seqs.length; s++) {
-if (modifyVisibility) {
-if (!insert) {
-tmp = command.seqs[s].getAnnotation ();
-if (tmp != null) {
-var alen = tmp.length;
-for (var aa = 0; aa < tmp.length; aa++) {
-if (!command.al.deleteAnnotation (tmp[aa])) {
-tmp[aa] = null;
-alen--;
-}}
-command.seqs[s].setAlignmentAnnotation (null);
-if (alen != tmp.length) {
-var saved = new Array (alen);
-for (var aa = 0, aapos = 0; aa < tmp.length; aa++) {
-if (tmp[aa] != null) {
-saved[aapos++] = tmp[aa];
-tmp[aa] = null;
-}}
-tmp = saved;
-command.deletedAnnotationRows.put (command.seqs[s], saved);
-for (var alview = 0; views != null && alview < views.length; alview++) {
-if (views[alview] !== command.al) {
-var toremove = views[alview].getAlignmentAnnotation ();
-if (toremove == null || toremove.length == 0) {
-continue;
-}for (var aa = 0; aa < toremove.length; aa++) {
-if (toremove[aa].sequenceRef === command.seqs[s]) {
-views[alview].deleteAnnotation (toremove[aa]);
-}}
-}}
-} else {
-command.deletedAnnotationRows.put (command.seqs[s], tmp);
-}}} else {
-if (command.deletedAnnotationRows != null && command.deletedAnnotationRows.containsKey (command.seqs[s])) {
-var revealed = command.deletedAnnotationRows.get (command.seqs[s]);
-command.seqs[s].setAlignmentAnnotation (revealed);
-if (revealed != null) {
-for (var aa = 0; aa < revealed.length; aa++) {
-command.al.addAnnotation (revealed[aa]);
-}
-for (var aa = 0; aa < revealed.length; aa++) {
-command.al.setAnnotationIndex (revealed[aa], aa);
-}
-for (var vnum = 0; views != null && vnum < views.length; vnum++) {
-if (views[vnum] !== command.al) {
-var avwidth = views[vnum].getWidth () + 1;
-for (var a = 0; a < revealed.length; a++) {
-var newann = new jalview.datamodel.AlignmentAnnotation (revealed[a]);
-command.seqs[s].addAlignmentAnnotation (newann);
-newann.padAnnotation (avwidth);
-views[vnum].addAnnotation (newann);
-views[vnum].setAnnotationIndex (newann, a);
-}
-}}
-}}}continue;
-}if (command.seqs[s].getAnnotation () == null) {
-continue;
-}if (aSize == 0) {
-annotations = command.seqs[s].getAnnotation ();
-} else {
-tmp = new Array (aSize + command.seqs[s].getAnnotation ().length);
-System.arraycopy (annotations, 0, tmp, 0, aSize);
-System.arraycopy (command.seqs[s].getAnnotation (), 0, tmp, aSize, command.seqs[s].getAnnotation ().length);
-annotations = tmp;
-}aSize = annotations.length;
-}
-}if (annotations == null) {
-return;
-}if (!insert) {
-command.deletedAnnotations = new java.util.Hashtable ();
-}var aSize;
-var temp;
-for (var a = 0; a < annotations.length; a++) {
-if (annotations[a].autoCalculated || annotations[a].annotations == null) {
-continue;
-}var tSize = 0;
-aSize = annotations[a].annotations.length;
-if (insert) {
-temp = new Array (aSize + command.number);
-if (annotations[a].padGaps) {
-for (var aa = 0; aa < temp.length; aa++) {
-temp[aa] = new jalview.datamodel.Annotation (command.gapChar + "", null, ' ', 0);
-}
-}} else {
-if (command.position < aSize) {
-if (command.position + command.number >= aSize) {
-tSize = aSize;
-} else {
-tSize = aSize - command.number;
-}} else {
-tSize = aSize;
-}if (tSize < 0) {
-tSize = aSize;
-}temp = new Array (tSize);
-}if (insert) {
-if (command.position < annotations[a].annotations.length) {
-System.arraycopy (annotations[a].annotations, 0, temp, 0, command.position);
-if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
-var restore = command.deletedAnnotations.get (annotations[a].annotationId);
-System.arraycopy (restore, 0, temp, command.position, command.number);
-}System.arraycopy (annotations[a].annotations, command.position, temp, command.position + command.number, aSize - command.position);
-} else {
-if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
-var restore = command.deletedAnnotations.get (annotations[a].annotationId);
-temp = new Array (annotations[a].annotations.length + restore.length);
-System.arraycopy (annotations[a].annotations, 0, temp, 0, annotations[a].annotations.length);
-System.arraycopy (restore, 0, temp, annotations[a].annotations.length, restore.length);
-} else {
-temp = annotations[a].annotations;
-}}} else {
-if (tSize != aSize || command.position < 2) {
-var copylen = Math.min (command.position, annotations[a].annotations.length);
-if (copylen > 0) {
-System.arraycopy (annotations[a].annotations, 0, temp, 0, copylen);
-}var deleted = new Array (command.number);
-if (copylen >= command.position) {
-copylen = Math.min (command.number, annotations[a].annotations.length - command.position);
-if (copylen > 0) {
-System.arraycopy (annotations[a].annotations, command.position, deleted, 0, copylen);
-}}command.deletedAnnotations.put (annotations[a].annotationId, deleted);
-if (annotations[a].annotations.length > command.position + command.number) {
-System.arraycopy (annotations[a].annotations, command.position + command.number, temp, command.position, annotations[a].annotations.length - command.position - command.number);
-}} else {
-var dSize = aSize - command.position;
-if (dSize > 0) {
-var deleted = new Array (command.number);
-System.arraycopy (annotations[a].annotations, command.position, deleted, 0, dSize);
-command.deletedAnnotations.put (annotations[a].annotationId, deleted);
-tSize = Math.min (annotations[a].annotations.length, command.position);
-temp = new Array (tSize);
-System.arraycopy (annotations[a].annotations, 0, temp, 0, tSize);
-} else {
-temp = annotations[a].annotations;
-}}}annotations[a].annotations = temp;
-}
-}, "jalview.commands.EditCommand.Edit,~B,~B,~A");
-c$.adjustFeatures = Clazz.defineMethod (c$, "adjustFeatures",
-function (command, index, i, j, insert) {
-var seq = command.seqs[index];
-var sequence = seq.getDatasetSequence ();
-if (sequence == null) {
-sequence = seq;
-}if (insert) {
-if (command.editedFeatures != null && command.editedFeatures.containsKey (seq)) {
-sequence.setSequenceFeatures (command.editedFeatures.get (seq));
-}return;
-}var sf = sequence.getSequenceFeatures ();
-if (sf == null) {
-return;
-}var oldsf = new Array (sf.length);
-var cSize = j - i;
-for (var s = 0; s < sf.length; s++) {
-var copy = new jalview.datamodel.SequenceFeature (sf[s]);
-oldsf[s] = copy;
-if (sf[s].getEnd () < i) {
-continue;
-}if (sf[s].getBegin () > j) {
-sf[s].setBegin (copy.getBegin () - cSize);
-sf[s].setEnd (copy.getEnd () - cSize);
-continue;
-}if (sf[s].getBegin () >= i) {
-sf[s].setBegin (i);
-}if (sf[s].getEnd () < j) {
-sf[s].setEnd (j - 1);
-}sf[s].setEnd (sf[s].getEnd () - (cSize));
-if (sf[s].getBegin () > sf[s].getEnd ()) {
-sequence.deleteFeature (sf[s]);
-}}
-if (command.editedFeatures == null) {
-command.editedFeatures = new java.util.Hashtable ();
-}command.editedFeatures.put (seq, oldsf);
-}, "jalview.commands.EditCommand.Edit,~N,~N,~N,~B");
-Clazz.defineMethod (c$, "getEdits",
-function () {
-return this.edits;
-});
-Clazz.defineMethod (c$, "priorState",
-function (forUndo) {
-var result = new java.util.HashMap ();
-if (this.getEdits () == null) {
-return result;
-}if (forUndo) {
-for (var e, $e = this.getEdits ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
-for (var seq, $seq = 0, $$seq = e.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
-var ds = seq.getDatasetSequence ();
-var preEdit = result.get (ds);
-if (preEdit == null) {
-preEdit = new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
-preEdit.setDatasetSequence (ds);
-result.put (ds, preEdit);
-}}
-}
-return result;
-}var edits = new jalview.util.ReverseListIterator (this.getEdits ());
-while (edits.hasNext ()) {
-var oldEdit = edits.next ();
-var action = oldEdit.getAction ();
-var position = oldEdit.getPosition ();
-var number = oldEdit.getNumber ();
-var gap = oldEdit.getGapCharacter ();
-for (var seq, $seq = 0, $$seq = oldEdit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
-var ds = seq.getDatasetSequence ();
-var preEdit = result.get (ds);
-if (preEdit == null) {
-preEdit = new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
-preEdit.setDatasetSequence (ds);
-result.put (ds, preEdit);
-}if (ds != null) {
-if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
-preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (preEdit.getSequence (), position, number, gap)));
-} else if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
-preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (preEdit.getSequence (), position, position + number)));
-} else {
-System.err.println ("Can't undo edit action " + action);
-}}}
-}
-return result;
-}, "~B");
-Clazz.defineMethod (c$, "getEditIterator",
-function (forwards) {
-if (forwards) {
-return this.getEdits ().iterator ();
-} else {
-return new jalview.util.ReverseListIterator (this.getEdits ());
-}}, "~B");
-c$.$EditCommand$Edit$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.oldds = null;
-this.fullAlignmentHeight = false;
-this.deletedAnnotationRows = null;
-this.deletedAnnotations = null;
-this.editedFeatures = null;
-this.al = null;
-this.command = null;
-this.string = null;
-this.seqs = null;
-this.alIndex = null;
-this.position = 0;
-this.number = 0;
-this.gapChar = '\0';
-Clazz.instantialize (this, arguments);
-}, jalview.commands.EditCommand, "Edit");
-Clazz.makeConstructor (c$,
-function (a, b, c, d, e) {
-this.command = a;
-this.seqs = b;
-this.position = c;
-this.number = d;
-this.gapChar = e;
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,~S");
-Clazz.makeConstructor (c$,
-function (a, b, c, d, e) {
-this.gapChar = e.getGapCharacter ();
-this.command = a;
-this.seqs = b;
-this.position = c;
-this.number = d;
-this.al = e;
-this.alIndex = Clazz.newIntArray (b.length, 0);
-for (var f = 0; f < b.length; f++) {
-this.alIndex[f] = e.findIndex (b[f]);
-}
-this.fullAlignmentHeight = (e.getHeight () == b.length);
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
-Clazz.makeConstructor (c$,
-function (a, b, c, d, e, f) {
-this.command = a;
-this.seqs = b;
-this.position = c;
-this.number = d;
-this.al = e;
-this.gapChar = e.getGapCharacter ();
-this.string = Clazz.newCharArray (b.length, '\0');
-for (var g = 0; g < b.length; g++) {
-this.string[g] = f.toCharArray ();
-}
-this.fullAlignmentHeight = (e.getHeight () == b.length);
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
-Clazz.defineMethod (c$, "getSequences",
-function () {
-return this.seqs;
-});
-Clazz.defineMethod (c$, "getPosition",
-function () {
-return this.position;
-});
-Clazz.defineMethod (c$, "getAction",
-function () {
-return this.command;
-});
-Clazz.defineMethod (c$, "getNumber",
-function () {
-return this.number;
-});
-Clazz.defineMethod (c$, "getGapCharacter",
-function () {
-return this.gapChar;
-});
-c$ = Clazz.p0p ();
-};
-Clazz.pu$h ();
-c$ = Clazz.declareType (jalview.commands.EditCommand, "Action", Enum);
-Clazz.defineMethod (c$, "getUndoAction",
-function () {
-switch (this) {
-case jalview.commands.EditCommand.Action.INSERT_GAP:
-return jalview.commands.EditCommand.Action.DELETE_GAP;
-case jalview.commands.EditCommand.Action.CUT:
-return jalview.commands.EditCommand.Action.PASTE;
-case jalview.commands.EditCommand.Action.DELETE_GAP:
-return jalview.commands.EditCommand.Action.INSERT_GAP;
-case jalview.commands.EditCommand.Action.INSERT_NUC:
-return null;
-case jalview.commands.EditCommand.Action.PASTE:
-return jalview.commands.EditCommand.Action.CUT;
-case jalview.commands.EditCommand.Action.REPLACE:
-return jalview.commands.EditCommand.Action.REPLACE;
-}
-return null;
-});
-Clazz.defineEnumConstant (c$, "INSERT_GAP", 0, []);
-Clazz.defineEnumConstant (c$, "DELETE_GAP", 1, []);
-Clazz.defineEnumConstant (c$, "CUT", 2, []);
-Clazz.defineEnumConstant (c$, "PASTE", 3, []);
-Clazz.defineEnumConstant (c$, "REPLACE", 4, []);
-Clazz.defineEnumConstant (c$, "INSERT_NUC", 5, []);
-c$ = Clazz.p0p ();
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.CommandI", "java.lang.Enum", "java.util.ArrayList"], "jalview.commands.EditCommand", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.ReverseListIterator", "$.StringUtils", "java.lang.StringBuffer", "java.util.HashMap", "$.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.edits = null;
+this.description = null;
+if (!Clazz.isClassDefined ("jalview.commands.EditCommand.Edit")) {
+jalview.commands.EditCommand.$EditCommand$Edit$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "EditCommand", null, jalview.commands.CommandI);
+Clazz.prepareFields (c$, function () {
+this.edits = new java.util.ArrayList ();
+});
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.makeConstructor (c$,
+function (description) {
+this.description = description;
+}, "~S");
+Clazz.makeConstructor (c$,
+function (description, command, seqs, position, number, al) {
+this.description = description;
+if (command === jalview.commands.EditCommand.Action.CUT || command === jalview.commands.EditCommand.Action.PASTE) {
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al));
+}this.performEdit (0, null);
+}, "~S,jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$,
+function (description, command, replace, seqs, position, number, al) {
+this.description = description;
+if (command === jalview.commands.EditCommand.Action.REPLACE) {
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al, replace));
+}this.performEdit (0, null);
+}, "~S,jalview.commands.EditCommand.Action,~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "setEdit",
+function (e) {
+this.edits.clear ();
+this.edits.add (e);
+}, "jalview.commands.EditCommand.Edit");
+Clazz.defineMethod (c$, "addEdit",
+function (e) {
+if (!jalview.commands.EditCommand.expandEdit (this.edits, e)) {
+this.edits.add (e);
+}}, "jalview.commands.EditCommand.Edit");
+c$.expandEdit = Clazz.defineMethod (c$, "expandEdit",
+function (edits, e) {
+if (edits == null || edits.isEmpty ()) {
+return false;
+}var lastEdit = edits.get (edits.size () - 1);
+var action = e.command;
+if (lastEdit.command !== action) {
+return false;
+}if (lastEdit.seqs.length != e.seqs.length) {
+return false;
+}for (var i = 0; i < e.seqs.length; i++) {
+if (lastEdit.seqs[i].getDatasetSequence () !== e.seqs[i].getDatasetSequence ()) {
+return false;
+}}
+var contiguous = (action === jalview.commands.EditCommand.Action.INSERT_GAP && e.position == lastEdit.position + lastEdit.number) || (action === jalview.commands.EditCommand.Action.DELETE_GAP && e.position + e.number == lastEdit.position);
+if (contiguous) {
+lastEdit.number += e.number;
+lastEdit.seqs = e.seqs;
+if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+lastEdit.position--;
+}return true;
+}return false;
+}, "java.util.List,jalview.commands.EditCommand.Edit");
+Clazz.defineMethod (c$, "clearEdits",
+function () {
+this.edits.clear ();
+});
+Clazz.defineMethod (c$, "getEdit",
+function (i) {
+if (i >= 0 && i < this.edits.size ()) {
+return this.edits.get (i);
+}return null;
+}, "~N");
+Clazz.overrideMethod (c$, "getDescription",
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "getSize",
+function () {
+return this.edits.size ();
+});
+Clazz.defineMethod (c$, "getAlignment",
+function () {
+return (this.edits.isEmpty () ? null : this.edits.get (0).al);
+});
+Clazz.defineMethod (c$, "appendEdit",
+function (command, seqs, position, number, al, performEdit) {
+this.appendEdit (command, seqs, position, number, al, performEdit, null);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B");
+Clazz.defineMethod (c$, "appendEdit",
+function (command, seqs, position, number, al, performEdit, views) {
+var edit = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al.getGapCharacter ());
+if (al.getHeight () == seqs.length) {
+edit.al = al;
+edit.fullAlignmentHeight = true;
+}this.addEdit (edit);
+if (performEdit) {
+jalview.commands.EditCommand.performEdit (edit, views);
+}}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B,~A");
+Clazz.defineMethod (c$, "appendEdit",
+function (edit, al, performEdit, views) {
+if (al.getHeight () == edit.seqs.length) {
+edit.al = al;
+edit.fullAlignmentHeight = true;
+}this.addEdit (edit);
+if (performEdit) {
+jalview.commands.EditCommand.performEdit (edit, views);
+}}, "jalview.commands.EditCommand.Edit,jalview.datamodel.AlignmentI,~B,~A");
+Clazz.defineMethod (c$, "performEdit",
+function (commandIndex, views) {
+var iterator = this.edits.listIterator (commandIndex);
+while (iterator.hasNext ()) {
+var edit = iterator.next ();
+jalview.commands.EditCommand.performEdit (edit, views);
+}
+}, "~N,~A");
+c$.performEdit = Clazz.defineMethod (c$, "performEdit",
+function (edit, views) {
+switch (edit.command) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+jalview.commands.EditCommand.insertGap (edit);
+break;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+jalview.commands.EditCommand.deleteGap (edit);
+break;
+case jalview.commands.EditCommand.Action.CUT:
+jalview.commands.EditCommand.cut (edit, views);
+break;
+case jalview.commands.EditCommand.Action.PASTE:
+jalview.commands.EditCommand.paste (edit, views);
+break;
+case jalview.commands.EditCommand.Action.REPLACE:
+jalview.commands.EditCommand.replace (edit);
+break;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+break;
+default:
+break;
+}
+}, "jalview.commands.EditCommand.Edit,~A");
+Clazz.overrideMethod (c$, "doCommand",
+function (views) {
+this.performEdit (0, views);
+}, "~A");
+Clazz.overrideMethod (c$, "undoCommand",
+function (views) {
+var iterator = this.edits.listIterator (this.edits.size ());
+while (iterator.hasPrevious ()) {
+var e = iterator.previous ();
+switch (e.command) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+jalview.commands.EditCommand.deleteGap (e);
+break;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+jalview.commands.EditCommand.insertGap (e);
+break;
+case jalview.commands.EditCommand.Action.CUT:
+jalview.commands.EditCommand.paste (e, views);
+break;
+case jalview.commands.EditCommand.Action.PASTE:
+jalview.commands.EditCommand.cut (e, views);
+break;
+case jalview.commands.EditCommand.Action.REPLACE:
+jalview.commands.EditCommand.replace (e);
+break;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+break;
+default:
+break;
+}
+}
+}, "~A");
+c$.insertGap = Clazz.defineMethod (c$, "insertGap",
+($fz = function (command) {
+for (var s = 0; s < command.seqs.length; s++) {
+command.seqs[s].insertCharAt (command.position, command.number, command.gapChar);
+}
+jalview.commands.EditCommand.adjustAnnotations (command, true, false, null);
+}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");
+c$.deleteGap = Clazz.defineMethod (c$, "deleteGap",
+($fz = function (command) {
+for (var s = 0; s < command.seqs.length; s++) {
+command.seqs[s].deleteChars (command.position, command.position + command.number);
+}
+jalview.commands.EditCommand.adjustAnnotations (command, false, false, null);
+}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");
+c$.cut = Clazz.defineMethod (c$, "cut",
+function (command, views) {
+var seqDeleted = false;
+command.string = Clazz.newCharArray (command.seqs.length, '\0');
+for (var i = 0; i < command.seqs.length; i++) {
+var sequence = command.seqs[i];
+if (sequence.getLength () > command.position) {
+command.string[i] = sequence.getSequence (command.position, command.position + command.number);
+var oldds = sequence.getDatasetSequence ();
+if (command.oldds != null && command.oldds[i] != null) {
+sequence.setDatasetSequence (null);
+}sequence.deleteChars (command.position, command.position + command.number);
+if (command.oldds != null && command.oldds[i] != null) {
+sequence.setDatasetSequence (command.oldds[i]);
+command.oldds[i] = oldds;
+} else {
+if (oldds !== sequence.getDatasetSequence () || sequence.getSequenceFeatures () != null) {
+if (command.oldds == null) {
+command.oldds = new Array (command.seqs.length);
+}command.oldds[i] = oldds;
+jalview.commands.EditCommand.adjustFeatures (command, i, sequence.findPosition (command.position), sequence.findPosition (command.position + command.number), false);
+}}}if (sequence.getLength () < 1) {
+command.al.deleteSequence (sequence);
+seqDeleted = true;
+}}
+jalview.commands.EditCommand.adjustAnnotations (command, false, seqDeleted, views);
+}, "jalview.commands.EditCommand.Edit,~A");
+c$.paste = Clazz.defineMethod (c$, "paste",
+function (command, views) {
+var tmp;
+var newDSNeeded;
+var newDSWasNeeded;
+var newstart;
+var newend;
+var seqWasDeleted = false;
+var start = 0;
+var end = 0;
+for (var i = 0; i < command.seqs.length; i++) {
+newDSNeeded = false;
+newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
+if (command.seqs[i].getLength () < 1) {
+if (command.alIndex[i] < command.al.getHeight ()) {
+var sequences;
+{
+if (!(command.alIndex[i] < 0)) {
+sequences.add (command.alIndex[i], command.seqs[i]);
+}}} else {
+command.al.addSequence (command.seqs[i]);
+}seqWasDeleted = true;
+}newstart = command.seqs[i].getStart ();
+newend = command.seqs[i].getEnd ();
+tmp = new StringBuffer ();
+tmp.append (command.seqs[i].getSequence ());
+if (command.string != null && command.string[i] != null) {
+if (command.position >= tmp.length ()) {
+var length = command.position - tmp.length ();
+while (length > 0) {
+tmp.append (command.gapChar);
+length--;
+}
+}tmp.insert (command.position, command.string[i]);
+for (var s = 0; s < command.string[i].length; s++) {
+if (jalview.schemes.ResidueProperties.aaIndex[command.string[i][s].charCodeAt (0)] != 23) {
+if (!newDSNeeded) {
+newDSNeeded = true;
+start = command.seqs[i].findPosition (command.position);
+end = command.seqs[i].findPosition (command.position + command.number);
+}if (command.seqs[i].getStart () == start) {
+newstart--;
+} else {
+newend++;
+}}}
+command.string[i] = null;
+}command.seqs[i].setSequence (tmp.toString ());
+command.seqs[i].setStart (newstart);
+command.seqs[i].setEnd (newend);
+if (newDSNeeded) {
+if (command.seqs[i].getDatasetSequence () != null) {
+var ds;
+if (newDSWasNeeded) {
+ds = command.oldds[i];
+} else {
+ds = new jalview.datamodel.Sequence (command.seqs[i].getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, command.seqs[i].getSequenceAsString ()), command.seqs[i].getStart (), command.seqs[i].getEnd ());
+ds.setDescription (command.seqs[i].getDescription ());
+}if (command.oldds == null) {
+command.oldds = new Array (command.seqs.length);
+}command.oldds[i] = command.seqs[i].getDatasetSequence ();
+command.seqs[i].setDatasetSequence (ds);
+}jalview.commands.EditCommand.adjustFeatures (command, i, start, end, true);
+}}
+jalview.commands.EditCommand.adjustAnnotations (command, true, seqWasDeleted, views);
+command.string = null;
+}, "jalview.commands.EditCommand.Edit,~A");
+c$.replace = Clazz.defineMethod (c$, "replace",
+function (command) {
+var tmp;
+var oldstring;
+var start = command.position;
+var end = command.number;
+command.number = start + command.string[0].length;
+for (var i = 0; i < command.seqs.length; i++) {
+var newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
+oldstring = command.seqs[i].getSequenceAsString ();
+tmp = new StringBuffer (oldstring.substring (0, start));
+tmp.append (command.string[i]);
+var nogaprep = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (command.string[i]));
+var ipos = command.seqs[i].findPosition (start) - command.seqs[i].getStart ();
+tmp.append (oldstring.substring (end));
+command.seqs[i].setSequence (tmp.toString ());
+command.string[i] = oldstring.substring (start, end).toCharArray ();
+var nogapold = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (command.string[i]));
+if (!nogaprep.toLowerCase ().equals (nogapold.toLowerCase ())) {
+if (newDSWasNeeded) {
+var oldds = command.seqs[i].getDatasetSequence ();
+command.seqs[i].setDatasetSequence (command.oldds[i]);
+command.oldds[i] = oldds;
+} else {
+if (command.oldds == null) {
+command.oldds = new Array (command.seqs.length);
+}command.oldds[i] = command.seqs[i].getDatasetSequence ();
+var newds = new jalview.datamodel.Sequence (command.seqs[i].getDatasetSequence ());
+var fullseq;
+var osp = newds.getSequenceAsString ();
+fullseq = osp.substring (0, ipos) + nogaprep + osp.substring (ipos + nogaprep.length);
+newds.setSequence (fullseq.toUpperCase ());
+command.seqs[i].setDatasetSequence (newds);
+}}tmp = null;
+oldstring = null;
+}
+}, "jalview.commands.EditCommand.Edit");
+c$.adjustAnnotations = Clazz.defineMethod (c$, "adjustAnnotations",
+function (command, insert, modifyVisibility, views) {
+var annotations = null;
+if (modifyVisibility && !insert) {
+command.deletedAnnotationRows = new java.util.Hashtable ();
+}if (command.fullAlignmentHeight) {
+annotations = command.al.getAlignmentAnnotation ();
+} else {
+var aSize = 0;
+var tmp;
+for (var s = 0; s < command.seqs.length; s++) {
+if (modifyVisibility) {
+if (!insert) {
+tmp = command.seqs[s].getAnnotation ();
+if (tmp != null) {
+var alen = tmp.length;
+for (var aa = 0; aa < tmp.length; aa++) {
+if (!command.al.deleteAnnotation (tmp[aa])) {
+tmp[aa] = null;
+alen--;
+}}
+command.seqs[s].setAlignmentAnnotation (null);
+if (alen != tmp.length) {
+var saved = new Array (alen);
+for (var aa = 0, aapos = 0; aa < tmp.length; aa++) {
+if (tmp[aa] != null) {
+saved[aapos++] = tmp[aa];
+tmp[aa] = null;
+}}
+tmp = saved;
+command.deletedAnnotationRows.put (command.seqs[s], saved);
+for (var alview = 0; views != null && alview < views.length; alview++) {
+if (views[alview] !== command.al) {
+var toremove = views[alview].getAlignmentAnnotation ();
+if (toremove == null || toremove.length == 0) {
+continue;
+}for (var aa = 0; aa < toremove.length; aa++) {
+if (toremove[aa].sequenceRef === command.seqs[s]) {
+views[alview].deleteAnnotation (toremove[aa]);
+}}
+}}
+} else {
+command.deletedAnnotationRows.put (command.seqs[s], tmp);
+}}} else {
+if (command.deletedAnnotationRows != null && command.deletedAnnotationRows.containsKey (command.seqs[s])) {
+var revealed = command.deletedAnnotationRows.get (command.seqs[s]);
+command.seqs[s].setAlignmentAnnotation (revealed);
+if (revealed != null) {
+for (var aa = 0; aa < revealed.length; aa++) {
+command.al.addAnnotation (revealed[aa]);
+}
+for (var aa = 0; aa < revealed.length; aa++) {
+command.al.setAnnotationIndex (revealed[aa], aa);
+}
+for (var vnum = 0; views != null && vnum < views.length; vnum++) {
+if (views[vnum] !== command.al) {
+var avwidth = views[vnum].getWidth () + 1;
+for (var a = 0; a < revealed.length; a++) {
+var newann = new jalview.datamodel.AlignmentAnnotation (revealed[a]);
+command.seqs[s].addAlignmentAnnotation (newann);
+newann.padAnnotation (avwidth);
+views[vnum].addAnnotation (newann);
+views[vnum].setAnnotationIndex (newann, a);
+}
+}}
+}}}continue;
+}if (command.seqs[s].getAnnotation () == null) {
+continue;
+}if (aSize == 0) {
+annotations = command.seqs[s].getAnnotation ();
+} else {
+tmp = new Array (aSize + command.seqs[s].getAnnotation ().length);
+System.arraycopy (annotations, 0, tmp, 0, aSize);
+System.arraycopy (command.seqs[s].getAnnotation (), 0, tmp, aSize, command.seqs[s].getAnnotation ().length);
+annotations = tmp;
+}aSize = annotations.length;
+}
+}if (annotations == null) {
+return;
+}if (!insert) {
+command.deletedAnnotations = new java.util.Hashtable ();
+}var aSize;
+var temp;
+for (var a = 0; a < annotations.length; a++) {
+if (annotations[a].autoCalculated || annotations[a].annotations == null) {
+continue;
+}var tSize = 0;
+aSize = annotations[a].annotations.length;
+if (insert) {
+temp = new Array (aSize + command.number);
+if (annotations[a].padGaps) {
+for (var aa = 0; aa < temp.length; aa++) {
+temp[aa] = new jalview.datamodel.Annotation (command.gapChar + "", null, ' ', 0);
+}
+}} else {
+if (command.position < aSize) {
+if (command.position + command.number >= aSize) {
+tSize = aSize;
+} else {
+tSize = aSize - command.number;
+}} else {
+tSize = aSize;
+}if (tSize < 0) {
+tSize = aSize;
+}temp = new Array (tSize);
+}if (insert) {
+if (command.position < annotations[a].annotations.length) {
+System.arraycopy (annotations[a].annotations, 0, temp, 0, command.position);
+if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
+var restore = command.deletedAnnotations.get (annotations[a].annotationId);
+System.arraycopy (restore, 0, temp, command.position, command.number);
+}System.arraycopy (annotations[a].annotations, command.position, temp, command.position + command.number, aSize - command.position);
+} else {
+if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
+var restore = command.deletedAnnotations.get (annotations[a].annotationId);
+temp = new Array (annotations[a].annotations.length + restore.length);
+System.arraycopy (annotations[a].annotations, 0, temp, 0, annotations[a].annotations.length);
+System.arraycopy (restore, 0, temp, annotations[a].annotations.length, restore.length);
+} else {
+temp = annotations[a].annotations;
+}}} else {
+if (tSize != aSize || command.position < 2) {
+var copylen = Math.min (command.position, annotations[a].annotations.length);
+if (copylen > 0) {
+System.arraycopy (annotations[a].annotations, 0, temp, 0, copylen);
+}var deleted = new Array (command.number);
+if (copylen >= command.position) {
+copylen = Math.min (command.number, annotations[a].annotations.length - command.position);
+if (copylen > 0) {
+System.arraycopy (annotations[a].annotations, command.position, deleted, 0, copylen);
+}}command.deletedAnnotations.put (annotations[a].annotationId, deleted);
+if (annotations[a].annotations.length > command.position + command.number) {
+System.arraycopy (annotations[a].annotations, command.position + command.number, temp, command.position, annotations[a].annotations.length - command.position - command.number);
+}} else {
+var dSize = aSize - command.position;
+if (dSize > 0) {
+var deleted = new Array (command.number);
+System.arraycopy (annotations[a].annotations, command.position, deleted, 0, dSize);
+command.deletedAnnotations.put (annotations[a].annotationId, deleted);
+tSize = Math.min (annotations[a].annotations.length, command.position);
+temp = new Array (tSize);
+System.arraycopy (annotations[a].annotations, 0, temp, 0, tSize);
+} else {
+temp = annotations[a].annotations;
+}}}annotations[a].annotations = temp;
+}
+}, "jalview.commands.EditCommand.Edit,~B,~B,~A");
+c$.adjustFeatures = Clazz.defineMethod (c$, "adjustFeatures",
+function (command, index, i, j, insert) {
+var seq = command.seqs[index];
+var sequence = seq.getDatasetSequence ();
+if (sequence == null) {
+sequence = seq;
+}if (insert) {
+if (command.editedFeatures != null && command.editedFeatures.containsKey (seq)) {
+sequence.setSequenceFeatures (command.editedFeatures.get (seq));
+}return;
+}var sf = sequence.getSequenceFeatures ();
+if (sf == null) {
+return;
+}var oldsf = new Array (sf.length);
+var cSize = j - i;
+for (var s = 0; s < sf.length; s++) {
+var copy = new jalview.datamodel.SequenceFeature (sf[s]);
+oldsf[s] = copy;
+if (sf[s].getEnd () < i) {
+continue;
+}if (sf[s].getBegin () > j) {
+sf[s].setBegin (copy.getBegin () - cSize);
+sf[s].setEnd (copy.getEnd () - cSize);
+continue;
+}if (sf[s].getBegin () >= i) {
+sf[s].setBegin (i);
+}if (sf[s].getEnd () < j) {
+sf[s].setEnd (j - 1);
+}sf[s].setEnd (sf[s].getEnd () - (cSize));
+if (sf[s].getBegin () > sf[s].getEnd ()) {
+sequence.deleteFeature (sf[s]);
+}}
+if (command.editedFeatures == null) {
+command.editedFeatures = new java.util.Hashtable ();
+}command.editedFeatures.put (seq, oldsf);
+}, "jalview.commands.EditCommand.Edit,~N,~N,~N,~B");
+Clazz.defineMethod (c$, "getEdits",
+function () {
+return this.edits;
+});
+Clazz.defineMethod (c$, "priorState",
+function (forUndo) {
+var result = new java.util.HashMap ();
+if (this.getEdits () == null) {
+return result;
+}if (forUndo) {
+for (var e, $e = this.getEdits ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
+for (var seq, $seq = 0, $$seq = e.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+var preEdit = result.get (ds);
+if (preEdit == null) {
+preEdit = new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
+preEdit.setDatasetSequence (ds);
+result.put (ds, preEdit);
+}}
+}
+return result;
+}var edits = new jalview.util.ReverseListIterator (this.getEdits ());
+while (edits.hasNext ()) {
+var oldEdit = edits.next ();
+var action = oldEdit.getAction ();
+var position = oldEdit.getPosition ();
+var number = oldEdit.getNumber ();
+var gap = oldEdit.getGapCharacter ();
+for (var seq, $seq = 0, $$seq = oldEdit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+var preEdit = result.get (ds);
+if (preEdit == null) {
+preEdit = new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
+preEdit.setDatasetSequence (ds);
+result.put (ds, preEdit);
+}if (ds != null) {
+if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (preEdit.getSequence (), position, number, gap)));
+} else if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (preEdit.getSequence (), position, position + number)));
+} else {
+System.err.println ("Can't undo edit action " + action);
+}}}
+}
+return result;
+}, "~B");
+Clazz.defineMethod (c$, "getEditIterator",
+function (forwards) {
+if (forwards) {
+return this.getEdits ().iterator ();
+} else {
+return new jalview.util.ReverseListIterator (this.getEdits ());
+}}, "~B");
+c$.$EditCommand$Edit$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.oldds = null;
+this.fullAlignmentHeight = false;
+this.deletedAnnotationRows = null;
+this.deletedAnnotations = null;
+this.editedFeatures = null;
+this.al = null;
+this.command = null;
+this.string = null;
+this.seqs = null;
+this.alIndex = null;
+this.position = 0;
+this.number = 0;
+this.gapChar = '\0';
+Clazz.instantialize (this, arguments);
+}, jalview.commands.EditCommand, "Edit");
+Clazz.makeConstructor (c$,
+function (a, b, c, d, e) {
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.gapChar = e;
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,~S");
+Clazz.makeConstructor (c$,
+function (a, b, c, d, e) {
+this.gapChar = e.getGapCharacter ();
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.al = e;
+this.alIndex = Clazz.newIntArray (b.length, 0);
+for (var f = 0; f < b.length; f++) {
+this.alIndex[f] = e.findIndex (b[f]);
+}
+this.fullAlignmentHeight = (e.getHeight () == b.length);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$,
+function (a, b, c, d, e, f) {
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.al = e;
+this.gapChar = e.getGapCharacter ();
+this.string = Clazz.newCharArray (b.length, '\0');
+for (var g = 0; g < b.length; g++) {
+this.string[g] = f.toCharArray ();
+}
+this.fullAlignmentHeight = (e.getHeight () == b.length);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
+Clazz.defineMethod (c$, "getSequences",
+function () {
+return this.seqs;
+});
+Clazz.defineMethod (c$, "getPosition",
+function () {
+return this.position;
+});
+Clazz.defineMethod (c$, "getAction",
+function () {
+return this.command;
+});
+Clazz.defineMethod (c$, "getNumber",
+function () {
+return this.number;
+});
+Clazz.defineMethod (c$, "getGapCharacter",
+function () {
+return this.gapChar;
+});
+c$ = Clazz.p0p ();
+};
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.commands.EditCommand, "Action", Enum);
+Clazz.defineMethod (c$, "getUndoAction",
+function () {
+switch (this) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+return jalview.commands.EditCommand.Action.DELETE_GAP;
+case jalview.commands.EditCommand.Action.CUT:
+return jalview.commands.EditCommand.Action.PASTE;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+return jalview.commands.EditCommand.Action.INSERT_GAP;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+return null;
+case jalview.commands.EditCommand.Action.PASTE:
+return jalview.commands.EditCommand.Action.CUT;
+case jalview.commands.EditCommand.Action.REPLACE:
+return jalview.commands.EditCommand.Action.REPLACE;
+}
+return null;
+});
+Clazz.defineEnumConstant (c$, "INSERT_GAP", 0, []);
+Clazz.defineEnumConstant (c$, "DELETE_GAP", 1, []);
+Clazz.defineEnumConstant (c$, "CUT", 2, []);
+Clazz.defineEnumConstant (c$, "PASTE", 3, []);
+Clazz.defineEnumConstant (c$, "REPLACE", 4, []);
+Clazz.defineEnumConstant (c$, "INSERT_NUC", 5, []);
+c$ = Clazz.p0p ();
+});
diff --git a/bin/jalview/commands/OrderCommand.js b/bin/jalview/commands/OrderCommand.js
index c85c70b..8939653 100644
--- a/bin/jalview/commands/OrderCommand.js
+++ b/bin/jalview/commands/OrderCommand.js
@@ -1,38 +1,38 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.CommandI"], "jalview.commands.OrderCommand", ["jalview.analysis.AlignmentSorter"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.description = null;
-this.seqs = null;
-this.seqs2 = null;
-this.al = null;
-Clazz.instantialize (this, arguments);
-}, jalview.commands, "OrderCommand", null, jalview.commands.CommandI);
-Clazz.makeConstructor (c$,
-function (description, seqs, al) {
-this.description = description;
-this.seqs = seqs;
-this.seqs2 = al.getSequencesArray ();
-this.al = al;
-this.doCommand (null);
-}, "~S,~A,jalview.datamodel.AlignmentI");
-Clazz.overrideMethod (c$, "getDescription",
-function () {
-return this.description;
-});
-Clazz.overrideMethod (c$, "getSize",
-function () {
-return 1;
-});
-Clazz.overrideMethod (c$, "doCommand",
-function (views) {
-jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs2);
-}, "~A");
-Clazz.overrideMethod (c$, "undoCommand",
-function (views) {
-jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs);
-}, "~A");
-Clazz.defineMethod (c$, "getSequenceOrder",
-function (undo) {
-return undo ? this.seqs : this.seqs2;
-}, "~B");
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.CommandI"], "jalview.commands.OrderCommand", ["jalview.analysis.AlignmentSorter"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.description = null;
+this.seqs = null;
+this.seqs2 = null;
+this.al = null;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "OrderCommand", null, jalview.commands.CommandI);
+Clazz.makeConstructor (c$,
+function (description, seqs, al) {
+this.description = description;
+this.seqs = seqs;
+this.seqs2 = al.getSequencesArray ();
+this.al = al;
+this.doCommand (null);
+}, "~S,~A,jalview.datamodel.AlignmentI");
+Clazz.overrideMethod (c$, "getDescription",
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "getSize",
+function () {
+return 1;
+});
+Clazz.overrideMethod (c$, "doCommand",
+function (views) {
+jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs2);
+}, "~A");
+Clazz.overrideMethod (c$, "undoCommand",
+function (views) {
+jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs);
+}, "~A");
+Clazz.defineMethod (c$, "getSequenceOrder",
+function (undo) {
+return undo ? this.seqs : this.seqs2;
+}, "~B");
+});
diff --git a/bin/jalview/commands/RemoveGapColCommand.js b/bin/jalview/commands/RemoveGapColCommand.js
index a41e76e..511279b 100644
--- a/bin/jalview/commands/RemoveGapColCommand.js
+++ b/bin/jalview/commands/RemoveGapColCommand.js
@@ -1,45 +1,45 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapColCommand", ["jalview.util.Comparison"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.columnsDeleted = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.commands, "RemoveGapColCommand", jalview.commands.EditCommand);
-Clazz.makeConstructor (c$,
-function (description, seqs, start, end, al) {
-Clazz.superConstructor (this, jalview.commands.RemoveGapColCommand, []);
-this.description = description;
-var j;
-var jSize = seqs.length;
-var startCol = -1;
-var endCol = -1;
-this.columnsDeleted = 0;
-this.clearEdits ();
-var $delete = true;
-for (var i = start; i <= end; i++) {
-$delete = true;
-for (j = 0; j < jSize; j++) {
-if (seqs[j].getLength () > i) {
-if (!jalview.util.Comparison.isGap (seqs[j].getCharAt (i))) {
-if ($delete) {
-endCol = i;
-}$delete = false;
-break;
-}}}
-if ($delete && startCol == -1) {
-startCol = i;
-}if (!$delete && startCol > -1) {
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, endCol - startCol, al, false, null);
-this.columnsDeleted += (endCol - startCol);
-startCol = -1;
-endCol = -1;
-}}
-if ($delete && startCol > -1) {
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, end - startCol + 1, al, false, null);
-this.columnsDeleted += (end - startCol + 1);
-}this.performEdit (0, null);
-}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
-Clazz.overrideMethod (c$, "getSize",
-function () {
-return this.columnsDeleted;
-});
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapColCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.columnsDeleted = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "RemoveGapColCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$,
+function (description, seqs, start, end, al) {
+Clazz.superConstructor (this, jalview.commands.RemoveGapColCommand, []);
+this.description = description;
+var j;
+var jSize = seqs.length;
+var startCol = -1;
+var endCol = -1;
+this.columnsDeleted = 0;
+this.clearEdits ();
+var $delete = true;
+for (var i = start; i <= end; i++) {
+$delete = true;
+for (j = 0; j < jSize; j++) {
+if (seqs[j].getLength () > i) {
+if (!jalview.util.Comparison.isGap (seqs[j].getCharAt (i))) {
+if ($delete) {
+endCol = i;
+}$delete = false;
+break;
+}}}
+if ($delete && startCol == -1) {
+startCol = i;
+}if (!$delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, endCol - startCol, al, false, null);
+this.columnsDeleted += (endCol - startCol);
+startCol = -1;
+endCol = -1;
+}}
+if ($delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, end - startCol + 1, al, false, null);
+this.columnsDeleted += (end - startCol + 1);
+}this.performEdit (0, null);
+}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.overrideMethod (c$, "getSize",
+function () {
+return this.columnsDeleted;
+});
+});
diff --git a/bin/jalview/commands/RemoveGapsCommand.js b/bin/jalview/commands/RemoveGapsCommand.js
index 7097db3..3cc233d 100644
--- a/bin/jalview/commands/RemoveGapsCommand.js
+++ b/bin/jalview/commands/RemoveGapsCommand.js
@@ -1,56 +1,56 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapsCommand", ["jalview.util.Comparison"], function () {
-c$ = Clazz.declareType (jalview.commands, "RemoveGapsCommand", jalview.commands.EditCommand);
-Clazz.makeConstructor (c$,
-function (description, seqs, al) {
-Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);
-this.description = description;
-var width = 0;
-for (var i = 0; i < seqs.length; i++) {
-if (seqs[i].getLength () > width) {
-width = seqs[i].getLength ();
-}}
-this.findGaps (seqs, 0, width, al);
-}, "~S,~A,jalview.datamodel.AlignmentI");
-Clazz.makeConstructor (c$,
-function (description, seqs, start, end, al) {
-Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);
-this.description = description;
-this.findGaps (seqs, start, end, al);
-}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "findGaps",
-function (seqs, start, end, al) {
-var startCol = -1;
-var endCol = -1;
-var deletedCols = 0;
-var j;
-var jSize;
-this.clearEdits ();
-var $delete = true;
-var sequence;
-for (var s = 0; s < seqs.length; s++) {
-deletedCols = 0;
-startCol = -1;
-endCol = -1;
-sequence = seqs[s].getSequence (start, end + 1);
-jSize = sequence.length;
-for (j = 0; j < jSize; j++) {
-$delete = true;
-if (!jalview.util.Comparison.isGap (sequence[j])) {
-if ($delete) {
-endCol = j;
-}$delete = false;
-}if ($delete && startCol == -1) {
-startCol = j;
-}if (!$delete && startCol > -1) {
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, endCol - startCol, al, false, null);
-deletedCols += (endCol - startCol);
-startCol = -1;
-endCol = -1;
-}}
-if ($delete && startCol > -1) {
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, jSize - startCol, al, false, null);
-}}
-this.performEdit (0, null);
-}, "~A,~N,~N,jalview.datamodel.AlignmentI");
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapsCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz.declareType (jalview.commands, "RemoveGapsCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$,
+function (description, seqs, al) {
+Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);
+this.description = description;
+var width = 0;
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i].getLength () > width) {
+width = seqs[i].getLength ();
+}}
+this.findGaps (seqs, 0, width, al);
+}, "~S,~A,jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$,
+function (description, seqs, start, end, al) {
+Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);
+this.description = description;
+this.findGaps (seqs, start, end, al);
+}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "findGaps",
+function (seqs, start, end, al) {
+var startCol = -1;
+var endCol = -1;
+var deletedCols = 0;
+var j;
+var jSize;
+this.clearEdits ();
+var $delete = true;
+var sequence;
+for (var s = 0; s < seqs.length; s++) {
+deletedCols = 0;
+startCol = -1;
+endCol = -1;
+sequence = seqs[s].getSequence (start, end + 1);
+jSize = sequence.length;
+for (j = 0; j < jSize; j++) {
+$delete = true;
+if (!jalview.util.Comparison.isGap (sequence[j])) {
+if ($delete) {
+endCol = j;
+}$delete = false;
+}if ($delete && startCol == -1) {
+startCol = j;
+}if (!$delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, endCol - startCol, al, false, null);
+deletedCols += (endCol - startCol);
+startCol = -1;
+endCol = -1;
+}}
+if ($delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, jSize - startCol, al, false, null);
+}}
+this.performEdit (0, null);
+}, "~A,~N,~N,jalview.datamodel.AlignmentI");
+});
diff --git a/bin/jalview/commands/SlideSequencesCommand.js b/bin/jalview/commands/SlideSequencesCommand.js
index 125c732..5a79b67 100644
--- a/bin/jalview/commands/SlideSequencesCommand.js
+++ b/bin/jalview/commands/SlideSequencesCommand.js
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.SlideSequencesCommand", ["jalview.util.Comparison"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.gapsInsertedBegin = false;
-Clazz.instantialize (this, arguments);
-}, jalview.commands, "SlideSequencesCommand", jalview.commands.EditCommand);
-Clazz.makeConstructor (c$,
-function (description, seqsLeft, seqsRight, slideSize, gapChar) {
-Clazz.superConstructor (this, jalview.commands.SlideSequencesCommand, []);
-this.description = description;
-var lSize = seqsLeft.length;
-this.gapsInsertedBegin = false;
-var i;
-var j;
-for (i = 0; i < lSize; i++) {
-for (j = 0; j < slideSize; j++) {
-if (!jalview.util.Comparison.isGap (seqsLeft[i].getCharAt (j))) {
-this.gapsInsertedBegin = true;
-break;
-}}
-}
-var e = null;
-if (!this.gapsInsertedBegin) {
-e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.DELETE_GAP, seqsLeft, 0, slideSize, gapChar);
-this.setEdit (e);
-} else {
-e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.INSERT_GAP, seqsRight, 0, slideSize, gapChar);
-this.setEdit (e);
-}jalview.commands.EditCommand.performEdit (e, null);
-}, "~S,~A,~A,~N,~S");
-Clazz.defineMethod (c$, "getGapsInsertedBegin",
-function () {
-return this.gapsInsertedBegin;
-});
-Clazz.defineMethod (c$, "appendSlideCommand",
-function (command) {
-var same = false;
-if (command.getEdit (0).seqs.length == this.getEdit (0).seqs.length) {
-same = true;
-for (var i = 0; i < command.getEdit (0).seqs.length; i++) {
-if (this.getEdit (0).seqs[i] !== command.getEdit (0).seqs[i]) {
-same = false;
-}}
-}if (same) {
-command.addEdit (this.getEdit (0));
-}return same;
-}, "jalview.commands.SlideSequencesCommand");
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.SlideSequencesCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.gapsInsertedBegin = false;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "SlideSequencesCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$,
+function (description, seqsLeft, seqsRight, slideSize, gapChar) {
+Clazz.superConstructor (this, jalview.commands.SlideSequencesCommand, []);
+this.description = description;
+var lSize = seqsLeft.length;
+this.gapsInsertedBegin = false;
+var i;
+var j;
+for (i = 0; i < lSize; i++) {
+for (j = 0; j < slideSize; j++) {
+if (!jalview.util.Comparison.isGap (seqsLeft[i].getCharAt (j))) {
+this.gapsInsertedBegin = true;
+break;
+}}
+}
+var e = null;
+if (!this.gapsInsertedBegin) {
+e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.DELETE_GAP, seqsLeft, 0, slideSize, gapChar);
+this.setEdit (e);
+} else {
+e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.INSERT_GAP, seqsRight, 0, slideSize, gapChar);
+this.setEdit (e);
+}jalview.commands.EditCommand.performEdit (e, null);
+}, "~S,~A,~A,~N,~S");
+Clazz.defineMethod (c$, "getGapsInsertedBegin",
+function () {
+return this.gapsInsertedBegin;
+});
+Clazz.defineMethod (c$, "appendSlideCommand",
+function (command) {
+var same = false;
+if (command.getEdit (0).seqs.length == this.getEdit (0).seqs.length) {
+same = true;
+for (var i = 0; i < command.getEdit (0).seqs.length; i++) {
+if (this.getEdit (0).seqs[i] !== command.getEdit (0).seqs[i]) {
+same = false;
+}}
+}if (same) {
+command.addEdit (this.getEdit (0));
+}return same;
+}, "jalview.commands.SlideSequencesCommand");
+});
diff --git a/bin/jalview/commands/TrimRegionCommand.class b/bin/jalview/commands/TrimRegionCommand.class
index aace60c7cb52f246e5b5eff7d9a2aa27eec68956..5e4d0bb0105d897f55a15269347cacae63cda249 100644
GIT binary patch
delta 29
lcmX>rcSdeQCpY8F&0XBdjLfDCY?D9m7&4k~R_4`W0sxs(2&Di3
delta 30
mcmX>jcUEpgCpY7)&0XBdjLc>X?2|w67&4hKZC2vdVgdl669}gO
diff --git a/bin/jalview/commands/TrimRegionCommand.js b/bin/jalview/commands/TrimRegionCommand.js
index ff06747..2732ca0 100644
--- a/bin/jalview/commands/TrimRegionCommand.js
+++ b/bin/jalview/commands/TrimRegionCommand.js
@@ -1,91 +1,91 @@
-Clazz.declarePackage ("jalview.commands");
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.TrimRegionCommand", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.colSel = null;
-this.start = null;
-this.shiftList = null;
-this.selectionGroup = null;
-this.deletedHiddenColumns = null;
-this.columnsDeleted = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.commands, "TrimRegionCommand", jalview.commands.EditCommand);
-Clazz.makeConstructor (c$,
-function (description, command, seqs, column, al, colSel, selectedRegion) {
-Clazz.superConstructor (this, jalview.commands.TrimRegionCommand, []);
-this.description = description;
-this.selectionGroup = selectedRegion;
-this.colSel = colSel;
-if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_LEFT)) {
-if (column == 0) {
-return;
-}this.columnsDeleted = column;
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, 0, column, al));
-} else if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_RIGHT)) {
-var width = al.getWidth () - column - 1;
-if (width < 2) {
-return;
-}this.columnsDeleted = width - 1;
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, column + 1, width, al));
-}var i;
-var isize = this.getEdit (0).seqs.length;
-this.start = Clazz.newIntArray (isize, 0);
-for (i = 0; i < isize; i++) {
-this.start[i] = this.getEdit (0).seqs[i].getStart ();
-}
-this.performEdit (0, null);
-}, "~S,~S,~A,~N,jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
-Clazz.defineMethod (c$, "cut",
-function (command) {
-var column;
-var j;
-var jSize = command.seqs.length;
-for (j = 0; j < jSize; j++) {
-if (command.position == 0) {
-column = command.seqs[j].findPosition (command.number);
-command.seqs[j].setStart (column);
-} else {
-column = command.seqs[j].findPosition (command.position) - 1;
-command.seqs[j].setEnd (column);
-}}
-Clazz.superCall (this, jalview.commands.TrimRegionCommand, "cut", [command, null]);
-if (command.position == 0) {
-this.deletedHiddenColumns = this.colSel.compensateForEdit (0, command.number);
-if (this.selectionGroup != null) {
-this.selectionGroup.adjustForRemoveLeft (command.number);
-}} else {
-this.deletedHiddenColumns = this.colSel.compensateForEdit (command.position, command.number);
-if (this.selectionGroup != null) {
-this.selectionGroup.adjustForRemoveRight (command.position);
-}}}, "jalview.commands.EditCommand.Edit");
-Clazz.defineMethod (c$, "paste",
-function (command) {
-Clazz.superCall (this, jalview.commands.TrimRegionCommand, "paste", [command, null]);
-var column;
-var j;
-var jSize = command.seqs.length;
-for (j = 0; j < jSize; j++) {
-if (command.position == 0) {
-command.seqs[j].setStart (this.start[j]);
-} else {
-column = command.seqs[j].findPosition (command.number + command.position) - 1;
-command.seqs[j].setEnd (column);
-}}
-if (command.position == 0) {
-this.colSel.compensateForEdit (0, -command.number);
-if (this.selectionGroup != null) {
-this.selectionGroup.adjustForRemoveLeft (-command.number);
-}}if (this.deletedHiddenColumns != null) {
-var region;
-for (var i = 0; i < this.deletedHiddenColumns.size (); i++) {
-region = this.deletedHiddenColumns.get (i);
-this.colSel.hideColumns (region[0], region[1]);
-}
-}}, "jalview.commands.EditCommand.Edit");
-Clazz.overrideMethod (c$, "getSize",
-function () {
-return this.columnsDeleted;
-});
-Clazz.defineStatics (c$,
-"TRIM_LEFT", "TrimLeft",
-"TRIM_RIGHT", "TrimRight");
-});
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.TrimRegionCommand", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.colSel = null;
+this.start = null;
+this.shiftList = null;
+this.selectionGroup = null;
+this.deletedHiddenColumns = null;
+this.columnsDeleted = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "TrimRegionCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$,
+function (description, command, seqs, column, al, colSel, selectedRegion) {
+Clazz.superConstructor (this, jalview.commands.TrimRegionCommand, []);
+this.description = description;
+this.selectionGroup = selectedRegion;
+this.colSel = colSel;
+if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_LEFT)) {
+if (column == 0) {
+return;
+}this.columnsDeleted = column;
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, 0, column, al));
+} else if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_RIGHT)) {
+var width = al.getWidth () - column - 1;
+if (width < 2) {
+return;
+}this.columnsDeleted = width - 1;
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, column + 1, width, al));
+}var i;
+var isize = this.getEdit (0).seqs.length;
+this.start = Clazz.newIntArray (isize, 0);
+for (i = 0; i < isize; i++) {
+this.start[i] = this.getEdit (0).seqs[i].getStart ();
+}
+this.performEdit (0, null);
+}, "~S,~S,~A,~N,jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "cut",
+function (command) {
+var column;
+var j;
+var jSize = command.seqs.length;
+for (j = 0; j < jSize; j++) {
+if (command.position == 0) {
+column = command.seqs[j].findPosition (command.number);
+command.seqs[j].setStart (column);
+} else {
+column = command.seqs[j].findPosition (command.position) - 1;
+command.seqs[j].setEnd (column);
+}}
+Clazz.superCall (this, jalview.commands.TrimRegionCommand, "cut", [command, null]);
+if (command.position == 0) {
+this.deletedHiddenColumns = this.colSel.compensateForEdit (0, command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveLeft (command.number);
+}} else {
+this.deletedHiddenColumns = this.colSel.compensateForEdit (command.position, command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveRight (command.position);
+}}}, "jalview.commands.EditCommand.Edit");
+Clazz.defineMethod (c$, "paste",
+function (command) {
+Clazz.superCall (this, jalview.commands.TrimRegionCommand, "paste", [command, null]);
+var column;
+var j;
+var jSize = command.seqs.length;
+for (j = 0; j < jSize; j++) {
+if (command.position == 0) {
+command.seqs[j].setStart (this.start[j]);
+} else {
+column = command.seqs[j].findPosition (command.number + command.position) - 1;
+command.seqs[j].setEnd (column);
+}}
+if (command.position == 0) {
+this.colSel.compensateForEdit (0, -command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveLeft (-command.number);
+}}if (this.deletedHiddenColumns != null) {
+var region;
+for (var i = 0; i < this.deletedHiddenColumns.size (); i++) {
+region = this.deletedHiddenColumns.get (i);
+this.colSel.hideColumns (region[0], region[1]);
+}
+}}, "jalview.commands.EditCommand.Edit");
+Clazz.overrideMethod (c$, "getSize",
+function () {
+return this.columnsDeleted;
+});
+Clazz.defineStatics (c$,
+"TRIM_LEFT", "TrimLeft",
+"TRIM_RIGHT", "TrimRight");
+});
diff --git a/bin/jalview/controller/AlignViewController.class b/bin/jalview/controller/AlignViewController.class
index c9c4b7826351b488e44602a65133a25e14ac0098..7507fecf9d9ce9e981d86c37e0ebe1bf522ae966 100644
GIT binary patch
delta 67
zcmbOj))Tg2gB)Yv=8bYDtjsbDN|RqG>o5l~2u^lTQDS76Y^`Fz?7<)oSK(pi
W;^LjWKxG~)kKj)Rfz7U}XIKG&$r1nn
delta 77
zcmeAPn;5oXgB)Yn=8bYDtjvlG>XTn6>oEH>2u`+FQDS9a`p>{Sd7+9n>wgAU263R6
h;^aOR9#$qUE-t3Yb5-WCb2173WZ-4m?4Wvv6#!P&6m 0) {
-this.viewport.getAlignment ().deleteAllGroups ();
-this.viewport.clearSequenceColours ();
-this.viewport.setSelectionGroup (null);
-return true;
-}return false;
-});
-Clazz.overrideMethod (c$, "markColumnsContainingFeatures",
-function (invert, extendCurrent, toggle, featureType) {
-var bs = new java.util.BitSet ();
-var alw;
-var alStart;
-var sqcol = (this.viewport.getSelectionGroup () == null ? this.viewport.getAlignment () : this.viewport.getSelectionGroup ());
-alStart = sqcol.getStartRes ();
-alw = sqcol.getEndRes () + 1;
-var seqs = sqcol.getSequences ();
-var nseq = 0;
-for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
-var tfeat = 0;
-if (sq != null) {
-var sf = sq.getSequenceFeatures ();
-if (sf != null) {
-var ist = sq.findIndex (sq.getStart ());
-var iend = sq.findIndex (sq.getEnd ());
-if (iend < alStart || ist > alw) {
-continue;
-}for (var sfpos, $sfpos = 0, $$sfpos = sf; $sfpos < $$sfpos.length && ((sfpos = $$sfpos[$sfpos]) || true); $sfpos++) {
-if (sfpos != null && (featureType.equals (sfpos.getType ()))) {
-tfeat++;
-var i = sq.findIndex (sfpos.getBegin ());
-var j = sq.findIndex (sfpos.getEnd ());
-if (j < alStart || i > alw) {
-continue;
-}if (i < alStart) {
-i = alStart;
-}if (i < ist) {
-i = ist;
-}if (j > alw) {
-j = alw;
-}for (; i <= j; i++) {
-bs.set (i - 1);
-}
-}}
-}if (tfeat > 0) {
-nseq++;
-}}}
-var cs = this.viewport.getColumnSelection ();
-if (bs.cardinality () > 0 || invert) {
-if (cs == null) {
-cs = new jalview.datamodel.ColumnSelection ();
-} else {
-if (!extendCurrent) {
-cs.clear ();
-}}if (invert) {
-for (var i = bs.nextClearBit (alStart), ibs = bs.nextSetBit (alStart); i >= alStart && i < (alw); ) {
-if (ibs < 0 || i < ibs) {
-if (toggle && cs.contains (i)) {
-cs.removeElement (i++);
-} else {
-cs.addElement (i++);
-}} else {
-i = bs.nextClearBit (ibs);
-ibs = bs.nextSetBit (i);
-}}
-} else {
-for (var i = bs.nextSetBit (alStart); i >= alStart; i = bs.nextSetBit (i + 1)) {
-if (toggle && cs.contains (i)) {
-cs.removeElement (i);
-} else {
-cs.addElement (i);
-}}
-}this.viewport.setColumnSelection (cs);
-this.alignPanel.paintAlignment (true);
-this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.view_controller_toggled_marked", Clazz.newArray (-1, [(toggle ? jalview.util.MessageManager.getString ("label.toggled") : jalview.util.MessageManager.getString ("label.marked")), (invert ? (Integer.$valueOf ((alw - alStart) - bs.cardinality ()).toString ()) : (Integer.$valueOf (bs.cardinality ()).toString ())), featureType, Integer.$valueOf (nseq).toString ()])));
-return true;
-} else {
-this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.no_feature_of_type_found", Clazz.newArray (-1, [featureType])));
-if (!extendCurrent && cs != null) {
-cs.clear ();
-this.alignPanel.paintAlignment (true);
-}return false;
-}}, "~B,~B,~B,~S");
-Clazz.overrideMethod (c$, "sortAlignmentByFeatureDensity",
-function (typ) {
-this.sortBy (typ, "Sort by Density", jalview.analysis.AlignmentSorter.FEATURE_DENSITY);
-}, "~A");
-Clazz.defineMethod (c$, "sortBy",
-function (typ, methodText, method) {
-var fr = this.alignPanel.getFeatureRenderer ();
-if (typ == null) {
-typ = fr == null ? null : fr.getDisplayedFeatureTypes ();
-}var gps = null;
-gps = fr == null ? null : fr.getDisplayedFeatureGroups ();
-if (typ != null) {
-var types = new java.util.ArrayList ();
-for (var i = 0; i < typ.length; i++) {
-if (typ[i] != null) {
-types.add (typ[i]);
-}typ = new Array (types.size ());
-types.toArray (typ);
-}
-}if (gps != null) {
-var grps = new java.util.ArrayList ();
-for (var i = 0; i < gps.length; i++) {
-if (gps[i] != null) {
-grps.add (gps[i]);
-}}
-gps = new Array (grps.size ());
-grps.toArray (gps);
-}var al = this.viewport.getAlignment ();
-var start;
-var stop;
-var sg = this.viewport.getSelectionGroup ();
-if (sg != null) {
-start = sg.getStartRes ();
-stop = sg.getEndRes ();
-} else {
-start = 0;
-stop = al.getWidth ();
-}var oldOrder = al.getSequencesArray ();
-jalview.analysis.AlignmentSorter.sortByFeature (typ, gps, start, stop, al, method);
-this.avcg.addHistoryItem ( new jalview.commands.OrderCommand (methodText, oldOrder, this.viewport.getAlignment ()));
-this.alignPanel.paintAlignment (true);
-}, "~A,~S,~S");
-Clazz.overrideMethod (c$, "sortAlignmentByFeatureScore",
-function (typ) {
-this.sortBy (typ, "Sort by Feature Score", jalview.analysis.AlignmentSorter.FEATURE_SCORE);
-}, "~A");
-Clazz.overrideMethod (c$, "parseFeaturesFile",
-function (file, protocol, relaxedIdMatching) {
-var featuresFile = false;
-try {
-featuresFile = new jalview.io.FeaturesFile (file, protocol).parse (this.viewport.getAlignment ().getDataset (), this.alignPanel.getFeatureRenderer ().getFeatureColours (), false, relaxedIdMatching);
-} catch (ex) {
-if (Clazz.exceptionOf (ex, Exception)) {
-ex.printStackTrace ();
-} else {
-throw ex;
-}
-}
-if (featuresFile) {
-this.avcg.refreshFeatureUI (true);
-if (this.alignPanel.getFeatureRenderer () != null) {
-this.alignPanel.getFeatureRenderer ().findAllFeatures (true);
-}if (this.avcg.getFeatureSettingsUI () != null) {
-this.avcg.getFeatureSettingsUI ().discoverAllFeatureData ();
-}this.alignPanel.paintAlignment (true);
-}return featuresFile;
-}, "~S,~S,~B");
-});
+Clazz.declarePackage ("jalview.controller");
+Clazz.load (["jalview.api.AlignViewControllerI"], "jalview.controller.AlignViewController", ["jalview.analysis.AlignmentSorter", "$.Grouping", "jalview.commands.OrderCommand", "jalview.datamodel.ColumnSelection", "jalview.io.FeaturesFile", "jalview.util.MessageManager", "java.awt.Color", "java.util.ArrayList", "$.BitSet"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.viewport = null;
+this.alignPanel = null;
+this.avcg = null;
+Clazz.instantialize (this, arguments);
+}, jalview.controller, "AlignViewController", null, jalview.api.AlignViewControllerI);
+Clazz.overrideMethod (c$, "finalize",
+function () {
+this.viewport = null;
+this.alignPanel = null;
+this.avcg = null;
+});
+Clazz.makeConstructor (c$,
+function (alignFrame, viewport, alignPanel) {
+this.avcg = alignFrame;
+this.viewport = viewport;
+this.alignPanel = alignPanel;
+}, "jalview.api.AlignViewControllerGuiI,jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.overrideMethod (c$, "setViewportAndAlignmentPanel",
+function (viewport, alignPanel) {
+this.alignPanel = alignPanel;
+this.viewport = viewport;
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.overrideMethod (c$, "makeGroupsFromSelection",
+function () {
+var sg = this.viewport.getSelectionGroup ();
+var cs = this.viewport.getColumnSelection ();
+var gps = null;
+if (sg != null && (cs == null || cs.getSelected () == null || cs.size () == 0)) {
+gps = jalview.analysis.Grouping.makeGroupsFrom (this.viewport.getSequenceSelection (), this.viewport.getAlignmentView (true).getSequenceStrings (this.viewport.getGapCharacter ()), this.viewport.getAlignment ().getGroups ());
+} else {
+if (cs != null) {
+gps = jalview.analysis.Grouping.makeGroupsFromCols ((sg == null) ? this.viewport.getAlignment ().getSequencesArray () : sg.getSequences ().toArray ( new Array (0)), cs, this.viewport.getAlignment ().getGroups ());
+}}if (gps != null) {
+this.viewport.getAlignment ().deleteAllGroups ();
+this.viewport.clearSequenceColours ();
+this.viewport.setSelectionGroup (null);
+for (var g = 0; g < gps.length; g++) {
+gps[g].setshowSequenceLogo (this.viewport.isShowSequenceLogo ());
+this.viewport.getAlignment ().addGroup (gps[g]);
+var col = new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));
+col = col.brighter ();
+for (var sq, $sq = gps[g].getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+this.viewport.setSequenceColour (sq, col);
+}
+}
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "createGroup",
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+this.viewport.getAlignment ().addGroup (sg);
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "unGroup",
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+this.viewport.getAlignment ().deleteGroup (sg);
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "deleteGroups",
+function () {
+if (this.viewport.getAlignment ().getGroups () != null && this.viewport.getAlignment ().getGroups ().size () > 0) {
+this.viewport.getAlignment ().deleteAllGroups ();
+this.viewport.clearSequenceColours ();
+this.viewport.setSelectionGroup (null);
+return true;
+}return false;
+});
+Clazz.overrideMethod (c$, "markColumnsContainingFeatures",
+function (invert, extendCurrent, toggle, featureType) {
+var bs = new java.util.BitSet ();
+var alw;
+var alStart;
+var sqcol = (this.viewport.getSelectionGroup () == null ? this.viewport.getAlignment () : this.viewport.getSelectionGroup ());
+alStart = sqcol.getStartRes ();
+alw = sqcol.getEndRes () + 1;
+var seqs = sqcol.getSequences ();
+var nseq = 0;
+for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+var tfeat = 0;
+if (sq != null) {
+var sf = sq.getSequenceFeatures ();
+if (sf != null) {
+var ist = sq.findIndex (sq.getStart ());
+var iend = sq.findIndex (sq.getEnd ());
+if (iend < alStart || ist > alw) {
+continue;
+}for (var sfpos, $sfpos = 0, $$sfpos = sf; $sfpos < $$sfpos.length && ((sfpos = $$sfpos[$sfpos]) || true); $sfpos++) {
+if (sfpos != null && (featureType.equals (sfpos.getType ()))) {
+tfeat++;
+var i = sq.findIndex (sfpos.getBegin ());
+var j = sq.findIndex (sfpos.getEnd ());
+if (j < alStart || i > alw) {
+continue;
+}if (i < alStart) {
+i = alStart;
+}if (i < ist) {
+i = ist;
+}if (j > alw) {
+j = alw;
+}for (; i <= j; i++) {
+bs.set (i - 1);
+}
+}}
+}if (tfeat > 0) {
+nseq++;
+}}}
+var cs = this.viewport.getColumnSelection ();
+if (bs.cardinality () > 0 || invert) {
+if (cs == null) {
+cs = new jalview.datamodel.ColumnSelection ();
+} else {
+if (!extendCurrent) {
+cs.clear ();
+}}if (invert) {
+for (var i = bs.nextClearBit (alStart), ibs = bs.nextSetBit (alStart); i >= alStart && i < (alw); ) {
+if (ibs < 0 || i < ibs) {
+if (toggle && cs.contains (i)) {
+cs.removeElement (i++);
+} else {
+cs.addElement (i++);
+}} else {
+i = bs.nextClearBit (ibs);
+ibs = bs.nextSetBit (i);
+}}
+} else {
+for (var i = bs.nextSetBit (alStart); i >= alStart; i = bs.nextSetBit (i + 1)) {
+if (toggle && cs.contains (i)) {
+cs.removeElement (i);
+} else {
+cs.addElement (i);
+}}
+}this.viewport.setColumnSelection (cs);
+this.alignPanel.paintAlignment (true);
+this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.view_controller_toggled_marked", Clazz.newArray (-1, [(toggle ? jalview.util.MessageManager.getString ("label.toggled") : jalview.util.MessageManager.getString ("label.marked")), (invert ? (Integer.$valueOf ((alw - alStart) - bs.cardinality ()).toString ()) : (Integer.$valueOf (bs.cardinality ()).toString ())), featureType, Integer.$valueOf (nseq).toString ()])));
+return true;
+} else {
+this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.no_feature_of_type_found", Clazz.newArray (-1, [featureType])));
+if (!extendCurrent && cs != null) {
+cs.clear ();
+this.alignPanel.paintAlignment (true);
+}return false;
+}}, "~B,~B,~B,~S");
+Clazz.overrideMethod (c$, "sortAlignmentByFeatureDensity",
+function (typ) {
+this.sortBy (typ, "Sort by Density", jalview.analysis.AlignmentSorter.FEATURE_DENSITY);
+}, "~A");
+Clazz.defineMethod (c$, "sortBy",
+function (typ, methodText, method) {
+var fr = this.alignPanel.getFeatureRenderer ();
+if (typ == null) {
+typ = fr == null ? null : fr.getDisplayedFeatureTypes ();
+}var gps = null;
+gps = fr == null ? null : fr.getDisplayedFeatureGroups ();
+if (typ != null) {
+var types = new java.util.ArrayList ();
+for (var i = 0; i < typ.length; i++) {
+if (typ[i] != null) {
+types.add (typ[i]);
+}typ = new Array (types.size ());
+types.toArray (typ);
+}
+}if (gps != null) {
+var grps = new java.util.ArrayList ();
+for (var i = 0; i < gps.length; i++) {
+if (gps[i] != null) {
+grps.add (gps[i]);
+}}
+gps = new Array (grps.size ());
+grps.toArray (gps);
+}var al = this.viewport.getAlignment ();
+var start;
+var stop;
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+start = sg.getStartRes ();
+stop = sg.getEndRes ();
+} else {
+start = 0;
+stop = al.getWidth ();
+}var oldOrder = al.getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByFeature (typ, gps, start, stop, al, method);
+this.avcg.addHistoryItem ( new jalview.commands.OrderCommand (methodText, oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+}, "~A,~S,~S");
+Clazz.overrideMethod (c$, "sortAlignmentByFeatureScore",
+function (typ) {
+this.sortBy (typ, "Sort by Feature Score", jalview.analysis.AlignmentSorter.FEATURE_SCORE);
+}, "~A");
+Clazz.overrideMethod (c$, "parseFeaturesFile",
+function (file, protocol, relaxedIdMatching) {
+var featuresFile = false;
+try {
+featuresFile = new jalview.io.FeaturesFile (file, protocol).parse (this.viewport.getAlignment ().getDataset (), this.alignPanel.getFeatureRenderer ().getFeatureColours (), false, relaxedIdMatching);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (featuresFile) {
+this.avcg.refreshFeatureUI (true);
+if (this.alignPanel.getFeatureRenderer () != null) {
+this.alignPanel.getFeatureRenderer ().findAllFeatures (true);
+}if (this.avcg.getFeatureSettingsUI () != null) {
+this.avcg.getFeatureSettingsUI ().discoverAllFeatureData ();
+}this.alignPanel.paintAlignment (true);
+}return featuresFile;
+}, "~S,~S,~B");
+});
diff --git a/bin/jalview/controller/FeatureSettingsController.js b/bin/jalview/controller/FeatureSettingsController.js
index 1a3acab..8a9666e 100644
--- a/bin/jalview/controller/FeatureSettingsController.js
+++ b/bin/jalview/controller/FeatureSettingsController.js
@@ -1,7 +1,7 @@
-Clazz.declarePackage ("jalview.controller");
-c$ = Clazz.decorateAsClass (function () {
-this.settingUI = null;
-this.fr = null;
-this.fsettings = null;
-Clazz.instantialize (this, arguments);
-}, jalview.controller, "FeatureSettingsController");
+Clazz.declarePackage ("jalview.controller");
+c$ = Clazz.decorateAsClass (function () {
+this.settingUI = null;
+this.fr = null;
+this.fsettings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.controller, "FeatureSettingsController");
diff --git a/bin/jalview/controller/FeatureSettingsControllerGuiI.js b/bin/jalview/controller/FeatureSettingsControllerGuiI.js
index ec98397..c092514 100644
--- a/bin/jalview/controller/FeatureSettingsControllerGuiI.js
+++ b/bin/jalview/controller/FeatureSettingsControllerGuiI.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.controller");
-Clazz.declareInterface (jalview.controller, "FeatureSettingsControllerGuiI");
+Clazz.declarePackage ("jalview.controller");
+Clazz.declareInterface (jalview.controller, "FeatureSettingsControllerGuiI");
diff --git a/bin/jalview/datamodel/ASequence.js b/bin/jalview/datamodel/ASequence.js
index 1c80545..76a4493 100644
--- a/bin/jalview/datamodel/ASequence.js
+++ b/bin/jalview/datamodel/ASequence.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.ASequence", null, function () {
-c$ = Clazz.declareType (jalview.datamodel, "ASequence", null, jalview.datamodel.ASequenceI);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.ASequence", null, function () {
+c$ = Clazz.declareType (jalview.datamodel, "ASequence", null, jalview.datamodel.ASequenceI);
+});
diff --git a/bin/jalview/datamodel/ASequenceI.js b/bin/jalview/datamodel/ASequenceI.js
index 91b3544..3d17914 100644
--- a/bin/jalview/datamodel/ASequenceI.js
+++ b/bin/jalview/datamodel/ASequenceI.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.declareInterface (jalview.datamodel, "ASequenceI");
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.declareInterface (jalview.datamodel, "ASequenceI");
diff --git a/bin/jalview/datamodel/AlignedCodon.js b/bin/jalview/datamodel/AlignedCodon.js
index d02ac8a..3b95647 100644
--- a/bin/jalview/datamodel/AlignedCodon.js
+++ b/bin/jalview/datamodel/AlignedCodon.js
@@ -1,42 +1,42 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.AlignedCodon", ["java.lang.IllegalArgumentException", "$.StringBuilder"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.pos1 = 0;
-this.pos2 = 0;
-this.pos3 = 0;
-this.product = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "AlignedCodon");
-Clazz.makeConstructor (c$,
-function (i, j, k) {
-this.construct (i, j, k, null);
-}, "~N,~N,~N");
-Clazz.makeConstructor (c$,
-function (i, j, k, prod) {
-this.pos1 = i;
-this.pos2 = j;
-this.pos3 = k;
-this.product = prod;
-}, "~N,~N,~N,~S");
-Clazz.defineMethod (c$, "getBaseColumn",
-function (base) {
-if (base < 1 || base > 3) {
-throw new IllegalArgumentException (Integer.toString (base));
-}return base == 1 ? this.pos1 : (base == 2 ? this.pos2 : this.pos3);
-}, "~N");
-Clazz.overrideMethod (c$, "equals",
-function (o) {
-if (o == null) {
-return true;
-}if (!(Clazz.instanceOf (o, jalview.datamodel.AlignedCodon))) {
-return false;
-}var ac = o;
-return (this.pos1 == ac.pos1 && this.pos2 == ac.pos2 && this.pos3 == ac.pos3);
-}, "~O");
-Clazz.overrideMethod (c$, "toString",
-function () {
-var sb = new StringBuilder ();
-sb.append ("[").append (this.pos1).append (", ").append (this.pos2).append (", ").append (this.pos3).append ("]");
-return sb.toString ();
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignedCodon", ["java.lang.IllegalArgumentException", "$.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.pos1 = 0;
+this.pos2 = 0;
+this.pos3 = 0;
+this.product = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignedCodon");
+Clazz.makeConstructor (c$,
+function (i, j, k) {
+this.construct (i, j, k, null);
+}, "~N,~N,~N");
+Clazz.makeConstructor (c$,
+function (i, j, k, prod) {
+this.pos1 = i;
+this.pos2 = j;
+this.pos3 = k;
+this.product = prod;
+}, "~N,~N,~N,~S");
+Clazz.defineMethod (c$, "getBaseColumn",
+function (base) {
+if (base < 1 || base > 3) {
+throw new IllegalArgumentException (Integer.toString (base));
+}return base == 1 ? this.pos1 : (base == 2 ? this.pos2 : this.pos3);
+}, "~N");
+Clazz.overrideMethod (c$, "equals",
+function (o) {
+if (o == null) {
+return true;
+}if (!(Clazz.instanceOf (o, jalview.datamodel.AlignedCodon))) {
+return false;
+}var ac = o;
+return (this.pos1 == ac.pos1 && this.pos2 == ac.pos2 && this.pos3 == ac.pos3);
+}, "~O");
+Clazz.overrideMethod (c$, "toString",
+function () {
+var sb = new StringBuilder ();
+sb.append ("[").append (this.pos1).append (", ").append (this.pos2).append (", ").append (this.pos3).append ("]");
+return sb.toString ();
+});
+});
diff --git a/bin/jalview/datamodel/AlignedCodonFrame.class b/bin/jalview/datamodel/AlignedCodonFrame.class
index dcb271c5b283832d763af6c4541bcb6e5e6c0d15..071822f6290786b40a278136d64f0c79ad11d513 100644
GIT binary patch
delta 31
ncmdmMzRP^Wd?7}S%?pH9GcwmOa8LFVF=GDDz_qze#GD-fuyP5>
delta 34
qcmdmGzSn%id?7~d%?pH9GcwmR@J#j-F=G40!2X|sX>+rPIXeK+hziL7
diff --git a/bin/jalview/datamodel/AlignedCodonFrame.js b/bin/jalview/datamodel/AlignedCodonFrame.js
index 8d854b4..043b032 100644
--- a/bin/jalview/datamodel/AlignedCodonFrame.js
+++ b/bin/jalview/datamodel/AlignedCodonFrame.js
@@ -1,198 +1,198 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.AlignedCodonFrame", ["jalview.datamodel.Mapping", "jalview.util.MappingUtils", "java.util.ArrayList"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.dnaSeqs = null;
-this.dnaToProt = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "AlignedCodonFrame");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.defineMethod (c$, "addMap",
-function (dnaseq, aaseq, map) {
-var nlen = 1;
-if (this.dnaSeqs != null) {
-nlen = this.dnaSeqs.length + 1;
-}var ndna = new Array (nlen);
-var ndtp = new Array (nlen);
-if (this.dnaSeqs != null) {
-System.arraycopy (this.dnaSeqs, 0, ndna, 0, this.dnaSeqs.length);
-System.arraycopy (this.dnaToProt, 0, ndtp, 0, this.dnaSeqs.length);
-}this.dnaSeqs = ndna;
-this.dnaToProt = ndtp;
-nlen--;
-this.dnaSeqs[nlen] = (dnaseq.getDatasetSequence () == null) ? dnaseq : dnaseq.getDatasetSequence ();
-var mp = new jalview.datamodel.Mapping (map);
-mp.to = (aaseq.getDatasetSequence () == null) ? aaseq : aaseq.getDatasetSequence ();
-this.dnaToProt[nlen] = mp;
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");
-Clazz.defineMethod (c$, "getdnaSeqs",
-function () {
-return this.dnaSeqs;
-});
-Clazz.defineMethod (c$, "getAaSeqs",
-function () {
-if (this.dnaToProt == null) {
-return null;
-}var sqs = new Array (this.dnaToProt.length);
-for (var sz = 0; sz < this.dnaToProt.length; sz++) {
-sqs[sz] = this.dnaToProt[sz].to;
-}
-return sqs;
-});
-Clazz.defineMethod (c$, "getdnaToProt",
-function () {
-if (this.dnaToProt == null) {
-return null;
-}var sqs = new Array (this.dnaToProt.length);
-for (var sz = 0; sz < this.dnaToProt.length; sz++) {
-sqs[sz] = this.dnaToProt[sz].map;
-}
-return sqs;
-});
-Clazz.defineMethod (c$, "getProtMappings",
-function () {
-return this.dnaToProt;
-});
-Clazz.defineMethod (c$, "getMappingForSequence",
-function (seq) {
-if (this.dnaSeqs == null) {
-return null;
-}var seqDs = seq.getDatasetSequence ();
-seqDs = seqDs != null ? seqDs : seq;
-for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
-if (this.dnaSeqs[ds] === seqDs || this.dnaToProt[ds].to === seqDs) {
-return this.dnaToProt[ds];
-}}
-return null;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getAaForDnaSeq",
-function (dnaSeqRef) {
-if (this.dnaSeqs == null) {
-return null;
-}var dnads = dnaSeqRef.getDatasetSequence ();
-for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
-if (this.dnaSeqs[ds] === dnaSeqRef || this.dnaSeqs[ds] === dnads) {
-return this.dnaToProt[ds].to;
-}}
-return null;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getDnaForAaSeq",
-function (aaSeqRef) {
-if (this.dnaToProt == null) {
-return null;
-}var aads = aaSeqRef.getDatasetSequence ();
-for (var as = 0; as < this.dnaToProt.length; as++) {
-if (this.dnaToProt[as].to === aaSeqRef || this.dnaToProt[as].to === aads) {
-return this.dnaSeqs[as];
-}}
-return null;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "involvesSequence",
-function (seq) {
-return this.getAaForDnaSeq (seq) != null || this.getDnaForAaSeq (seq) != null;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "markMappedRegion",
-function (seq, index, results) {
-if (this.dnaToProt == null) {
-return;
-}var codon;
-var ds = seq.getDatasetSequence ();
-for (var mi = 0; mi < this.dnaToProt.length; mi++) {
-if (this.dnaSeqs[mi] === seq || this.dnaSeqs[mi] === ds) {
-codon = this.dnaToProt[mi].map.locateInTo (index, index);
-if (codon != null) {
-for (var i = 0; i < codon.length; i += 2) {
-results.addResult (this.dnaToProt[mi].to, codon[i], codon[i + 1]);
-}
-}} else if (this.dnaToProt[mi].to === seq || this.dnaToProt[mi].to === ds) {
-{
-codon = this.dnaToProt[mi].map.locateInFrom (index, index);
-if (codon != null) {
-for (var i = 0; i < codon.length; i += 2) {
-results.addResult (this.dnaSeqs[mi], codon[i], codon[i + 1]);
-}
-}}}}
-}, "jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");
-Clazz.defineMethod (c$, "getDnaPosition",
-function (seq, aaPos) {
-var ml = null;
-for (var i = 0; i < this.dnaToProt.length; i++) {
-if (this.dnaSeqs[i] === seq) {
-ml = this.getdnaToProt ()[i];
-break;
-}}
-return ml == null ? null : ml.locateInFrom (aaPos, aaPos);
-}, "jalview.datamodel.SequenceI,~N");
-Clazz.defineMethod (c$, "findAlignedSequence",
-function (seq, al) {
-if (this.dnaToProt != null) {
-for (var i = 0; i < this.dnaToProt.length; i++) {
-if (this.dnaSeqs[i] === seq) {
-for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
-if (this.dnaToProt[i].to === sourceAligned.getDatasetSequence ()) {
-return sourceAligned;
-}}
-}}
-}if (this.dnaToProt != null) {
-for (var i = 0; i < this.dnaToProt.length; i++) {
-if (this.dnaToProt[i].to === seq) {
-for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
-if (this.dnaSeqs[i] === sourceAligned.getDatasetSequence ()) {
-return sourceAligned;
-}}
-}}
-}return null;
-}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "getMappedRegion",
-function (mappedFrom, mappedTo, pos) {
-var targetDs = mappedFrom.getDatasetSequence () == null ? mappedFrom : mappedFrom.getDatasetSequence ();
-var sourceDs = mappedTo.getDatasetSequence () == null ? mappedTo : mappedTo.getDatasetSequence ();
-if (targetDs == null || sourceDs == null || this.dnaToProt == null) {
-return null;
-}for (var mi = 0; mi < this.dnaToProt.length; mi++) {
-if (this.dnaSeqs[mi] === targetDs && this.dnaToProt[mi].to === sourceDs) {
-var codon = this.dnaToProt[mi].map.locateInFrom (pos, pos);
-if (codon != null) {
-return codon;
-}}}
-return null;
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");
-Clazz.defineMethod (c$, "getMappedCodon",
-function (protein, aaPos) {
-if (this.dnaToProt == null) {
-return null;
-}var ml = null;
-var dnaSeq = null;
-for (var i = 0; i < this.dnaToProt.length; i++) {
-if (this.dnaToProt[i].to === protein) {
-ml = this.getdnaToProt ()[i];
-dnaSeq = this.dnaSeqs[i].getSequence ();
-break;
-}}
-if (ml == null) {
-return null;
-}var codonPos = ml.locateInFrom (aaPos, aaPos);
-if (codonPos == null) {
-return null;
-}codonPos = jalview.util.MappingUtils.flattenRanges (codonPos);
-return Clazz.newCharArray (-1, [dnaSeq[codonPos[0] - 1], dnaSeq[codonPos[1] - 1], dnaSeq[codonPos[2] - 1]]);
-}, "jalview.datamodel.SequenceI,~N");
-Clazz.defineMethod (c$, "getMappingsForSequence",
-function (seq) {
-var result = new java.util.ArrayList ();
-if (this.dnaSeqs == null) {
-return result;
-}var related = new java.util.ArrayList ();
-var seqDs = seq.getDatasetSequence ();
-seqDs = seqDs != null ? seqDs : seq;
-for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
-var mapping = this.dnaToProt[ds];
-if (this.dnaSeqs[ds] === seqDs || mapping.to === seqDs) {
-if (!related.contains (mapping.to)) {
-result.add (mapping);
-related.add (mapping.to);
-}}}
-return result;
-}, "jalview.datamodel.SequenceI");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignedCodonFrame", ["jalview.datamodel.Mapping", "jalview.util.MappingUtils", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dnaSeqs = null;
+this.dnaToProt = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignedCodonFrame");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.defineMethod (c$, "addMap",
+function (dnaseq, aaseq, map) {
+var nlen = 1;
+if (this.dnaSeqs != null) {
+nlen = this.dnaSeqs.length + 1;
+}var ndna = new Array (nlen);
+var ndtp = new Array (nlen);
+if (this.dnaSeqs != null) {
+System.arraycopy (this.dnaSeqs, 0, ndna, 0, this.dnaSeqs.length);
+System.arraycopy (this.dnaToProt, 0, ndtp, 0, this.dnaSeqs.length);
+}this.dnaSeqs = ndna;
+this.dnaToProt = ndtp;
+nlen--;
+this.dnaSeqs[nlen] = (dnaseq.getDatasetSequence () == null) ? dnaseq : dnaseq.getDatasetSequence ();
+var mp = new jalview.datamodel.Mapping (map);
+mp.to = (aaseq.getDatasetSequence () == null) ? aaseq : aaseq.getDatasetSequence ();
+this.dnaToProt[nlen] = mp;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");
+Clazz.defineMethod (c$, "getdnaSeqs",
+function () {
+return this.dnaSeqs;
+});
+Clazz.defineMethod (c$, "getAaSeqs",
+function () {
+if (this.dnaToProt == null) {
+return null;
+}var sqs = new Array (this.dnaToProt.length);
+for (var sz = 0; sz < this.dnaToProt.length; sz++) {
+sqs[sz] = this.dnaToProt[sz].to;
+}
+return sqs;
+});
+Clazz.defineMethod (c$, "getdnaToProt",
+function () {
+if (this.dnaToProt == null) {
+return null;
+}var sqs = new Array (this.dnaToProt.length);
+for (var sz = 0; sz < this.dnaToProt.length; sz++) {
+sqs[sz] = this.dnaToProt[sz].map;
+}
+return sqs;
+});
+Clazz.defineMethod (c$, "getProtMappings",
+function () {
+return this.dnaToProt;
+});
+Clazz.defineMethod (c$, "getMappingForSequence",
+function (seq) {
+if (this.dnaSeqs == null) {
+return null;
+}var seqDs = seq.getDatasetSequence ();
+seqDs = seqDs != null ? seqDs : seq;
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+if (this.dnaSeqs[ds] === seqDs || this.dnaToProt[ds].to === seqDs) {
+return this.dnaToProt[ds];
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getAaForDnaSeq",
+function (dnaSeqRef) {
+if (this.dnaSeqs == null) {
+return null;
+}var dnads = dnaSeqRef.getDatasetSequence ();
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+if (this.dnaSeqs[ds] === dnaSeqRef || this.dnaSeqs[ds] === dnads) {
+return this.dnaToProt[ds].to;
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getDnaForAaSeq",
+function (aaSeqRef) {
+if (this.dnaToProt == null) {
+return null;
+}var aads = aaSeqRef.getDatasetSequence ();
+for (var as = 0; as < this.dnaToProt.length; as++) {
+if (this.dnaToProt[as].to === aaSeqRef || this.dnaToProt[as].to === aads) {
+return this.dnaSeqs[as];
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "involvesSequence",
+function (seq) {
+return this.getAaForDnaSeq (seq) != null || this.getDnaForAaSeq (seq) != null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "markMappedRegion",
+function (seq, index, results) {
+if (this.dnaToProt == null) {
+return;
+}var codon;
+var ds = seq.getDatasetSequence ();
+for (var mi = 0; mi < this.dnaToProt.length; mi++) {
+if (this.dnaSeqs[mi] === seq || this.dnaSeqs[mi] === ds) {
+codon = this.dnaToProt[mi].map.locateInTo (index, index);
+if (codon != null) {
+for (var i = 0; i < codon.length; i += 2) {
+results.addResult (this.dnaToProt[mi].to, codon[i], codon[i + 1]);
+}
+}} else if (this.dnaToProt[mi].to === seq || this.dnaToProt[mi].to === ds) {
+{
+codon = this.dnaToProt[mi].map.locateInFrom (index, index);
+if (codon != null) {
+for (var i = 0; i < codon.length; i += 2) {
+results.addResult (this.dnaSeqs[mi], codon[i], codon[i + 1]);
+}
+}}}}
+}, "jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");
+Clazz.defineMethod (c$, "getDnaPosition",
+function (seq, aaPos) {
+var ml = null;
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaSeqs[i] === seq) {
+ml = this.getdnaToProt ()[i];
+break;
+}}
+return ml == null ? null : ml.locateInFrom (aaPos, aaPos);
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "findAlignedSequence",
+function (seq, al) {
+if (this.dnaToProt != null) {
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaSeqs[i] === seq) {
+for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
+if (this.dnaToProt[i].to === sourceAligned.getDatasetSequence ()) {
+return sourceAligned;
+}}
+}}
+}if (this.dnaToProt != null) {
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaToProt[i].to === seq) {
+for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
+if (this.dnaSeqs[i] === sourceAligned.getDatasetSequence ()) {
+return sourceAligned;
+}}
+}}
+}return null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getMappedRegion",
+function (mappedFrom, mappedTo, pos) {
+var targetDs = mappedFrom.getDatasetSequence () == null ? mappedFrom : mappedFrom.getDatasetSequence ();
+var sourceDs = mappedTo.getDatasetSequence () == null ? mappedTo : mappedTo.getDatasetSequence ();
+if (targetDs == null || sourceDs == null || this.dnaToProt == null) {
+return null;
+}for (var mi = 0; mi < this.dnaToProt.length; mi++) {
+if (this.dnaSeqs[mi] === targetDs && this.dnaToProt[mi].to === sourceDs) {
+var codon = this.dnaToProt[mi].map.locateInFrom (pos, pos);
+if (codon != null) {
+return codon;
+}}}
+return null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "getMappedCodon",
+function (protein, aaPos) {
+if (this.dnaToProt == null) {
+return null;
+}var ml = null;
+var dnaSeq = null;
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaToProt[i].to === protein) {
+ml = this.getdnaToProt ()[i];
+dnaSeq = this.dnaSeqs[i].getSequence ();
+break;
+}}
+if (ml == null) {
+return null;
+}var codonPos = ml.locateInFrom (aaPos, aaPos);
+if (codonPos == null) {
+return null;
+}codonPos = jalview.util.MappingUtils.flattenRanges (codonPos);
+return Clazz.newCharArray (-1, [dnaSeq[codonPos[0] - 1], dnaSeq[codonPos[1] - 1], dnaSeq[codonPos[2] - 1]]);
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "getMappingsForSequence",
+function (seq) {
+var result = new java.util.ArrayList ();
+if (this.dnaSeqs == null) {
+return result;
+}var related = new java.util.ArrayList ();
+var seqDs = seq.getDatasetSequence ();
+seqDs = seqDs != null ? seqDs : seq;
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+var mapping = this.dnaToProt[ds];
+if (this.dnaSeqs[ds] === seqDs || mapping.to === seqDs) {
+if (!related.contains (mapping.to)) {
+result.add (mapping);
+related.add (mapping.to);
+}}}
+return result;
+}, "jalview.datamodel.SequenceI");
+});
diff --git a/bin/jalview/datamodel/Alignment.class b/bin/jalview/datamodel/Alignment.class
index 5ed53fa1ea9ea7524508837ff00735c46ebbccf2..c65b99e11df284fdb248bf79181ec2ab689f48c2 100644
GIT binary patch
delta 75
zcmV-R0JQ(s+X2(t0kC^O0d2E-30DyX0co=vTx$da{Qx18iD2{r46}b>R}8!i7#aWo
delta 78
zcmV-U0I~nm+X2?w0kC^O0dBK=KuG}uBmfAL$Uz+f2LiL^K`Rjf4zm(dg#!bK01uOz
kR%`+z0<#BK5d{Hivl(1#1Oxs6B9n(;^a2S2vwUG!4C=`k7XSbN
diff --git a/bin/jalview/datamodel/Alignment.js b/bin/jalview/datamodel/Alignment.js
index f70f6ce..a4d45ee 100644
--- a/bin/jalview/datamodel/Alignment.js
+++ b/bin/jalview/datamodel/Alignment.js
@@ -1,815 +1,815 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.AlignmentI", "$.HiddenSequences", "java.util.ArrayList", "$.Collections", "$.LinkedHashSet"], "jalview.datamodel.Alignment", ["jalview.analysis.AlignmentUtils", "jalview.datamodel.AlignmentAnnotation", "$.CigarArray", "$.SeqCigar", "$.Sequence", "jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "java.util.HashSet", "$.Hashtable", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.dataset = null;
-this.sequences = null;
-this.groups = null;
-this.gapCharacter = '-';
-this.type = 1;
-this.$hasRNAStructure = false;
-this.annotations = null;
-this.hiddenSequences = null;
-this.alignmentProperties = null;
-this.codonFrameList = null;
-this.alignmentRefs = 0;
-this.seqrep = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "Alignment", null, jalview.datamodel.AlignmentI);
-Clazz.prepareFields (c$, function () {
-this.groups = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
-this.hiddenSequences = new jalview.datamodel.HiddenSequences (this);
-this.codonFrameList = new java.util.LinkedHashSet ();
-});
-Clazz.defineMethod (c$, "initAlignment",
-($fz = function (seqs) {
-var i = 0;
-if (jalview.util.Comparison.isNucleotide (seqs)) {
-this.type = 1;
-} else {
-this.type = 0;
-}this.sequences = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
-for (i = 0; i < seqs.length; i++) {
-this.sequences.add (seqs[i]);
-}
-}, $fz.isPrivate = true, $fz), "~A");
-Clazz.makeConstructor (c$,
-function (al) {
-var seqs = al.getSequencesArray ();
-for (var i = 0; i < seqs.length; i++) {
-seqs[i] = new jalview.datamodel.Sequence (seqs[i]);
-}
-this.codonFrameList = (al).codonFrameList;
-this.initAlignment (seqs);
-}, "jalview.datamodel.AlignmentI");
-Clazz.makeConstructor (c$,
-function (seqs) {
-this.initAlignment (seqs);
-}, "~A");
-c$.createAlignment = Clazz.defineMethod (c$, "createAlignment",
-function (compactAlignment) {
-throw new Error (jalview.util.MessageManager.getString ("error.alignment_cigararray_not_implemented"));
-}, "jalview.datamodel.CigarArray");
-Clazz.defineMethod (c$, "getSequences",
-function () {
-return this.sequences;
-});
-Clazz.defineMethod (c$, "getSequences",
-function (hiddenReps) {
-return this.sequences;
-}, "java.util.Map");
-Clazz.defineMethod (c$, "getSequencesArray",
-function () {
-if (this.sequences == null) {
-return null;
-}{
-return this.sequences.toArray ( new Array (this.sequences.size ()));
-}});
-Clazz.overrideMethod (c$, "getSequencesByName",
-function () {
-return jalview.analysis.AlignmentUtils.getSequencesByName (this);
-});
-Clazz.overrideMethod (c$, "getSequenceAt",
-function (i) {
-{
-if (i > -1 && i < this.sequences.size ()) {
-return this.sequences.get (i);
-}}return null;
-}, "~N");
-Clazz.overrideMethod (c$, "addSequence",
-function (snew) {
-if (this.dataset != null) {
-if (snew.getDatasetSequence () != null) {
-this.getDataset ().addSequence (snew.getDatasetSequence ());
-} else {
-var adding = snew.deriveSequence ();
-this.getDataset ().addSequence (adding.getDatasetSequence ());
-snew = adding;
-}}if (this.sequences == null) {
-this.initAlignment ( Clazz.newArray (-1, [snew]));
-} else {
-{
-this.sequences.add (snew);
-}}if (this.hiddenSequences != null) {
-this.hiddenSequences.adjustHeightSequenceAdded ();
-}}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "setSequenceAt",
-function (i, snew) {
-{
-this.deleteSequence (i);
-this.sequences.set (i, snew);
-}}, "~N,jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getGroups",
-function () {
-return this.groups;
-});
-Clazz.overrideMethod (c$, "finalize",
-function () {
-if (this.getDataset () != null) {
-this.getDataset ().removeAlignmentRef ();
-}this.dataset = null;
-this.sequences = null;
-this.groups = null;
-this.annotations = null;
-this.hiddenSequences = null;
-});
-Clazz.defineMethod (c$, "removeAlignmentRef",
-($fz = function () {
-if (--this.alignmentRefs == 0) {
-this.finalize ();
-}}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "deleteSequence",
-function (s) {
-this.deleteSequence (this.findIndex (s));
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "deleteSequence",
-function (i) {
-if (i > -1 && i < this.getHeight ()) {
-{
-this.sequences.remove (i);
-this.hiddenSequences.adjustHeightSequenceDeleted (i);
-}}}, "~N");
-Clazz.overrideMethod (c$, "findGroup",
-function (s) {
-{
-for (var i = 0; i < this.groups.size (); i++) {
-var sg = this.groups.get (i);
-if (sg.getSequences (null).contains (s)) {
-return sg;
-}}
-}return null;
-}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "findAllGroups",
-function (s) {
-var temp = new java.util.ArrayList ();
-{
-var gSize = this.groups.size ();
-for (var i = 0; i < gSize; i++) {
-var sg = this.groups.get (i);
-if (sg == null || sg.getSequences () == null) {
-this.deleteGroup (sg);
-gSize--;
-continue;
-}if (sg.getSequences ().contains (s)) {
-temp.add (sg);
-}}
-}var ret = new Array (temp.size ());
-return temp.toArray (ret);
-}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "addGroup",
-function (sg) {
-{
-if (!this.groups.contains (sg)) {
-if (this.hiddenSequences.getSize () > 0) {
-var i;
-var iSize = sg.getSize ();
-for (i = 0; i < iSize; i++) {
-if (!this.sequences.contains (sg.getSequenceAt (i))) {
-sg.deleteSequence (sg.getSequenceAt (i), false);
-iSize--;
-i--;
-}}
-if (sg.getSize () < 1) {
-return;
-}}sg.setContext (this);
-this.groups.add (sg);
-}}}, "jalview.datamodel.SequenceGroup");
-Clazz.defineMethod (c$, "removeAnnotationForGroup",
-($fz = function (gp) {
-if (this.annotations == null || this.annotations.length == 0) {
-return;
-}var t;
-var todelete = new Array (this.annotations.length);
-var tokeep = new Array (this.annotations.length);
-var i;
-var p;
-var k;
-if (gp == null) {
-for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
-if (this.annotations[i].groupRef != null) {
-todelete[p++] = this.annotations[i];
-} else {
-tokeep[k++] = this.annotations[i];
-}}
-} else {
-for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
-if (this.annotations[i].groupRef === gp) {
-todelete[p++] = this.annotations[i];
-} else {
-tokeep[k++] = this.annotations[i];
-}}
-}if (p > 0) {
-for (i = 0; i < p; i++) {
-this.unhookAnnotation (todelete[i]);
-todelete[i] = null;
-}
-t = new Array (k);
-for (i = 0; i < k; i++) {
-t[i] = tokeep[i];
-}
-this.annotations = t;
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceGroup");
-Clazz.overrideMethod (c$, "deleteAllGroups",
-function () {
-{
-if (this.annotations != null) {
-this.removeAnnotationForGroup (null);
-}for (var sg, $sg = this.groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-sg.setContext (null);
-}
-this.groups.clear ();
-}});
-Clazz.overrideMethod (c$, "deleteGroup",
-function (g) {
-{
-if (this.groups.contains (g)) {
-this.removeAnnotationForGroup (g);
-this.groups.remove (g);
-g.setContext (null);
-}}}, "jalview.datamodel.SequenceGroup");
-Clazz.defineMethod (c$, "findName",
-function (name) {
-return this.findName (name, false);
-}, "~S");
-Clazz.defineMethod (c$, "findName",
-function (token, b) {
-return this.findName (null, token, b);
-}, "~S,~B");
-Clazz.defineMethod (c$, "findName",
-function (startAfter, token, b) {
-var i = 0;
-var sq = null;
-var sqname = null;
-if (startAfter != null) {
-var matched = false;
-while (i < this.sequences.size ()) {
-if (this.getSequenceAt (i++) === startAfter) {
-matched = true;
-break;
-}}
-if (!matched) {
-i = 0;
-}}while (i < this.sequences.size ()) {
-sq = this.getSequenceAt (i);
-sqname = sq.getName ();
-if (sqname.equals (token) || (b && (sqname.equalsIgnoreCase (token)))) {
-return this.getSequenceAt (i);
-}i++;
-}
-return null;
-}, "jalview.datamodel.SequenceI,~S,~B");
-Clazz.overrideMethod (c$, "findSequenceMatch",
-function (name) {
-var matches = new java.util.Vector ();
-var i = 0;
-while (i < this.sequences.size ()) {
-if (this.getSequenceAt (i).getName ().equals (name)) {
-matches.addElement (this.getSequenceAt (i));
-}i++;
-}
-var result = new Array (matches.size ());
-for (i = 0; i < result.length; i++) {
-result[i] = matches.elementAt (i);
-}
-return result;
-}, "~S");
-Clazz.defineMethod (c$, "findIndex",
-function (s) {
-var i = 0;
-while (i < this.sequences.size ()) {
-if (s === this.getSequenceAt (i)) {
-return i;
-}i++;
-}
-return -1;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "findIndex",
-function (results) {
-var i = 0;
-while (i < this.sequences.size ()) {
-if (results.involvesSequence (this.getSequenceAt (i))) {
-return i;
-}i++;
-}
-return -1;
-}, "jalview.datamodel.SearchResults");
-Clazz.overrideMethod (c$, "getHeight",
-function () {
-return this.sequences.size ();
-});
-Clazz.overrideMethod (c$, "getWidth",
-function () {
-var maxLength = -1;
-for (var i = 0; i < this.sequences.size (); i++) {
-if (this.getSequenceAt (i).getLength () > maxLength) {
-maxLength = this.getSequenceAt (i).getLength ();
-}}
-return maxLength;
-});
-Clazz.overrideMethod (c$, "setGapCharacter",
-function (gc) {
-this.gapCharacter = gc;
-{
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-seq.setSequence (seq.getSequenceAsString ().$replace ('.', gc).$replace ('-', gc).$replace (' ', gc));
-}
-}}, "~S");
-Clazz.defineMethod (c$, "getGapCharacter",
-function () {
-return this.gapCharacter;
-});
-Clazz.defineMethod (c$, "isAligned",
-function () {
-return this.isAligned (false);
-});
-Clazz.defineMethod (c$, "isAligned",
-function (includeHidden) {
-var width = this.getWidth ();
-if (this.hiddenSequences == null || this.hiddenSequences.getSize () == 0) {
-includeHidden = true;
-}for (var i = 0; i < this.sequences.size (); i++) {
-if (includeHidden || !this.hiddenSequences.isHidden (this.getSequenceAt (i))) {
-if (this.getSequenceAt (i).getLength () != width) {
-return false;
-}}}
-return true;
-}, "~B");
-Clazz.overrideMethod (c$, "deleteAllAnnotations",
-function (includingAutoCalculated) {
-var result = false;
-for (var alan, $alan = 0, $$alan = this.getAlignmentAnnotation (); $alan < $$alan.length && ((alan = $$alan[$alan]) || true); $alan++) {
-if (!alan.autoCalculated || includingAutoCalculated) {
-this.deleteAnnotation (alan);
-result = true;
-}}
-return result;
-}, "~B");
-Clazz.defineMethod (c$, "deleteAnnotation",
-function (aa) {
-return this.deleteAnnotation (aa, true);
-}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "deleteAnnotation",
-function (aa, unhook) {
-var aSize = 1;
-if (this.annotations != null) {
-aSize = this.annotations.length;
-}if (aSize < 1) {
-return false;
-}var temp = new Array (aSize - 1);
-var swap = false;
-var tIndex = 0;
-for (var i = 0; i < aSize; i++) {
-if (this.annotations[i] === aa) {
-swap = true;
-continue;
-}if (tIndex < temp.length) {
-temp[tIndex++] = this.annotations[i];
-}}
-if (swap) {
-this.annotations = temp;
-if (unhook) {
-this.unhookAnnotation (aa);
-}}return swap;
-}, "jalview.datamodel.AlignmentAnnotation,~B");
-Clazz.defineMethod (c$, "unhookAnnotation",
-($fz = function (aa) {
-if (aa.sequenceRef != null) {
-aa.sequenceRef.removeAlignmentAnnotation (aa);
-}if (aa.groupRef != null) {
-aa.groupRef = null;
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "addAnnotation",
-function (aa) {
-this.addAnnotation (aa, -1);
-}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "addAnnotation",
-function (aa, pos) {
-if (aa.getRNAStruc () != null) {
-this.$hasRNAStructure = true;
-}var aSize = 1;
-if (this.annotations != null) {
-aSize = this.annotations.length + 1;
-}var temp = new Array (aSize);
-var i = 0;
-if (pos == -1 || pos >= aSize) {
-temp[aSize - 1] = aa;
-} else {
-temp[pos] = aa;
-}if (aSize > 1) {
-var p = 0;
-for (i = 0; i < (aSize - 1); i++, p++) {
-if (p == pos) {
-p++;
-}if (p < temp.length) {
-temp[p] = this.annotations[i];
-}}
-}this.annotations = temp;
-}, "jalview.datamodel.AlignmentAnnotation,~N");
-Clazz.overrideMethod (c$, "setAnnotationIndex",
-function (aa, index) {
-if (aa == null || this.annotations == null || this.annotations.length - 1 < index) {
-return;
-}var aSize = this.annotations.length;
-var temp = new Array (aSize);
-temp[index] = aa;
-for (var i = 0; i < aSize; i++) {
-if (i == index) {
-continue;
-}if (i < index) {
-temp[i] = this.annotations[i];
-} else {
-temp[i] = this.annotations[i - 1];
-}}
-this.annotations = temp;
-}, "jalview.datamodel.AlignmentAnnotation,~N");
-Clazz.defineMethod (c$, "getAlignmentAnnotation",
-function () {
-return this.annotations;
-});
-Clazz.overrideMethod (c$, "setNucleotide",
-function (b) {
-if (b) {
-this.type = 1;
-} else {
-this.type = 0;
-}}, "~B");
-Clazz.defineMethod (c$, "isNucleotide",
-function () {
-if (this.type == 1) {
-return true;
-} else {
-return false;
-}});
-Clazz.overrideMethod (c$, "hasRNAStructure",
-function () {
-return this.$hasRNAStructure;
-});
-Clazz.overrideMethod (c$, "setDataset",
-function (data) {
-if (this.dataset == null && data == null) {
-var seqs = new Array (this.getHeight ());
-var currentSeq;
-for (var i = 0; i < this.getHeight (); i++) {
-currentSeq = this.getSequenceAt (i);
-if (currentSeq.getDatasetSequence () != null) {
-seqs[i] = currentSeq.getDatasetSequence ();
-} else {
-seqs[i] = currentSeq.createDatasetSequence ();
-}}
-this.dataset = new jalview.datamodel.Alignment (seqs);
-} else if (this.dataset == null && data != null) {
-this.dataset = data;
-for (var i = 0; i < this.getHeight (); i++) {
-var currentSeq = this.getSequenceAt (i);
-var dsq = currentSeq.getDatasetSequence ();
-if (dsq == null) {
-dsq = currentSeq.createDatasetSequence ();
-this.dataset.addSequence (dsq);
-} else {
-while (dsq.getDatasetSequence () != null) {
-dsq = dsq.getDatasetSequence ();
-}
-if (this.dataset.findIndex (dsq) == -1) {
-this.dataset.addSequence (dsq);
-}}}
-}this.dataset.addAlignmentRef ();
-}, "jalview.datamodel.Alignment");
-Clazz.defineMethod (c$, "addAlignmentRef",
-($fz = function () {
-this.alignmentRefs++;
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "getDataset",
-function () {
-return this.dataset;
-});
-Clazz.overrideMethod (c$, "padGaps",
-function () {
-var modified = false;
-var maxLength = -1;
-var current;
-for (var i = 0; i < this.sequences.size (); i++) {
-current = this.getSequenceAt (i);
-for (var j = current.getLength (); j > maxLength; j--) {
-if (j > maxLength && !jalview.util.Comparison.isGap (current.getCharAt (j))) {
-maxLength = j;
-break;
-}}
-}
-maxLength++;
-var cLength;
-for (var i = 0; i < this.sequences.size (); i++) {
-current = this.getSequenceAt (i);
-cLength = current.getLength ();
-if (cLength < maxLength) {
-current.insertCharAt (cLength, maxLength - cLength, this.gapCharacter);
-modified = true;
-} else if (current.getLength () > maxLength) {
-current.deleteChars (maxLength, current.getLength ());
-}}
-return modified;
-});
-Clazz.overrideMethod (c$, "justify",
-function (right) {
-var modified = false;
-var maxLength = -1;
-var ends = Clazz.newIntArray (this.sequences.size () * 2, 0);
-var current;
-for (var i = 0; i < this.sequences.size (); i++) {
-current = this.getSequenceAt (i);
-ends[i * 2] = current.findIndex (current.getStart ());
-ends[i * 2 + 1] = current.findIndex (current.getStart () + current.getLength ());
-var hitres = false;
-for (var j = 0, rs = 0, ssiz = current.getLength (); j < ssiz; j++) {
-if (!jalview.util.Comparison.isGap (current.getCharAt (j))) {
-if (!hitres) {
-ends[i * 2] = j;
-hitres = true;
-} else {
-ends[i * 2 + 1] = j;
-if (j - ends[i * 2] > maxLength) {
-maxLength = j - ends[i * 2];
-}}}}
-}
-maxLength++;
-var cLength;
-var extent;
-var diff;
-for (var i = 0; i < this.sequences.size (); i++) {
-current = this.getSequenceAt (i);
-cLength = 1 + ends[i * 2 + 1] - ends[i * 2];
-diff = maxLength - cLength;
-extent = current.getLength ();
-if (right) {
-if (extent > ends[i * 2 + 1]) {
-current.deleteChars (ends[i * 2 + 1] + 1, extent);
-modified = true;
-}if (ends[i * 2] > diff) {
-current.deleteChars (0, ends[i * 2] - diff);
-modified = true;
-} else {
-if (ends[i * 2] < diff) {
-current.insertCharAt (0, diff - ends[i * 2], this.gapCharacter);
-modified = true;
-}}} else {
-if (ends[i * 2] > 0) {
-current.deleteChars (0, ends[i * 2]);
-modified = true;
-ends[i * 2 + 1] -= ends[i * 2];
-extent -= ends[i * 2];
-}if (extent > maxLength) {
-current.deleteChars (maxLength + 1, extent);
-modified = true;
-} else {
-if (extent < maxLength) {
-current.insertCharAt (extent, maxLength - extent, this.gapCharacter);
-modified = true;
-}}}}
-return modified;
-}, "~B");
-Clazz.defineMethod (c$, "getHiddenSequences",
-function () {
-return this.hiddenSequences;
-});
-Clazz.overrideMethod (c$, "getCompactAlignment",
-function () {
-{
-var alseqs = new Array (this.sequences.size ());
-var i = 0;
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-alseqs[i++] = new jalview.datamodel.SeqCigar (seq);
-}
-var cal = new jalview.datamodel.CigarArray (alseqs);
-cal.addOperation ('M', this.getWidth ());
-return cal;
-}});
-Clazz.overrideMethod (c$, "setProperty",
-function (key, value) {
-if (this.alignmentProperties == null) {
-this.alignmentProperties = new java.util.Hashtable ();
-}this.alignmentProperties.put (key, value);
-}, "~O,~O");
-Clazz.defineMethod (c$, "getProperty",
-function (key) {
-if (this.alignmentProperties != null) {
-return this.alignmentProperties.get (key);
-} else {
-return null;
-}}, "~O");
-Clazz.defineMethod (c$, "getProperties",
-function () {
-return this.alignmentProperties;
-});
-Clazz.overrideMethod (c$, "addCodonFrame",
-function (codons) {
-if (codons != null) {
-this.codonFrameList.add (codons);
-}}, "jalview.datamodel.AlignedCodonFrame");
-Clazz.overrideMethod (c$, "getCodonFrame",
-function (seq) {
-if (seq == null) {
-return null;
-}var cframes = new java.util.ArrayList ();
-for (var acf, $acf = this.codonFrameList.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
-if (acf.involvesSequence (seq)) {
-cframes.add (acf);
-}}
-return cframes;
-}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "setCodonFrames",
-function (acfs) {
-this.codonFrameList = acfs;
-}, "java.util.Set");
-Clazz.defineMethod (c$, "getCodonFrames",
-function () {
-return this.codonFrameList;
-});
-Clazz.overrideMethod (c$, "removeCodonFrame",
-function (codons) {
-if (codons == null || this.codonFrameList == null) {
-return false;
-}return this.codonFrameList.remove (codons);
-}, "jalview.datamodel.AlignedCodonFrame");
-Clazz.overrideMethod (c$, "append",
-function (toappend) {
-if (toappend === this) {
-System.err.println ("Self append may cause a deadlock.");
-}var samegap = toappend.getGapCharacter () == this.getGapCharacter ();
-var oldc = toappend.getGapCharacter ();
-var hashidden = toappend.getHiddenSequences () != null && toappend.getHiddenSequences ().hiddenSequences != null;
-var sqs = (hashidden) ? toappend.getHiddenSequences ().getFullAlignment ().getSequences () : toappend.getSequences ();
-if (sqs != null) {
-{
-for (var addedsq, $addedsq = sqs.iterator (); $addedsq.hasNext () && ((addedsq = $addedsq.next ()) || true);) {
-if (!samegap) {
-var oldseq = addedsq.getSequence ();
-for (var c = 0; c < oldseq.length; c++) {
-if (oldseq[c] == oldc) {
-oldseq[c] = this.gapCharacter;
-}}
-}this.addSequence (addedsq);
-}
-}}var alan = toappend.getAlignmentAnnotation ();
-for (var a = 0; alan != null && a < alan.length; a++) {
-this.addAnnotation (alan[a]);
-}
-this.codonFrameList.addAll (toappend.getCodonFrames ());
-var sg = toappend.getGroups ();
-if (sg != null) {
-for (var _sg, $_sg = sg.iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {
-this.addGroup (_sg);
-}
-}if (toappend.getHiddenSequences () != null) {
-var hs = toappend.getHiddenSequences ();
-if (this.hiddenSequences == null) {
-this.hiddenSequences = new jalview.datamodel.HiddenSequences (this);
-}if (hs.hiddenSequences != null) {
-for (var s = 0; s < hs.hiddenSequences.length; s++) {
-if (hs.hiddenSequences[s] != null) {
-this.hiddenSequences.hideSequence (hs.hiddenSequences[s]);
-}}
-}}if (toappend.getProperties () != null) {
-var key = toappend.getProperties ().keys ();
-while (key.hasMoreElements ()) {
-var k = key.nextElement ();
-var ourval = this.getProperty (k);
-var toapprop = toappend.getProperty (k);
-if (ourval != null) {
-if (ourval.getClass ().equals (toapprop.getClass ()) && !ourval.equals (toapprop)) {
-if (Clazz.instanceOf (ourval, String)) {
-this.setProperty (k, (ourval) + "; " + (toapprop));
-} else {
-if (Clazz.instanceOf (ourval, java.util.Vector)) {
-var theirv = (toapprop).elements ();
-while (theirv.hasMoreElements ()) {
-(ourval).addElement (theirv);
-}
-}}}} else {
-this.setProperty (k, toapprop);
-}}
-}}, "jalview.datamodel.AlignmentI");
-Clazz.overrideMethod (c$, "findOrCreateAnnotation",
-function (name, calcId, autoCalc, seqRef, groupRef) {
-if (this.annotations != null) {
-for (var annot, $annot = 0, $$annot = this.getAlignmentAnnotation (); $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {
-if (annot.autoCalculated == autoCalc && (name.equals (annot.label)) && (calcId == null || annot.getCalcId ().equals (calcId)) && annot.sequenceRef === seqRef && annot.groupRef === groupRef) {
-return annot;
-}}
-}var annot = new jalview.datamodel.AlignmentAnnotation (name, name, new Array (1), 0, 0, 1);
-annot.hasText = false;
-annot.setCalcId ( String.instantialize (calcId));
-annot.autoCalculated = autoCalc;
-if (seqRef != null) {
-annot.setSequenceRef (seqRef);
-}annot.groupRef = groupRef;
-this.addAnnotation (annot);
-return annot;
-}, "~S,~S,~B,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
-Clazz.overrideMethod (c$, "findAnnotation",
-function (calcId) {
-var aa = new java.util.ArrayList ();
-for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
-if (a.getCalcId () === calcId || (a.getCalcId () != null && calcId != null && a.getCalcId ().equals (calcId))) {
-aa.add (a);
-}}
-return aa;
-}, "~S");
-Clazz.overrideMethod (c$, "findAnnotations",
-function (seq, calcId, label) {
-var aa = new java.util.ArrayList ();
-for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
-if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
-aa.add (ann);
-}}
-return aa;
-}, "jalview.datamodel.SequenceI,~S,~S");
-Clazz.overrideMethod (c$, "moveSelectedSequencesByOne",
-function (sg, map, up) {
-{
-if (up) {
-for (var i = 1, iSize = this.sequences.size (); i < iSize; i++) {
-var seq = this.sequences.get (i);
-if (!sg.getSequences (map).contains (seq)) {
-continue;
-}var temp = this.sequences.get (i - 1);
-if (sg.getSequences (null).contains (temp)) {
-continue;
-}this.sequences.set (i, temp);
-this.sequences.set (i - 1, seq);
-}
-} else {
-for (var i = this.sequences.size () - 2; i > -1; i--) {
-var seq = this.sequences.get (i);
-if (!sg.getSequences (map).contains (seq)) {
-continue;
-}var temp = this.sequences.get (i + 1);
-if (sg.getSequences (map).contains (temp)) {
-continue;
-}this.sequences.set (i, temp);
-this.sequences.set (i + 1, seq);
-}
-}}}, "jalview.datamodel.SequenceGroup,java.util.Map,~B");
-Clazz.overrideMethod (c$, "validateAnnotation",
-function (alignmentAnnotation) {
-alignmentAnnotation.validateRangeAndDisplay ();
-if (this.isNucleotide () && alignmentAnnotation.isValidStruc ()) {
-this.$hasRNAStructure = true;
-}}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.overrideMethod (c$, "getSeqrep",
-function () {
-return this.seqrep;
-});
-Clazz.overrideMethod (c$, "setSeqrep",
-function (seqrep) {
-this.seqrep = seqrep;
-}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "hasSeqrep",
-function () {
-return this.seqrep != null;
-});
-Clazz.overrideMethod (c$, "getEndRes",
-function () {
-return this.getWidth () - 1;
-});
-Clazz.overrideMethod (c$, "getStartRes",
-function () {
-return 0;
-});
-Clazz.overrideMethod (c$, "getContext",
-function () {
-return this.dataset;
-});
-Clazz.defineMethod (c$, "alignAs",
-function (al) {
-return this.alignAs (al, false, true);
-}, "jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "alignAs",
-function (al, preserveMappedGaps, preserveUnmappedGaps) {
-var count = 0;
-var thisIsNucleotide = this.isNucleotide ();
-var thatIsProtein = !al.isNucleotide ();
-if (!thatIsProtein && !thisIsNucleotide) {
-return jalview.analysis.AlignmentUtils.alignProteinAsDna (this, al);
-}var thisGapChar = this.getGapCharacter ();
-var gap = thisIsNucleotide && thatIsProtein ? String.valueOf ( Clazz.newCharArray (-1, [thisGapChar, thisGapChar, thisGapChar])) : String.valueOf (thisGapChar);
-for (var alignTo, $alignTo = this.getSequences ().iterator (); $alignTo.hasNext () && ((alignTo = $alignTo.next ()) || true);) {
-count += jalview.analysis.AlignmentUtils.alignSequenceAs (alignTo, al, gap, preserveMappedGaps, preserveUnmappedGaps) ? 1 : 0;
-}
-return count;
-}, "jalview.datamodel.AlignmentI,~B,~B");
-Clazz.overrideMethod (c$, "getSequenceNames",
-function () {
-var names = new java.util.HashSet ();
-for (var seq, $seq = this.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-names.add (seq.getName ());
-}
-return names;
-});
-Clazz.overrideMethod (c$, "toString",
-function () {
-var seq = this.getSequencesArray ();
-{
-return "" + JSON.stringify(seq);
-}});
-Clazz.defineStatics (c$,
-"PROTEIN", 0,
-"NUCLEOTIDE", 1);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AlignmentI", "$.HiddenSequences", "java.util.ArrayList", "$.Collections", "$.LinkedHashSet"], "jalview.datamodel.Alignment", ["jalview.analysis.AlignmentUtils", "jalview.datamodel.AlignmentAnnotation", "$.CigarArray", "$.SeqCigar", "$.Sequence", "jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "java.util.HashSet", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dataset = null;
+this.sequences = null;
+this.groups = null;
+this.gapCharacter = '-';
+this.type = 1;
+this.$hasRNAStructure = false;
+this.annotations = null;
+this.hiddenSequences = null;
+this.alignmentProperties = null;
+this.codonFrameList = null;
+this.alignmentRefs = 0;
+this.seqrep = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Alignment", null, jalview.datamodel.AlignmentI);
+Clazz.prepareFields (c$, function () {
+this.groups = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.hiddenSequences = new jalview.datamodel.HiddenSequences (this);
+this.codonFrameList = new java.util.LinkedHashSet ();
+});
+Clazz.defineMethod (c$, "initAlignment",
+($fz = function (seqs) {
+var i = 0;
+if (jalview.util.Comparison.isNucleotide (seqs)) {
+this.type = 1;
+} else {
+this.type = 0;
+}this.sequences = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+for (i = 0; i < seqs.length; i++) {
+this.sequences.add (seqs[i]);
+}
+}, $fz.isPrivate = true, $fz), "~A");
+Clazz.makeConstructor (c$,
+function (al) {
+var seqs = al.getSequencesArray ();
+for (var i = 0; i < seqs.length; i++) {
+seqs[i] = new jalview.datamodel.Sequence (seqs[i]);
+}
+this.codonFrameList = (al).codonFrameList;
+this.initAlignment (seqs);
+}, "jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$,
+function (seqs) {
+this.initAlignment (seqs);
+}, "~A");
+c$.createAlignment = Clazz.defineMethod (c$, "createAlignment",
+function (compactAlignment) {
+throw new Error (jalview.util.MessageManager.getString ("error.alignment_cigararray_not_implemented"));
+}, "jalview.datamodel.CigarArray");
+Clazz.defineMethod (c$, "getSequences",
+function () {
+return this.sequences;
+});
+Clazz.defineMethod (c$, "getSequences",
+function (hiddenReps) {
+return this.sequences;
+}, "java.util.Map");
+Clazz.defineMethod (c$, "getSequencesArray",
+function () {
+if (this.sequences == null) {
+return null;
+}{
+return this.sequences.toArray ( new Array (this.sequences.size ()));
+}});
+Clazz.overrideMethod (c$, "getSequencesByName",
+function () {
+return jalview.analysis.AlignmentUtils.getSequencesByName (this);
+});
+Clazz.overrideMethod (c$, "getSequenceAt",
+function (i) {
+{
+if (i > -1 && i < this.sequences.size ()) {
+return this.sequences.get (i);
+}}return null;
+}, "~N");
+Clazz.overrideMethod (c$, "addSequence",
+function (snew) {
+if (this.dataset != null) {
+if (snew.getDatasetSequence () != null) {
+this.getDataset ().addSequence (snew.getDatasetSequence ());
+} else {
+var adding = snew.deriveSequence ();
+this.getDataset ().addSequence (adding.getDatasetSequence ());
+snew = adding;
+}}if (this.sequences == null) {
+this.initAlignment ( Clazz.newArray (-1, [snew]));
+} else {
+{
+this.sequences.add (snew);
+}}if (this.hiddenSequences != null) {
+this.hiddenSequences.adjustHeightSequenceAdded ();
+}}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "setSequenceAt",
+function (i, snew) {
+{
+this.deleteSequence (i);
+this.sequences.set (i, snew);
+}}, "~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getGroups",
+function () {
+return this.groups;
+});
+Clazz.overrideMethod (c$, "finalize",
+function () {
+if (this.getDataset () != null) {
+this.getDataset ().removeAlignmentRef ();
+}this.dataset = null;
+this.sequences = null;
+this.groups = null;
+this.annotations = null;
+this.hiddenSequences = null;
+});
+Clazz.defineMethod (c$, "removeAlignmentRef",
+($fz = function () {
+if (--this.alignmentRefs == 0) {
+this.finalize ();
+}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "deleteSequence",
+function (s) {
+this.deleteSequence (this.findIndex (s));
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "deleteSequence",
+function (i) {
+if (i > -1 && i < this.getHeight ()) {
+{
+this.sequences.remove (i);
+this.hiddenSequences.adjustHeightSequenceDeleted (i);
+}}}, "~N");
+Clazz.overrideMethod (c$, "findGroup",
+function (s) {
+{
+for (var i = 0; i < this.groups.size (); i++) {
+var sg = this.groups.get (i);
+if (sg.getSequences (null).contains (s)) {
+return sg;
+}}
+}return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "findAllGroups",
+function (s) {
+var temp = new java.util.ArrayList ();
+{
+var gSize = this.groups.size ();
+for (var i = 0; i < gSize; i++) {
+var sg = this.groups.get (i);
+if (sg == null || sg.getSequences () == null) {
+this.deleteGroup (sg);
+gSize--;
+continue;
+}if (sg.getSequences ().contains (s)) {
+temp.add (sg);
+}}
+}var ret = new Array (temp.size ());
+return temp.toArray (ret);
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "addGroup",
+function (sg) {
+{
+if (!this.groups.contains (sg)) {
+if (this.hiddenSequences.getSize () > 0) {
+var i;
+var iSize = sg.getSize ();
+for (i = 0; i < iSize; i++) {
+if (!this.sequences.contains (sg.getSequenceAt (i))) {
+sg.deleteSequence (sg.getSequenceAt (i), false);
+iSize--;
+i--;
+}}
+if (sg.getSize () < 1) {
+return;
+}}sg.setContext (this);
+this.groups.add (sg);
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "removeAnnotationForGroup",
+($fz = function (gp) {
+if (this.annotations == null || this.annotations.length == 0) {
+return;
+}var t;
+var todelete = new Array (this.annotations.length);
+var tokeep = new Array (this.annotations.length);
+var i;
+var p;
+var k;
+if (gp == null) {
+for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
+if (this.annotations[i].groupRef != null) {
+todelete[p++] = this.annotations[i];
+} else {
+tokeep[k++] = this.annotations[i];
+}}
+} else {
+for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
+if (this.annotations[i].groupRef === gp) {
+todelete[p++] = this.annotations[i];
+} else {
+tokeep[k++] = this.annotations[i];
+}}
+}if (p > 0) {
+for (i = 0; i < p; i++) {
+this.unhookAnnotation (todelete[i]);
+todelete[i] = null;
+}
+t = new Array (k);
+for (i = 0; i < k; i++) {
+t[i] = tokeep[i];
+}
+this.annotations = t;
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceGroup");
+Clazz.overrideMethod (c$, "deleteAllGroups",
+function () {
+{
+if (this.annotations != null) {
+this.removeAnnotationForGroup (null);
+}for (var sg, $sg = this.groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+sg.setContext (null);
+}
+this.groups.clear ();
+}});
+Clazz.overrideMethod (c$, "deleteGroup",
+function (g) {
+{
+if (this.groups.contains (g)) {
+this.removeAnnotationForGroup (g);
+this.groups.remove (g);
+g.setContext (null);
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "findName",
+function (name) {
+return this.findName (name, false);
+}, "~S");
+Clazz.defineMethod (c$, "findName",
+function (token, b) {
+return this.findName (null, token, b);
+}, "~S,~B");
+Clazz.defineMethod (c$, "findName",
+function (startAfter, token, b) {
+var i = 0;
+var sq = null;
+var sqname = null;
+if (startAfter != null) {
+var matched = false;
+while (i < this.sequences.size ()) {
+if (this.getSequenceAt (i++) === startAfter) {
+matched = true;
+break;
+}}
+if (!matched) {
+i = 0;
+}}while (i < this.sequences.size ()) {
+sq = this.getSequenceAt (i);
+sqname = sq.getName ();
+if (sqname.equals (token) || (b && (sqname.equalsIgnoreCase (token)))) {
+return this.getSequenceAt (i);
+}i++;
+}
+return null;
+}, "jalview.datamodel.SequenceI,~S,~B");
+Clazz.overrideMethod (c$, "findSequenceMatch",
+function (name) {
+var matches = new java.util.Vector ();
+var i = 0;
+while (i < this.sequences.size ()) {
+if (this.getSequenceAt (i).getName ().equals (name)) {
+matches.addElement (this.getSequenceAt (i));
+}i++;
+}
+var result = new Array (matches.size ());
+for (i = 0; i < result.length; i++) {
+result[i] = matches.elementAt (i);
+}
+return result;
+}, "~S");
+Clazz.defineMethod (c$, "findIndex",
+function (s) {
+var i = 0;
+while (i < this.sequences.size ()) {
+if (s === this.getSequenceAt (i)) {
+return i;
+}i++;
+}
+return -1;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "findIndex",
+function (results) {
+var i = 0;
+while (i < this.sequences.size ()) {
+if (results.involvesSequence (this.getSequenceAt (i))) {
+return i;
+}i++;
+}
+return -1;
+}, "jalview.datamodel.SearchResults");
+Clazz.overrideMethod (c$, "getHeight",
+function () {
+return this.sequences.size ();
+});
+Clazz.overrideMethod (c$, "getWidth",
+function () {
+var maxLength = -1;
+for (var i = 0; i < this.sequences.size (); i++) {
+if (this.getSequenceAt (i).getLength () > maxLength) {
+maxLength = this.getSequenceAt (i).getLength ();
+}}
+return maxLength;
+});
+Clazz.overrideMethod (c$, "setGapCharacter",
+function (gc) {
+this.gapCharacter = gc;
+{
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+seq.setSequence (seq.getSequenceAsString ().$replace ('.', gc).$replace ('-', gc).$replace (' ', gc));
+}
+}}, "~S");
+Clazz.defineMethod (c$, "getGapCharacter",
+function () {
+return this.gapCharacter;
+});
+Clazz.defineMethod (c$, "isAligned",
+function () {
+return this.isAligned (false);
+});
+Clazz.defineMethod (c$, "isAligned",
+function (includeHidden) {
+var width = this.getWidth ();
+if (this.hiddenSequences == null || this.hiddenSequences.getSize () == 0) {
+includeHidden = true;
+}for (var i = 0; i < this.sequences.size (); i++) {
+if (includeHidden || !this.hiddenSequences.isHidden (this.getSequenceAt (i))) {
+if (this.getSequenceAt (i).getLength () != width) {
+return false;
+}}}
+return true;
+}, "~B");
+Clazz.overrideMethod (c$, "deleteAllAnnotations",
+function (includingAutoCalculated) {
+var result = false;
+for (var alan, $alan = 0, $$alan = this.getAlignmentAnnotation (); $alan < $$alan.length && ((alan = $$alan[$alan]) || true); $alan++) {
+if (!alan.autoCalculated || includingAutoCalculated) {
+this.deleteAnnotation (alan);
+result = true;
+}}
+return result;
+}, "~B");
+Clazz.defineMethod (c$, "deleteAnnotation",
+function (aa) {
+return this.deleteAnnotation (aa, true);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "deleteAnnotation",
+function (aa, unhook) {
+var aSize = 1;
+if (this.annotations != null) {
+aSize = this.annotations.length;
+}if (aSize < 1) {
+return false;
+}var temp = new Array (aSize - 1);
+var swap = false;
+var tIndex = 0;
+for (var i = 0; i < aSize; i++) {
+if (this.annotations[i] === aa) {
+swap = true;
+continue;
+}if (tIndex < temp.length) {
+temp[tIndex++] = this.annotations[i];
+}}
+if (swap) {
+this.annotations = temp;
+if (unhook) {
+this.unhookAnnotation (aa);
+}}return swap;
+}, "jalview.datamodel.AlignmentAnnotation,~B");
+Clazz.defineMethod (c$, "unhookAnnotation",
+($fz = function (aa) {
+if (aa.sequenceRef != null) {
+aa.sequenceRef.removeAlignmentAnnotation (aa);
+}if (aa.groupRef != null) {
+aa.groupRef = null;
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "addAnnotation",
+function (aa) {
+this.addAnnotation (aa, -1);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "addAnnotation",
+function (aa, pos) {
+if (aa.getRNAStruc () != null) {
+this.$hasRNAStructure = true;
+}var aSize = 1;
+if (this.annotations != null) {
+aSize = this.annotations.length + 1;
+}var temp = new Array (aSize);
+var i = 0;
+if (pos == -1 || pos >= aSize) {
+temp[aSize - 1] = aa;
+} else {
+temp[pos] = aa;
+}if (aSize > 1) {
+var p = 0;
+for (i = 0; i < (aSize - 1); i++, p++) {
+if (p == pos) {
+p++;
+}if (p < temp.length) {
+temp[p] = this.annotations[i];
+}}
+}this.annotations = temp;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz.overrideMethod (c$, "setAnnotationIndex",
+function (aa, index) {
+if (aa == null || this.annotations == null || this.annotations.length - 1 < index) {
+return;
+}var aSize = this.annotations.length;
+var temp = new Array (aSize);
+temp[index] = aa;
+for (var i = 0; i < aSize; i++) {
+if (i == index) {
+continue;
+}if (i < index) {
+temp[i] = this.annotations[i];
+} else {
+temp[i] = this.annotations[i - 1];
+}}
+this.annotations = temp;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz.defineMethod (c$, "getAlignmentAnnotation",
+function () {
+return this.annotations;
+});
+Clazz.overrideMethod (c$, "setNucleotide",
+function (b) {
+if (b) {
+this.type = 1;
+} else {
+this.type = 0;
+}}, "~B");
+Clazz.defineMethod (c$, "isNucleotide",
+function () {
+if (this.type == 1) {
+return true;
+} else {
+return false;
+}});
+Clazz.overrideMethod (c$, "hasRNAStructure",
+function () {
+return this.$hasRNAStructure;
+});
+Clazz.overrideMethod (c$, "setDataset",
+function (data) {
+if (this.dataset == null && data == null) {
+var seqs = new Array (this.getHeight ());
+var currentSeq;
+for (var i = 0; i < this.getHeight (); i++) {
+currentSeq = this.getSequenceAt (i);
+if (currentSeq.getDatasetSequence () != null) {
+seqs[i] = currentSeq.getDatasetSequence ();
+} else {
+seqs[i] = currentSeq.createDatasetSequence ();
+}}
+this.dataset = new jalview.datamodel.Alignment (seqs);
+} else if (this.dataset == null && data != null) {
+this.dataset = data;
+for (var i = 0; i < this.getHeight (); i++) {
+var currentSeq = this.getSequenceAt (i);
+var dsq = currentSeq.getDatasetSequence ();
+if (dsq == null) {
+dsq = currentSeq.createDatasetSequence ();
+this.dataset.addSequence (dsq);
+} else {
+while (dsq.getDatasetSequence () != null) {
+dsq = dsq.getDatasetSequence ();
+}
+if (this.dataset.findIndex (dsq) == -1) {
+this.dataset.addSequence (dsq);
+}}}
+}this.dataset.addAlignmentRef ();
+}, "jalview.datamodel.Alignment");
+Clazz.defineMethod (c$, "addAlignmentRef",
+($fz = function () {
+this.alignmentRefs++;
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "getDataset",
+function () {
+return this.dataset;
+});
+Clazz.overrideMethod (c$, "padGaps",
+function () {
+var modified = false;
+var maxLength = -1;
+var current;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+for (var j = current.getLength (); j > maxLength; j--) {
+if (j > maxLength && !jalview.util.Comparison.isGap (current.getCharAt (j))) {
+maxLength = j;
+break;
+}}
+}
+maxLength++;
+var cLength;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+cLength = current.getLength ();
+if (cLength < maxLength) {
+current.insertCharAt (cLength, maxLength - cLength, this.gapCharacter);
+modified = true;
+} else if (current.getLength () > maxLength) {
+current.deleteChars (maxLength, current.getLength ());
+}}
+return modified;
+});
+Clazz.overrideMethod (c$, "justify",
+function (right) {
+var modified = false;
+var maxLength = -1;
+var ends = Clazz.newIntArray (this.sequences.size () * 2, 0);
+var current;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+ends[i * 2] = current.findIndex (current.getStart ());
+ends[i * 2 + 1] = current.findIndex (current.getStart () + current.getLength ());
+var hitres = false;
+for (var j = 0, rs = 0, ssiz = current.getLength (); j < ssiz; j++) {
+if (!jalview.util.Comparison.isGap (current.getCharAt (j))) {
+if (!hitres) {
+ends[i * 2] = j;
+hitres = true;
+} else {
+ends[i * 2 + 1] = j;
+if (j - ends[i * 2] > maxLength) {
+maxLength = j - ends[i * 2];
+}}}}
+}
+maxLength++;
+var cLength;
+var extent;
+var diff;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+cLength = 1 + ends[i * 2 + 1] - ends[i * 2];
+diff = maxLength - cLength;
+extent = current.getLength ();
+if (right) {
+if (extent > ends[i * 2 + 1]) {
+current.deleteChars (ends[i * 2 + 1] + 1, extent);
+modified = true;
+}if (ends[i * 2] > diff) {
+current.deleteChars (0, ends[i * 2] - diff);
+modified = true;
+} else {
+if (ends[i * 2] < diff) {
+current.insertCharAt (0, diff - ends[i * 2], this.gapCharacter);
+modified = true;
+}}} else {
+if (ends[i * 2] > 0) {
+current.deleteChars (0, ends[i * 2]);
+modified = true;
+ends[i * 2 + 1] -= ends[i * 2];
+extent -= ends[i * 2];
+}if (extent > maxLength) {
+current.deleteChars (maxLength + 1, extent);
+modified = true;
+} else {
+if (extent < maxLength) {
+current.insertCharAt (extent, maxLength - extent, this.gapCharacter);
+modified = true;
+}}}}
+return modified;
+}, "~B");
+Clazz.defineMethod (c$, "getHiddenSequences",
+function () {
+return this.hiddenSequences;
+});
+Clazz.overrideMethod (c$, "getCompactAlignment",
+function () {
+{
+var alseqs = new Array (this.sequences.size ());
+var i = 0;
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+alseqs[i++] = new jalview.datamodel.SeqCigar (seq);
+}
+var cal = new jalview.datamodel.CigarArray (alseqs);
+cal.addOperation ('M', this.getWidth ());
+return cal;
+}});
+Clazz.overrideMethod (c$, "setProperty",
+function (key, value) {
+if (this.alignmentProperties == null) {
+this.alignmentProperties = new java.util.Hashtable ();
+}this.alignmentProperties.put (key, value);
+}, "~O,~O");
+Clazz.defineMethod (c$, "getProperty",
+function (key) {
+if (this.alignmentProperties != null) {
+return this.alignmentProperties.get (key);
+} else {
+return null;
+}}, "~O");
+Clazz.defineMethod (c$, "getProperties",
+function () {
+return this.alignmentProperties;
+});
+Clazz.overrideMethod (c$, "addCodonFrame",
+function (codons) {
+if (codons != null) {
+this.codonFrameList.add (codons);
+}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz.overrideMethod (c$, "getCodonFrame",
+function (seq) {
+if (seq == null) {
+return null;
+}var cframes = new java.util.ArrayList ();
+for (var acf, $acf = this.codonFrameList.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+if (acf.involvesSequence (seq)) {
+cframes.add (acf);
+}}
+return cframes;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "setCodonFrames",
+function (acfs) {
+this.codonFrameList = acfs;
+}, "java.util.Set");
+Clazz.defineMethod (c$, "getCodonFrames",
+function () {
+return this.codonFrameList;
+});
+Clazz.overrideMethod (c$, "removeCodonFrame",
+function (codons) {
+if (codons == null || this.codonFrameList == null) {
+return false;
+}return this.codonFrameList.remove (codons);
+}, "jalview.datamodel.AlignedCodonFrame");
+Clazz.overrideMethod (c$, "append",
+function (toappend) {
+if (toappend === this) {
+System.err.println ("Self append may cause a deadlock.");
+}var samegap = toappend.getGapCharacter () == this.getGapCharacter ();
+var oldc = toappend.getGapCharacter ();
+var hashidden = toappend.getHiddenSequences () != null && toappend.getHiddenSequences ().hiddenSequences != null;
+var sqs = (hashidden) ? toappend.getHiddenSequences ().getFullAlignment ().getSequences () : toappend.getSequences ();
+if (sqs != null) {
+{
+for (var addedsq, $addedsq = sqs.iterator (); $addedsq.hasNext () && ((addedsq = $addedsq.next ()) || true);) {
+if (!samegap) {
+var oldseq = addedsq.getSequence ();
+for (var c = 0; c < oldseq.length; c++) {
+if (oldseq[c] == oldc) {
+oldseq[c] = this.gapCharacter;
+}}
+}this.addSequence (addedsq);
+}
+}}var alan = toappend.getAlignmentAnnotation ();
+for (var a = 0; alan != null && a < alan.length; a++) {
+this.addAnnotation (alan[a]);
+}
+this.codonFrameList.addAll (toappend.getCodonFrames ());
+var sg = toappend.getGroups ();
+if (sg != null) {
+for (var _sg, $_sg = sg.iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {
+this.addGroup (_sg);
+}
+}if (toappend.getHiddenSequences () != null) {
+var hs = toappend.getHiddenSequences ();
+if (this.hiddenSequences == null) {
+this.hiddenSequences = new jalview.datamodel.HiddenSequences (this);
+}if (hs.hiddenSequences != null) {
+for (var s = 0; s < hs.hiddenSequences.length; s++) {
+if (hs.hiddenSequences[s] != null) {
+this.hiddenSequences.hideSequence (hs.hiddenSequences[s]);
+}}
+}}if (toappend.getProperties () != null) {
+var key = toappend.getProperties ().keys ();
+while (key.hasMoreElements ()) {
+var k = key.nextElement ();
+var ourval = this.getProperty (k);
+var toapprop = toappend.getProperty (k);
+if (ourval != null) {
+if (ourval.getClass ().equals (toapprop.getClass ()) && !ourval.equals (toapprop)) {
+if (Clazz.instanceOf (ourval, String)) {
+this.setProperty (k, (ourval) + "; " + (toapprop));
+} else {
+if (Clazz.instanceOf (ourval, java.util.Vector)) {
+var theirv = (toapprop).elements ();
+while (theirv.hasMoreElements ()) {
+(ourval).addElement (theirv);
+}
+}}}} else {
+this.setProperty (k, toapprop);
+}}
+}}, "jalview.datamodel.AlignmentI");
+Clazz.overrideMethod (c$, "findOrCreateAnnotation",
+function (name, calcId, autoCalc, seqRef, groupRef) {
+if (this.annotations != null) {
+for (var annot, $annot = 0, $$annot = this.getAlignmentAnnotation (); $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {
+if (annot.autoCalculated == autoCalc && (name.equals (annot.label)) && (calcId == null || annot.getCalcId ().equals (calcId)) && annot.sequenceRef === seqRef && annot.groupRef === groupRef) {
+return annot;
+}}
+}var annot = new jalview.datamodel.AlignmentAnnotation (name, name, new Array (1), 0, 0, 1);
+annot.hasText = false;
+annot.setCalcId ( String.instantialize (calcId));
+annot.autoCalculated = autoCalc;
+if (seqRef != null) {
+annot.setSequenceRef (seqRef);
+}annot.groupRef = groupRef;
+this.addAnnotation (annot);
+return annot;
+}, "~S,~S,~B,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz.overrideMethod (c$, "findAnnotation",
+function (calcId) {
+var aa = new java.util.ArrayList ();
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId || (a.getCalcId () != null && calcId != null && a.getCalcId ().equals (calcId))) {
+aa.add (a);
+}}
+return aa;
+}, "~S");
+Clazz.overrideMethod (c$, "findAnnotations",
+function (seq, calcId, label) {
+var aa = new java.util.ArrayList ();
+for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
+aa.add (ann);
+}}
+return aa;
+}, "jalview.datamodel.SequenceI,~S,~S");
+Clazz.overrideMethod (c$, "moveSelectedSequencesByOne",
+function (sg, map, up) {
+{
+if (up) {
+for (var i = 1, iSize = this.sequences.size (); i < iSize; i++) {
+var seq = this.sequences.get (i);
+if (!sg.getSequences (map).contains (seq)) {
+continue;
+}var temp = this.sequences.get (i - 1);
+if (sg.getSequences (null).contains (temp)) {
+continue;
+}this.sequences.set (i, temp);
+this.sequences.set (i - 1, seq);
+}
+} else {
+for (var i = this.sequences.size () - 2; i > -1; i--) {
+var seq = this.sequences.get (i);
+if (!sg.getSequences (map).contains (seq)) {
+continue;
+}var temp = this.sequences.get (i + 1);
+if (sg.getSequences (map).contains (temp)) {
+continue;
+}this.sequences.set (i, temp);
+this.sequences.set (i + 1, seq);
+}
+}}}, "jalview.datamodel.SequenceGroup,java.util.Map,~B");
+Clazz.overrideMethod (c$, "validateAnnotation",
+function (alignmentAnnotation) {
+alignmentAnnotation.validateRangeAndDisplay ();
+if (this.isNucleotide () && alignmentAnnotation.isValidStruc ()) {
+this.$hasRNAStructure = true;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "getSeqrep",
+function () {
+return this.seqrep;
+});
+Clazz.overrideMethod (c$, "setSeqrep",
+function (seqrep) {
+this.seqrep = seqrep;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "hasSeqrep",
+function () {
+return this.seqrep != null;
+});
+Clazz.overrideMethod (c$, "getEndRes",
+function () {
+return this.getWidth () - 1;
+});
+Clazz.overrideMethod (c$, "getStartRes",
+function () {
+return 0;
+});
+Clazz.overrideMethod (c$, "getContext",
+function () {
+return this.dataset;
+});
+Clazz.defineMethod (c$, "alignAs",
+function (al) {
+return this.alignAs (al, false, true);
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "alignAs",
+function (al, preserveMappedGaps, preserveUnmappedGaps) {
+var count = 0;
+var thisIsNucleotide = this.isNucleotide ();
+var thatIsProtein = !al.isNucleotide ();
+if (!thatIsProtein && !thisIsNucleotide) {
+return jalview.analysis.AlignmentUtils.alignProteinAsDna (this, al);
+}var thisGapChar = this.getGapCharacter ();
+var gap = thisIsNucleotide && thatIsProtein ? String.valueOf ( Clazz.newCharArray (-1, [thisGapChar, thisGapChar, thisGapChar])) : String.valueOf (thisGapChar);
+for (var alignTo, $alignTo = this.getSequences ().iterator (); $alignTo.hasNext () && ((alignTo = $alignTo.next ()) || true);) {
+count += jalview.analysis.AlignmentUtils.alignSequenceAs (alignTo, al, gap, preserveMappedGaps, preserveUnmappedGaps) ? 1 : 0;
+}
+return count;
+}, "jalview.datamodel.AlignmentI,~B,~B");
+Clazz.overrideMethod (c$, "getSequenceNames",
+function () {
+var names = new java.util.HashSet ();
+for (var seq, $seq = this.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+names.add (seq.getName ());
+}
+return names;
+});
+Clazz.overrideMethod (c$, "toString",
+function () {
+var seq = this.getSequencesArray ();
+{
+return "" + JSON.stringify(seq);
+}});
+Clazz.defineStatics (c$,
+"PROTEIN", 0,
+"NUCLEOTIDE", 1);
+});
diff --git a/bin/jalview/datamodel/AlignmentAnnotation.class b/bin/jalview/datamodel/AlignmentAnnotation.class
index 840fdf1fd89061ed2917d106deca03141f04fb7f..88e30dbda799a85e7011292bcb43cd2825a413cc 100644
GIT binary patch
delta 117
zcmeC1#yD{roXe
zXJBP#U}R)xc*n@dz`!HR^PBOYungyKMlq(%eOi%1j4hjA*yJ#Zi!*RbI{*#gWdxBK
njJ!V?SeUq&HfP!yvNEb}p6$Gwkt36VOH9Urk!f>`>sD3(5qKjz
diff --git a/bin/jalview/datamodel/AlignmentAnnotation.js b/bin/jalview/datamodel/AlignmentAnnotation.js
index 0be7f1c..e321a8d 100644
--- a/bin/jalview/datamodel/AlignmentAnnotation.js
+++ b/bin/jalview/datamodel/AlignmentAnnotation.js
@@ -1,623 +1,623 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.util.HashMap"], "jalview.datamodel.AlignmentAnnotation", ["jalview.analysis.Rna", "jalview.datamodel.Annotation", "$.GraphLine", "jalview.schemes.ResidueProperties", "java.lang.Double", "$.Error", "$.Long", "$.StringBuffer", "$.StringBuilder", "java.util.Collections"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.autoCalculated = false;
-this.annotationId = null;
-this.sequenceRef = null;
-this.label = null;
-this.description = null;
-this.annotations = null;
-this.bps = null;
-this._rnasecstr = null;
-this.invalidrnastruc = -2;
-this.sequenceMapping = null;
-this.graphMin = 0;
-this.graphMax = 0;
-this.score = NaN;
-this.$hasScore = false;
-this.threshold = null;
-this.editable = false;
-this.hasIcons = false;
-this.hasText = false;
-this.visible = true;
-this.graphGroup = -1;
-this.height = 0;
-this.graph = 0;
-this.graphHeight = 40;
-this.padGaps = false;
-this.belowAlignment = true;
-this.groupRef = null;
-this.showAllColLabels = false;
-this.scaleColLabel = false;
-this.centreColLabels = false;
-this.isrna = false;
-if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentAnnotation.AnnotCharSequence")) {
-jalview.datamodel.AlignmentAnnotation.$AlignmentAnnotation$AnnotCharSequence$ ();
-}
-this._lastrnaannot = -1;
-this.calcId = "";
-this.properties = null;
-this._linecolour = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "AlignmentAnnotation");
-Clazz.prepareFields (c$, function () {
-this.properties = new java.util.HashMap ();
-});
-Clazz.defineMethod (c$, "_updateRnaSecStr",
-($fz = function (RNAannot) {
-try {
-this._rnasecstr = jalview.analysis.Rna.GetBasePairs (RNAannot);
-this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
-this.invalidrnastruc = -1;
-} catch (px) {
-if (Clazz.exceptionOf (px, jalview.analysis.WUSSParseException)) {
-this.invalidrnastruc = px.getProblemPos ();
-} else {
-throw px;
-}
-}
-if (this.invalidrnastruc > -1) {
-return;
-}jalview.analysis.Rna.HelixMap (this._rnasecstr);
-if (this._rnasecstr != null && this._rnasecstr.length > 0) {
-this.isrna = true;
-this.showAllColLabels = true;
-this.scaleColLabel = true;
-this._markRnaHelices ();
-}}, $fz.isPrivate = true, $fz), "CharSequence");
-Clazz.defineMethod (c$, "_markRnaHelices",
-($fz = function () {
-var mxval = 0;
-for (var x = 0; x < this._rnasecstr.length; x++) {
-var val = 0;
-try {
-val = (Integer.$valueOf (this._rnasecstr[x].getFeatureGroup ())).intValue ();
-if (mxval < val) {
-mxval = val;
-}} catch (q) {
-if (Clazz.exceptionOf (q, NumberFormatException)) {
-} else {
-throw q;
-}
-}
-;this.annotations[this._rnasecstr[x].getBegin ()].value = val;
-this.annotations[this._rnasecstr[x].getEnd ()].value = val;
-}
-this.setScore (mxval);
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "finalize",
-function () {
-this.sequenceRef = null;
-this.groupRef = null;
-Clazz.superCall (this, jalview.datamodel.AlignmentAnnotation, "finalize", []);
-});
-c$.getGraphValueFromString = Clazz.defineMethod (c$, "getGraphValueFromString",
-function (string) {
-if (string.equalsIgnoreCase ("BAR_GRAPH")) {
-return 1;
-} else if (string.equalsIgnoreCase ("LINE_GRAPH")) {
-return 2;
-} else {
-return 0;
-}}, "~S");
-Clazz.defineMethod (c$, "ConcenStru",
-function (RNAannot) {
-this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
-}, "CharSequence");
-Clazz.makeConstructor (c$,
-function (label, description, annotations) {
-this.setAnnotationId ();
-this.editable = true;
-this.label = label;
-this.description = description;
-this.annotations = annotations;
-this.validateRangeAndDisplay ();
-}, "~S,~S,~A");
-Clazz.defineMethod (c$, "areLabelsSecondaryStructure",
-function () {
-var nonSSLabel = false;
-this.isrna = false;
-var rnastring = new StringBuffer ();
-var firstChar = String.fromCharCode (0);
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] == null) {
-continue;
-}if (this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'E') {
-this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
-} else {
-if (this.annotations[i].secondaryStructure == '(' || this.annotations[i].secondaryStructure == '[' || this.annotations[i].secondaryStructure == '<' || this.annotations[i].secondaryStructure == '{' || this.annotations[i].secondaryStructure == 'A' || this.annotations[i].secondaryStructure == 'B' || this.annotations[i].secondaryStructure == 'C' || this.annotations[i].secondaryStructure == 'D' || this.annotations[i].secondaryStructure == 'E' || this.annotations[i].secondaryStructure == 'F' || this.annotations[i].secondaryStructure == 'G' || this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'I' || this.annotations[i].secondaryStructure == 'J' || this.annotations[i].secondaryStructure == 'K' || this.annotations[i].secondaryStructure == 'L' || this.annotations[i].secondaryStructure == 'M' || this.annotations[i].secondaryStructure == 'N' || this.annotations[i].secondaryStructure == 'O' || this.annotations[i].secondaryStructure == 'P' || this.annotations[i].secondaryStructure == 'Q' || this.annotations[i].secondaryStructure == 'R' || this.annotations[i].secondaryStructure == 'S' || this.annotations[i].secondaryStructure == 'T' || this.annotations[i].secondaryStructure == 'U' || this.annotations[i].secondaryStructure == 'V' || this.annotations[i].secondaryStructure == 'W' || this.annotations[i].secondaryStructure == 'X' || this.annotations[i].secondaryStructure == 'Y' || this.annotations[i].secondaryStructure == 'Z') {
-this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
-this.isrna = new Boolean (this.isrna | true).valueOf ();
-}}if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.length == 0) {
-rnastring.append ('.');
-continue;
-}if (this.annotations[i].displayCharacter.length == 1) {
-firstChar = this.annotations[i].displayCharacter.charAt (0);
-if (this.annotations[i].secondaryStructure != ' ' && !this.hasIcons && firstChar != ' ' && firstChar != '$' && firstChar.charCodeAt (0) != 0xCE && firstChar != '(' && firstChar != '[' && firstChar != '>' && firstChar != '{' && firstChar != 'A' && firstChar != 'B' && firstChar != 'C' && firstChar != 'D' && firstChar != 'E' && firstChar != 'F' && firstChar != 'G' && firstChar != 'H' && firstChar != 'I' && firstChar != 'J' && firstChar != 'K' && firstChar != 'L' && firstChar != 'M' && firstChar != 'N' && firstChar != 'O' && firstChar != 'P' && firstChar != 'Q' && firstChar != 'R' && firstChar != 'S' && firstChar != 'T' && firstChar != 'U' && firstChar != 'V' && firstChar != 'W' && firstChar != 'X' && firstChar != 'Y' && firstChar != 'Z' && firstChar != '-' && firstChar.charCodeAt (0) < jalview.schemes.ResidueProperties.aaIndex.length) {
-if (jalview.schemes.ResidueProperties.aaIndex[firstChar.charCodeAt (0)] < 23) {
-nonSSLabel = true;
-}}} else {
-rnastring.append (this.annotations[i].displayCharacter.charAt (1));
-}if (this.annotations[i].displayCharacter.length > 0) {
-this.hasText = true;
-}}
-if (nonSSLabel) {
-this.hasIcons = false;
-for (var j = 0; j < this.annotations.length; j++) {
-if (this.annotations[j] != null && this.annotations[j].secondaryStructure != ' ') {
-this.annotations[j].displayCharacter = String.valueOf (this.annotations[j].secondaryStructure);
-this.annotations[j].secondaryStructure = ' ';
-}}
-} else {
-if (this.isrna) {
-this._updateRnaSecStr (Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null));
-}}});
-Clazz.defineMethod (c$, "getRNAStruc",
-function () {
-if (this.isrna) {
-var rnastruc = Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null).toString ();
-if (this._lastrnaannot != rnastruc.hashCode ()) {
-this._lastrnaannot = rnastruc.hashCode ();
-this._updateRnaSecStr (rnastruc);
-}return rnastruc;
-}return null;
-});
-Clazz.makeConstructor (c$,
-function (label, description, annotations, min, max, graphType) {
-this.setAnnotationId ();
-this.editable = graphType == 0;
-this.label = label;
-this.description = description;
-this.annotations = annotations;
-this.graph = graphType;
-this.graphMin = min;
-this.graphMax = max;
-this.validateRangeAndDisplay ();
-}, "~S,~S,~A,~N,~N,~N");
-Clazz.defineMethod (c$, "validateRangeAndDisplay",
-function () {
-if (this.annotations == null) {
-this.visible = false;
-return;
-}var graphType = this.graph;
-var min = this.graphMin;
-var max = this.graphMax;
-var drawValues = true;
-this._linecolour = null;
-if (min == max) {
-min = 999999999;
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] == null) {
-continue;
-}if (drawValues && this.annotations[i].displayCharacter != null && this.annotations[i].displayCharacter.length > 1) {
-drawValues = false;
-}if (this.annotations[i].value > max) {
-max = this.annotations[i].value;
-}if (this.annotations[i].value < min) {
-min = this.annotations[i].value;
-}if (this._linecolour == null && this.annotations[i].colour != null) {
-this._linecolour = this.annotations[i].colour;
-}}
-if (min > 0) {
-min = 0;
-} else {
-if (max < 0) {
-max = 0;
-}}}this.graphMin = min;
-this.graphMax = max;
-this.areLabelsSecondaryStructure ();
-if (!drawValues && graphType != 0) {
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] != null) {
-this.annotations[i].displayCharacter = "";
-}}
-}});
-Clazz.makeConstructor (c$,
-function (annotation) {
-this.setAnnotationId ();
-this.label = String.instantialize (annotation.label);
-if (annotation.description != null) {
-this.description = String.instantialize (annotation.description);
-}this.graphMin = annotation.graphMin;
-this.graphMax = annotation.graphMax;
-this.graph = annotation.graph;
-this.graphHeight = annotation.graphHeight;
-this.graphGroup = annotation.graphGroup;
-this.groupRef = annotation.groupRef;
-this.editable = annotation.editable;
-this.autoCalculated = annotation.autoCalculated;
-this.hasIcons = annotation.hasIcons;
-this.hasText = annotation.hasText;
-this.height = annotation.height;
-this.label = annotation.label;
-this.padGaps = annotation.padGaps;
-this.visible = annotation.visible;
-this.centreColLabels = annotation.centreColLabels;
-this.scaleColLabel = annotation.scaleColLabel;
-this.showAllColLabels = annotation.showAllColLabels;
-this.calcId = annotation.calcId;
-if (annotation.properties != null) {
-this.properties = new java.util.HashMap ();
-for (var val, $val = annotation.properties.entrySet ().iterator (); $val.hasNext () && ((val = $val.next ()) || true);) {
-this.properties.put (val.getKey (), val.getValue ());
-}
-}if (this.$hasScore = annotation.$hasScore) {
-this.score = annotation.score;
-}if (annotation.threshold != null) {
-this.threshold = new jalview.datamodel.GraphLine (annotation.threshold);
-}var ann = annotation.annotations;
-if (annotation.annotations != null) {
-this.annotations = new Array (ann.length);
-for (var i = 0; i < ann.length; i++) {
-if (ann[i] != null) {
-this.annotations[i] = new jalview.datamodel.Annotation (ann[i]);
-if (this._linecolour != null) {
-this._linecolour = this.annotations[i].colour;
-}}}
-}if (annotation.sequenceRef != null) {
-this.sequenceRef = annotation.sequenceRef;
-if (annotation.sequenceMapping != null) {
-var p = null;
-this.sequenceMapping = new java.util.HashMap ();
-var pos = annotation.sequenceMapping.keySet ().iterator ();
-while (pos.hasNext ()) {
-p = pos.next ();
-var a = annotation.sequenceMapping.get (p);
-if (a == null) {
-continue;
-}if (ann != null) {
-for (var i = 0; i < ann.length; i++) {
-if (ann[i] === a) {
-this.sequenceMapping.put (p, this.annotations[i]);
-}}
-}}
-} else {
-this.sequenceMapping = null;
-}}{
-}this.validateRangeAndDisplay ();
-}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "restrict",
-function (startRes, endRes) {
-if (this.annotations == null) {
-return;
-}if (startRes < 0) {
-startRes = 0;
-}if (startRes >= this.annotations.length) {
-startRes = this.annotations.length - 1;
-}if (endRes >= this.annotations.length) {
-endRes = this.annotations.length - 1;
-}if (this.annotations == null) {
-return;
-}var temp = new Array (endRes - startRes + 1);
-if (startRes < this.annotations.length) {
-System.arraycopy (this.annotations, startRes, temp, 0, endRes - startRes + 1);
-}if (this.sequenceRef != null) {
-var spos = this.sequenceRef.findPosition (startRes);
-var epos = this.sequenceRef.findPosition (endRes);
-if (this.sequenceMapping != null) {
-var newmapping = new java.util.HashMap ();
-var e = this.sequenceMapping.keySet ().iterator ();
-while (e.hasNext ()) {
-var pos = e.next ();
-if (pos.intValue () >= spos && pos.intValue () <= epos) {
-newmapping.put (pos, this.sequenceMapping.get (pos));
-}}
-this.sequenceMapping.clear ();
-this.sequenceMapping = newmapping;
-}}this.annotations = temp;
-}, "~N,~N");
-Clazz.defineMethod (c$, "padAnnotation",
-function (length) {
-if (this.annotations == null) {
-return true;
-}if (this.annotations.length < length) {
-var na = new Array (length);
-System.arraycopy (this.annotations, 0, na, 0, this.annotations.length);
-this.annotations = na;
-return true;
-}return this.annotations.length > length;
-}, "~N");
-Clazz.overrideMethod (c$, "toString",
-function () {
-var buffer = new StringBuilder (256);
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] != null) {
-if (this.graph != 0) {
-buffer.append (this.annotations[i].value);
-} else if (this.hasIcons) {
-buffer.append (this.annotations[i].secondaryStructure);
-} else {
-buffer.append (this.annotations[i].displayCharacter);
-}}buffer.append (", ");
-}
-if (this.label.indexOf ("Consensus") == 0) {
-buffer.append ("\n");
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] != null) {
-buffer.append (this.annotations[i].description);
-}buffer.append (", ");
-}
-}return buffer.toString ();
-});
-Clazz.defineMethod (c$, "setThreshold",
-function (line) {
-this.threshold = line;
-}, "jalview.datamodel.GraphLine");
-Clazz.defineMethod (c$, "getThreshold",
-function () {
-return this.threshold;
-});
-Clazz.defineMethod (c$, "createSequenceMapping",
-function (seqRef, startRes, alreadyMapped) {
-if (seqRef == null) {
-return;
-}this.sequenceRef = seqRef;
-if (this.annotations == null) {
-return;
-}this.sequenceMapping = new java.util.HashMap ();
-var seqPos;
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] != null) {
-if (alreadyMapped) {
-seqPos = seqRef.findPosition (i);
-} else {
-seqPos = i + startRes;
-}this.sequenceMapping.put ( new Integer (seqPos), this.annotations[i]);
-}}
-}, "jalview.datamodel.SequenceI,~N,~B");
-Clazz.defineMethod (c$, "adjustForAlignment",
-function () {
-if (this.sequenceRef == null) {
-return;
-}if (this.annotations == null) {
-return;
-}var a = 0;
-var aSize = this.sequenceRef.getLength ();
-if (aSize == 0) {
-return;
-}var position;
-var temp = new Array (aSize);
-var index;
-for (a = this.sequenceRef.getStart (); a <= this.sequenceRef.getEnd (); a++) {
-index = new Integer (a);
-if (this.sequenceMapping.containsKey (index)) {
-position = this.sequenceRef.findIndex (a) - 1;
-temp[position] = this.sequenceMapping.get (index);
-}}
-this.annotations = temp;
-});
-Clazz.defineMethod (c$, "compactAnnotationArray",
-function () {
-var i = 0;
-var iSize = this.annotations.length;
-while (i < iSize) {
-if (this.annotations[i] == null) {
-if (i + 1 < iSize) {
-System.arraycopy (this.annotations, i + 1, this.annotations, i, iSize - i - 1);
-}iSize--;
-} else {
-i++;
-}}
-var ann = this.annotations;
-this.annotations = new Array (i);
-System.arraycopy (ann, 0, this.annotations, 0, i);
-ann = null;
-return iSize;
-});
-Clazz.defineMethod (c$, "setSequenceRef",
-function (sequenceI) {
-if (sequenceI != null) {
-if (this.sequenceRef != null) {
-var rIsDs = this.sequenceRef.getDatasetSequence () == null;
-var tIsDs = sequenceI.getDatasetSequence () == null;
-if (this.sequenceRef !== sequenceI && (rIsDs && !tIsDs && this.sequenceRef !== sequenceI.getDatasetSequence ()) && (!rIsDs && tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI) && (!rIsDs && !tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI.getDatasetSequence ()) && !this.sequenceRef.equals (sequenceI)) {
-this.sequenceRef = null;
-if (this.sequenceMapping != null) {
-this.sequenceMapping = null;
-}this.createSequenceMapping (sequenceI, 1, true);
-this.adjustForAlignment ();
-} else {
-this.sequenceRef = sequenceI;
-}} else {
-this.createSequenceMapping (sequenceI, 1, true);
-this.adjustForAlignment ();
-}} else {
-this.sequenceMapping = null;
-this.sequenceRef = null;
-}}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getScore",
-function () {
-return this.score;
-});
-Clazz.defineMethod (c$, "setScore",
-function (score) {
-this.$hasScore = true;
-this.score = score;
-}, "~N");
-Clazz.defineMethod (c$, "hasScore",
-function () {
-return this.$hasScore || !Double.isNaN (this.score);
-});
-Clazz.makeConstructor (c$,
-function (label, description, score) {
-this.construct (label, description, null);
-this.setScore (score);
-}, "~S,~S,~N");
-Clazz.makeConstructor (c$,
-function (alignmentAnnotation, colSel) {
-this.construct (alignmentAnnotation);
-if (this.annotations == null) {
-return;
-}colSel.makeVisibleAnnotation (this);
-}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.ColumnSelection");
-Clazz.defineMethod (c$, "setPadGaps",
-function (padgaps, gapchar) {
-this.padGaps = padgaps;
-if (padgaps) {
-this.hasText = true;
-for (var i = 0; i < this.annotations.length; i++) {
-if (this.annotations[i] == null) {
-this.annotations[i] = new jalview.datamodel.Annotation (String.valueOf (gapchar), null, ' ', 0, null);
-} else if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.equals (" ")) {
-this.annotations[i].displayCharacter = String.valueOf (gapchar);
-}}
-}}, "~B,~S");
-Clazz.defineMethod (c$, "getDescription",
-function (seqname) {
-if (seqname && this.sequenceRef != null) {
-var i = this.description.toLowerCase ().indexOf ("");
-if (i > -1) {
-return "" + this.sequenceRef.getName () + " : " + this.description.substring (i + 6);
-}return this.sequenceRef.getName () + " : " + this.description;
-}return this.description;
-}, "~B");
-Clazz.defineMethod (c$, "isValidStruc",
-function () {
-return this.invalidrnastruc == -1;
-});
-Clazz.defineMethod (c$, "getInvalidStrucPos",
-function () {
-return this.invalidrnastruc;
-});
-Clazz.defineMethod (c$, "getCalcId",
-function () {
-return this.calcId;
-});
-Clazz.defineMethod (c$, "setCalcId",
-function (calcId) {
-this.calcId = calcId;
-}, "~S");
-Clazz.defineMethod (c$, "isRNA",
-function () {
-return this.isrna;
-});
-Clazz.defineMethod (c$, "liftOver",
-function (sq, sp2sq) {
-if (sp2sq.getMappedWidth () != sp2sq.getWidth ()) {
-throw new Error ("liftOver currently not implemented for transfer of annotation between different types of seqeunce");
-}var mapIsTo = (sp2sq != null) ? (sp2sq.getTo () === sq || sp2sq.getTo () === sq.getDatasetSequence ()) : false;
-var mapForsq = new java.util.HashMap ();
-if (this.sequenceMapping != null) {
-if (sp2sq != null) {
-for (var ie, $ie = this.sequenceMapping.entrySet ().iterator (); $ie.hasNext () && ((ie = $ie.next ()) || true);) {
-var mpos = Integer.$valueOf (mapIsTo ? sp2sq.getMappedPosition ((ie.getKey ()).intValue ()) : sp2sq.getPosition ((ie.getKey ()).intValue ()));
-if ((mpos).intValue () >= sq.getStart () && (mpos).intValue () <= sq.getEnd ()) {
-mapForsq.put (mpos, ie.getValue ());
-}}
-this.sequenceMapping = mapForsq;
-this.sequenceRef = sq;
-this.adjustForAlignment ();
-} else {
-}}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
-Clazz.defineMethod (c$, "remap",
-function (newref, mapping, from, to, idxoffset) {
-if (mapping != null) {
-var old = this.sequenceMapping;
-var remap = new java.util.HashMap ();
-var index = -1;
-for (var mp, $mp = 0, $$mp = mapping; $mp < $$mp.length && ((mp = $$mp[$mp]) || true); $mp++) {
-if (index++ < 0) {
-continue;
-}var ann = null;
-if (from == -1) {
-ann = this.sequenceMapping.get (Integer.$valueOf (idxoffset + index));
-} else {
-if (mp != null && mp.length > from) {
-ann = this.sequenceMapping.get (Integer.$valueOf (mp[from]));
-}}if (ann != null) {
-if (to == -1) {
-remap.put (Integer.$valueOf (idxoffset + index), ann);
-} else {
-if (to > -1 && to < mp.length) {
-remap.put (Integer.$valueOf (mp[to]), ann);
-}}}}
-this.sequenceMapping = remap;
-old.clear ();
-if (newref != null) {
-this.sequenceRef = newref;
-}this.adjustForAlignment ();
-}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
-Clazz.defineMethod (c$, "getProperty",
-function (property) {
-if (this.properties == null) {
-return null;
-}return this.properties.get (property);
-}, "~S");
-Clazz.defineMethod (c$, "setProperty",
-function (property, value) {
-if (this.properties == null) {
-this.properties = new java.util.HashMap ();
-}this.properties.put (property, value);
-}, "~S,~S");
-Clazz.defineMethod (c$, "hasProperties",
-function () {
-return this.properties != null && this.properties.size () > 0;
-});
-Clazz.defineMethod (c$, "getProperties",
-function () {
-if (this.properties == null) {
-return java.util.Collections.emptyList ();
-}return this.properties.keySet ();
-});
-Clazz.defineMethod (c$, "getAnnotationForPosition",
-function (position) {
-return this.sequenceMapping == null ? null : this.sequenceMapping.get (new Integer (position));
-}, "~N");
-Clazz.defineMethod (c$, "setAnnotationId",
-function () {
-this.annotationId = "ann" + Long.toString (jalview.datamodel.AlignmentAnnotation.nextId ());
-});
-c$.nextId = Clazz.defineMethod (c$, "nextId",
-function () {
-return jalview.datamodel.AlignmentAnnotation.counter++;
-});
-c$.$AlignmentAnnotation$AnnotCharSequence$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.offset = 0;
-this.max = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel.AlignmentAnnotation, "AnnotCharSequence", null, CharSequence);
-Clazz.makeConstructor (c$,
-function () {
-this.construct (0, this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length);
-});
-Clazz.makeConstructor (c$,
-function (a, b) {
-this.offset = a;
-this.max = b;
-}, "~N,~N");
-Clazz.overrideMethod (c$, "subSequence",
-function (a, b) {
-return Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null, this.offset + a, this.offset + b);
-}, "~N,~N");
-Clazz.overrideMethod (c$, "length",
-function () {
-return this.max - this.offset;
-});
-Clazz.overrideMethod (c$, "charAt",
-function (a) {
-return ((a + this.offset < 0) || (a + this.offset) >= this.max || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset] == null || (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure <= ' ') ? ' ' : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.charAt (0));
-}, "~N");
-Clazz.overrideMethod (c$, "toString",
-function () {
-var a = Clazz.newCharArray (this.max - this.offset, '\0');
-var b = this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length;
-for (var c = this.offset; c < b; c++) {
-a[c] = (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c] == null || ((this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure).charCodeAt (0) <= 32)) ? ' ' : (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.charAt (0));
-}
-return String.instantialize (a);
-});
-c$ = Clazz.p0p ();
-};
-Clazz.defineStatics (c$,
-"ANNOTATION_ID_PREFIX", "ann",
-"SEQUENCE_PROFILE", 0,
-"STRUCTURE_PROFILE", 1,
-"CDNA_PROFILE", 2,
-"counter", 0,
-"NO_GRAPH", 0,
-"BAR_GRAPH", 1,
-"LINE_GRAPH", 2);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.HashMap"], "jalview.datamodel.AlignmentAnnotation", ["jalview.analysis.Rna", "jalview.datamodel.Annotation", "$.GraphLine", "jalview.schemes.ResidueProperties", "java.lang.Double", "$.Error", "$.Long", "$.StringBuffer", "$.StringBuilder", "java.util.Collections"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.autoCalculated = false;
+this.annotationId = null;
+this.sequenceRef = null;
+this.label = null;
+this.description = null;
+this.annotations = null;
+this.bps = null;
+this._rnasecstr = null;
+this.invalidrnastruc = -2;
+this.sequenceMapping = null;
+this.graphMin = 0;
+this.graphMax = 0;
+this.score = NaN;
+this.$hasScore = false;
+this.threshold = null;
+this.editable = false;
+this.hasIcons = false;
+this.hasText = false;
+this.visible = true;
+this.graphGroup = -1;
+this.height = 0;
+this.graph = 0;
+this.graphHeight = 40;
+this.padGaps = false;
+this.belowAlignment = true;
+this.groupRef = null;
+this.showAllColLabels = false;
+this.scaleColLabel = false;
+this.centreColLabels = false;
+this.isrna = false;
+if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentAnnotation.AnnotCharSequence")) {
+jalview.datamodel.AlignmentAnnotation.$AlignmentAnnotation$AnnotCharSequence$ ();
+}
+this._lastrnaannot = -1;
+this.calcId = "";
+this.properties = null;
+this._linecolour = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentAnnotation");
+Clazz.prepareFields (c$, function () {
+this.properties = new java.util.HashMap ();
+});
+Clazz.defineMethod (c$, "_updateRnaSecStr",
+($fz = function (RNAannot) {
+try {
+this._rnasecstr = jalview.analysis.Rna.GetBasePairs (RNAannot);
+this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
+this.invalidrnastruc = -1;
+} catch (px) {
+if (Clazz.exceptionOf (px, jalview.analysis.WUSSParseException)) {
+this.invalidrnastruc = px.getProblemPos ();
+} else {
+throw px;
+}
+}
+if (this.invalidrnastruc > -1) {
+return;
+}jalview.analysis.Rna.HelixMap (this._rnasecstr);
+if (this._rnasecstr != null && this._rnasecstr.length > 0) {
+this.isrna = true;
+this.showAllColLabels = true;
+this.scaleColLabel = true;
+this._markRnaHelices ();
+}}, $fz.isPrivate = true, $fz), "CharSequence");
+Clazz.defineMethod (c$, "_markRnaHelices",
+($fz = function () {
+var mxval = 0;
+for (var x = 0; x < this._rnasecstr.length; x++) {
+var val = 0;
+try {
+val = (Integer.$valueOf (this._rnasecstr[x].getFeatureGroup ())).intValue ();
+if (mxval < val) {
+mxval = val;
+}} catch (q) {
+if (Clazz.exceptionOf (q, NumberFormatException)) {
+} else {
+throw q;
+}
+}
+;this.annotations[this._rnasecstr[x].getBegin ()].value = val;
+this.annotations[this._rnasecstr[x].getEnd ()].value = val;
+}
+this.setScore (mxval);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "finalize",
+function () {
+this.sequenceRef = null;
+this.groupRef = null;
+Clazz.superCall (this, jalview.datamodel.AlignmentAnnotation, "finalize", []);
+});
+c$.getGraphValueFromString = Clazz.defineMethod (c$, "getGraphValueFromString",
+function (string) {
+if (string.equalsIgnoreCase ("BAR_GRAPH")) {
+return 1;
+} else if (string.equalsIgnoreCase ("LINE_GRAPH")) {
+return 2;
+} else {
+return 0;
+}}, "~S");
+Clazz.defineMethod (c$, "ConcenStru",
+function (RNAannot) {
+this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
+}, "CharSequence");
+Clazz.makeConstructor (c$,
+function (label, description, annotations) {
+this.setAnnotationId ();
+this.editable = true;
+this.label = label;
+this.description = description;
+this.annotations = annotations;
+this.validateRangeAndDisplay ();
+}, "~S,~S,~A");
+Clazz.defineMethod (c$, "areLabelsSecondaryStructure",
+function () {
+var nonSSLabel = false;
+this.isrna = false;
+var rnastring = new StringBuffer ();
+var firstChar = String.fromCharCode (0);
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+continue;
+}if (this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'E') {
+this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
+} else {
+if (this.annotations[i].secondaryStructure == '(' || this.annotations[i].secondaryStructure == '[' || this.annotations[i].secondaryStructure == '<' || this.annotations[i].secondaryStructure == '{' || this.annotations[i].secondaryStructure == 'A' || this.annotations[i].secondaryStructure == 'B' || this.annotations[i].secondaryStructure == 'C' || this.annotations[i].secondaryStructure == 'D' || this.annotations[i].secondaryStructure == 'E' || this.annotations[i].secondaryStructure == 'F' || this.annotations[i].secondaryStructure == 'G' || this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'I' || this.annotations[i].secondaryStructure == 'J' || this.annotations[i].secondaryStructure == 'K' || this.annotations[i].secondaryStructure == 'L' || this.annotations[i].secondaryStructure == 'M' || this.annotations[i].secondaryStructure == 'N' || this.annotations[i].secondaryStructure == 'O' || this.annotations[i].secondaryStructure == 'P' || this.annotations[i].secondaryStructure == 'Q' || this.annotations[i].secondaryStructure == 'R' || this.annotations[i].secondaryStructure == 'S' || this.annotations[i].secondaryStructure == 'T' || this.annotations[i].secondaryStructure == 'U' || this.annotations[i].secondaryStructure == 'V' || this.annotations[i].secondaryStructure == 'W' || this.annotations[i].secondaryStructure == 'X' || this.annotations[i].secondaryStructure == 'Y' || this.annotations[i].secondaryStructure == 'Z') {
+this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
+this.isrna = new Boolean (this.isrna | true).valueOf ();
+}}if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.length == 0) {
+rnastring.append ('.');
+continue;
+}if (this.annotations[i].displayCharacter.length == 1) {
+firstChar = this.annotations[i].displayCharacter.charAt (0);
+if (this.annotations[i].secondaryStructure != ' ' && !this.hasIcons && firstChar != ' ' && firstChar != '$' && firstChar.charCodeAt (0) != 0xCE && firstChar != '(' && firstChar != '[' && firstChar != '>' && firstChar != '{' && firstChar != 'A' && firstChar != 'B' && firstChar != 'C' && firstChar != 'D' && firstChar != 'E' && firstChar != 'F' && firstChar != 'G' && firstChar != 'H' && firstChar != 'I' && firstChar != 'J' && firstChar != 'K' && firstChar != 'L' && firstChar != 'M' && firstChar != 'N' && firstChar != 'O' && firstChar != 'P' && firstChar != 'Q' && firstChar != 'R' && firstChar != 'S' && firstChar != 'T' && firstChar != 'U' && firstChar != 'V' && firstChar != 'W' && firstChar != 'X' && firstChar != 'Y' && firstChar != 'Z' && firstChar != '-' && firstChar.charCodeAt (0) < jalview.schemes.ResidueProperties.aaIndex.length) {
+if (jalview.schemes.ResidueProperties.aaIndex[firstChar.charCodeAt (0)] < 23) {
+nonSSLabel = true;
+}}} else {
+rnastring.append (this.annotations[i].displayCharacter.charAt (1));
+}if (this.annotations[i].displayCharacter.length > 0) {
+this.hasText = true;
+}}
+if (nonSSLabel) {
+this.hasIcons = false;
+for (var j = 0; j < this.annotations.length; j++) {
+if (this.annotations[j] != null && this.annotations[j].secondaryStructure != ' ') {
+this.annotations[j].displayCharacter = String.valueOf (this.annotations[j].secondaryStructure);
+this.annotations[j].secondaryStructure = ' ';
+}}
+} else {
+if (this.isrna) {
+this._updateRnaSecStr (Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null));
+}}});
+Clazz.defineMethod (c$, "getRNAStruc",
+function () {
+if (this.isrna) {
+var rnastruc = Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null).toString ();
+if (this._lastrnaannot != rnastruc.hashCode ()) {
+this._lastrnaannot = rnastruc.hashCode ();
+this._updateRnaSecStr (rnastruc);
+}return rnastruc;
+}return null;
+});
+Clazz.makeConstructor (c$,
+function (label, description, annotations, min, max, graphType) {
+this.setAnnotationId ();
+this.editable = graphType == 0;
+this.label = label;
+this.description = description;
+this.annotations = annotations;
+this.graph = graphType;
+this.graphMin = min;
+this.graphMax = max;
+this.validateRangeAndDisplay ();
+}, "~S,~S,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "validateRangeAndDisplay",
+function () {
+if (this.annotations == null) {
+this.visible = false;
+return;
+}var graphType = this.graph;
+var min = this.graphMin;
+var max = this.graphMax;
+var drawValues = true;
+this._linecolour = null;
+if (min == max) {
+min = 999999999;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+continue;
+}if (drawValues && this.annotations[i].displayCharacter != null && this.annotations[i].displayCharacter.length > 1) {
+drawValues = false;
+}if (this.annotations[i].value > max) {
+max = this.annotations[i].value;
+}if (this.annotations[i].value < min) {
+min = this.annotations[i].value;
+}if (this._linecolour == null && this.annotations[i].colour != null) {
+this._linecolour = this.annotations[i].colour;
+}}
+if (min > 0) {
+min = 0;
+} else {
+if (max < 0) {
+max = 0;
+}}}this.graphMin = min;
+this.graphMax = max;
+this.areLabelsSecondaryStructure ();
+if (!drawValues && graphType != 0) {
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+this.annotations[i].displayCharacter = "";
+}}
+}});
+Clazz.makeConstructor (c$,
+function (annotation) {
+this.setAnnotationId ();
+this.label = String.instantialize (annotation.label);
+if (annotation.description != null) {
+this.description = String.instantialize (annotation.description);
+}this.graphMin = annotation.graphMin;
+this.graphMax = annotation.graphMax;
+this.graph = annotation.graph;
+this.graphHeight = annotation.graphHeight;
+this.graphGroup = annotation.graphGroup;
+this.groupRef = annotation.groupRef;
+this.editable = annotation.editable;
+this.autoCalculated = annotation.autoCalculated;
+this.hasIcons = annotation.hasIcons;
+this.hasText = annotation.hasText;
+this.height = annotation.height;
+this.label = annotation.label;
+this.padGaps = annotation.padGaps;
+this.visible = annotation.visible;
+this.centreColLabels = annotation.centreColLabels;
+this.scaleColLabel = annotation.scaleColLabel;
+this.showAllColLabels = annotation.showAllColLabels;
+this.calcId = annotation.calcId;
+if (annotation.properties != null) {
+this.properties = new java.util.HashMap ();
+for (var val, $val = annotation.properties.entrySet ().iterator (); $val.hasNext () && ((val = $val.next ()) || true);) {
+this.properties.put (val.getKey (), val.getValue ());
+}
+}if (this.$hasScore = annotation.$hasScore) {
+this.score = annotation.score;
+}if (annotation.threshold != null) {
+this.threshold = new jalview.datamodel.GraphLine (annotation.threshold);
+}var ann = annotation.annotations;
+if (annotation.annotations != null) {
+this.annotations = new Array (ann.length);
+for (var i = 0; i < ann.length; i++) {
+if (ann[i] != null) {
+this.annotations[i] = new jalview.datamodel.Annotation (ann[i]);
+if (this._linecolour != null) {
+this._linecolour = this.annotations[i].colour;
+}}}
+}if (annotation.sequenceRef != null) {
+this.sequenceRef = annotation.sequenceRef;
+if (annotation.sequenceMapping != null) {
+var p = null;
+this.sequenceMapping = new java.util.HashMap ();
+var pos = annotation.sequenceMapping.keySet ().iterator ();
+while (pos.hasNext ()) {
+p = pos.next ();
+var a = annotation.sequenceMapping.get (p);
+if (a == null) {
+continue;
+}if (ann != null) {
+for (var i = 0; i < ann.length; i++) {
+if (ann[i] === a) {
+this.sequenceMapping.put (p, this.annotations[i]);
+}}
+}}
+} else {
+this.sequenceMapping = null;
+}}{
+}this.validateRangeAndDisplay ();
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "restrict",
+function (startRes, endRes) {
+if (this.annotations == null) {
+return;
+}if (startRes < 0) {
+startRes = 0;
+}if (startRes >= this.annotations.length) {
+startRes = this.annotations.length - 1;
+}if (endRes >= this.annotations.length) {
+endRes = this.annotations.length - 1;
+}if (this.annotations == null) {
+return;
+}var temp = new Array (endRes - startRes + 1);
+if (startRes < this.annotations.length) {
+System.arraycopy (this.annotations, startRes, temp, 0, endRes - startRes + 1);
+}if (this.sequenceRef != null) {
+var spos = this.sequenceRef.findPosition (startRes);
+var epos = this.sequenceRef.findPosition (endRes);
+if (this.sequenceMapping != null) {
+var newmapping = new java.util.HashMap ();
+var e = this.sequenceMapping.keySet ().iterator ();
+while (e.hasNext ()) {
+var pos = e.next ();
+if (pos.intValue () >= spos && pos.intValue () <= epos) {
+newmapping.put (pos, this.sequenceMapping.get (pos));
+}}
+this.sequenceMapping.clear ();
+this.sequenceMapping = newmapping;
+}}this.annotations = temp;
+}, "~N,~N");
+Clazz.defineMethod (c$, "padAnnotation",
+function (length) {
+if (this.annotations == null) {
+return true;
+}if (this.annotations.length < length) {
+var na = new Array (length);
+System.arraycopy (this.annotations, 0, na, 0, this.annotations.length);
+this.annotations = na;
+return true;
+}return this.annotations.length > length;
+}, "~N");
+Clazz.overrideMethod (c$, "toString",
+function () {
+var buffer = new StringBuilder (256);
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+if (this.graph != 0) {
+buffer.append (this.annotations[i].value);
+} else if (this.hasIcons) {
+buffer.append (this.annotations[i].secondaryStructure);
+} else {
+buffer.append (this.annotations[i].displayCharacter);
+}}buffer.append (", ");
+}
+if (this.label.indexOf ("Consensus") == 0) {
+buffer.append ("\n");
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+buffer.append (this.annotations[i].description);
+}buffer.append (", ");
+}
+}return buffer.toString ();
+});
+Clazz.defineMethod (c$, "setThreshold",
+function (line) {
+this.threshold = line;
+}, "jalview.datamodel.GraphLine");
+Clazz.defineMethod (c$, "getThreshold",
+function () {
+return this.threshold;
+});
+Clazz.defineMethod (c$, "createSequenceMapping",
+function (seqRef, startRes, alreadyMapped) {
+if (seqRef == null) {
+return;
+}this.sequenceRef = seqRef;
+if (this.annotations == null) {
+return;
+}this.sequenceMapping = new java.util.HashMap ();
+var seqPos;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+if (alreadyMapped) {
+seqPos = seqRef.findPosition (i);
+} else {
+seqPos = i + startRes;
+}this.sequenceMapping.put ( new Integer (seqPos), this.annotations[i]);
+}}
+}, "jalview.datamodel.SequenceI,~N,~B");
+Clazz.defineMethod (c$, "adjustForAlignment",
+function () {
+if (this.sequenceRef == null) {
+return;
+}if (this.annotations == null) {
+return;
+}var a = 0;
+var aSize = this.sequenceRef.getLength ();
+if (aSize == 0) {
+return;
+}var position;
+var temp = new Array (aSize);
+var index;
+for (a = this.sequenceRef.getStart (); a <= this.sequenceRef.getEnd (); a++) {
+index = new Integer (a);
+if (this.sequenceMapping.containsKey (index)) {
+position = this.sequenceRef.findIndex (a) - 1;
+temp[position] = this.sequenceMapping.get (index);
+}}
+this.annotations = temp;
+});
+Clazz.defineMethod (c$, "compactAnnotationArray",
+function () {
+var i = 0;
+var iSize = this.annotations.length;
+while (i < iSize) {
+if (this.annotations[i] == null) {
+if (i + 1 < iSize) {
+System.arraycopy (this.annotations, i + 1, this.annotations, i, iSize - i - 1);
+}iSize--;
+} else {
+i++;
+}}
+var ann = this.annotations;
+this.annotations = new Array (i);
+System.arraycopy (ann, 0, this.annotations, 0, i);
+ann = null;
+return iSize;
+});
+Clazz.defineMethod (c$, "setSequenceRef",
+function (sequenceI) {
+if (sequenceI != null) {
+if (this.sequenceRef != null) {
+var rIsDs = this.sequenceRef.getDatasetSequence () == null;
+var tIsDs = sequenceI.getDatasetSequence () == null;
+if (this.sequenceRef !== sequenceI && (rIsDs && !tIsDs && this.sequenceRef !== sequenceI.getDatasetSequence ()) && (!rIsDs && tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI) && (!rIsDs && !tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI.getDatasetSequence ()) && !this.sequenceRef.equals (sequenceI)) {
+this.sequenceRef = null;
+if (this.sequenceMapping != null) {
+this.sequenceMapping = null;
+}this.createSequenceMapping (sequenceI, 1, true);
+this.adjustForAlignment ();
+} else {
+this.sequenceRef = sequenceI;
+}} else {
+this.createSequenceMapping (sequenceI, 1, true);
+this.adjustForAlignment ();
+}} else {
+this.sequenceMapping = null;
+this.sequenceRef = null;
+}}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getScore",
+function () {
+return this.score;
+});
+Clazz.defineMethod (c$, "setScore",
+function (score) {
+this.$hasScore = true;
+this.score = score;
+}, "~N");
+Clazz.defineMethod (c$, "hasScore",
+function () {
+return this.$hasScore || !Double.isNaN (this.score);
+});
+Clazz.makeConstructor (c$,
+function (label, description, score) {
+this.construct (label, description, null);
+this.setScore (score);
+}, "~S,~S,~N");
+Clazz.makeConstructor (c$,
+function (alignmentAnnotation, colSel) {
+this.construct (alignmentAnnotation);
+if (this.annotations == null) {
+return;
+}colSel.makeVisibleAnnotation (this);
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "setPadGaps",
+function (padgaps, gapchar) {
+this.padGaps = padgaps;
+if (padgaps) {
+this.hasText = true;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+this.annotations[i] = new jalview.datamodel.Annotation (String.valueOf (gapchar), null, ' ', 0, null);
+} else if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.equals (" ")) {
+this.annotations[i].displayCharacter = String.valueOf (gapchar);
+}}
+}}, "~B,~S");
+Clazz.defineMethod (c$, "getDescription",
+function (seqname) {
+if (seqname && this.sequenceRef != null) {
+var i = this.description.toLowerCase ().indexOf ("");
+if (i > -1) {
+return "" + this.sequenceRef.getName () + " : " + this.description.substring (i + 6);
+}return this.sequenceRef.getName () + " : " + this.description;
+}return this.description;
+}, "~B");
+Clazz.defineMethod (c$, "isValidStruc",
+function () {
+return this.invalidrnastruc == -1;
+});
+Clazz.defineMethod (c$, "getInvalidStrucPos",
+function () {
+return this.invalidrnastruc;
+});
+Clazz.defineMethod (c$, "getCalcId",
+function () {
+return this.calcId;
+});
+Clazz.defineMethod (c$, "setCalcId",
+function (calcId) {
+this.calcId = calcId;
+}, "~S");
+Clazz.defineMethod (c$, "isRNA",
+function () {
+return this.isrna;
+});
+Clazz.defineMethod (c$, "liftOver",
+function (sq, sp2sq) {
+if (sp2sq.getMappedWidth () != sp2sq.getWidth ()) {
+throw new Error ("liftOver currently not implemented for transfer of annotation between different types of seqeunce");
+}var mapIsTo = (sp2sq != null) ? (sp2sq.getTo () === sq || sp2sq.getTo () === sq.getDatasetSequence ()) : false;
+var mapForsq = new java.util.HashMap ();
+if (this.sequenceMapping != null) {
+if (sp2sq != null) {
+for (var ie, $ie = this.sequenceMapping.entrySet ().iterator (); $ie.hasNext () && ((ie = $ie.next ()) || true);) {
+var mpos = Integer.$valueOf (mapIsTo ? sp2sq.getMappedPosition ((ie.getKey ()).intValue ()) : sp2sq.getPosition ((ie.getKey ()).intValue ()));
+if ((mpos).intValue () >= sq.getStart () && (mpos).intValue () <= sq.getEnd ()) {
+mapForsq.put (mpos, ie.getValue ());
+}}
+this.sequenceMapping = mapForsq;
+this.sequenceRef = sq;
+this.adjustForAlignment ();
+} else {
+}}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
+Clazz.defineMethod (c$, "remap",
+function (newref, mapping, from, to, idxoffset) {
+if (mapping != null) {
+var old = this.sequenceMapping;
+var remap = new java.util.HashMap ();
+var index = -1;
+for (var mp, $mp = 0, $$mp = mapping; $mp < $$mp.length && ((mp = $$mp[$mp]) || true); $mp++) {
+if (index++ < 0) {
+continue;
+}var ann = null;
+if (from == -1) {
+ann = this.sequenceMapping.get (Integer.$valueOf (idxoffset + index));
+} else {
+if (mp != null && mp.length > from) {
+ann = this.sequenceMapping.get (Integer.$valueOf (mp[from]));
+}}if (ann != null) {
+if (to == -1) {
+remap.put (Integer.$valueOf (idxoffset + index), ann);
+} else {
+if (to > -1 && to < mp.length) {
+remap.put (Integer.$valueOf (mp[to]), ann);
+}}}}
+this.sequenceMapping = remap;
+old.clear ();
+if (newref != null) {
+this.sequenceRef = newref;
+}this.adjustForAlignment ();
+}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "getProperty",
+function (property) {
+if (this.properties == null) {
+return null;
+}return this.properties.get (property);
+}, "~S");
+Clazz.defineMethod (c$, "setProperty",
+function (property, value) {
+if (this.properties == null) {
+this.properties = new java.util.HashMap ();
+}this.properties.put (property, value);
+}, "~S,~S");
+Clazz.defineMethod (c$, "hasProperties",
+function () {
+return this.properties != null && this.properties.size () > 0;
+});
+Clazz.defineMethod (c$, "getProperties",
+function () {
+if (this.properties == null) {
+return java.util.Collections.emptyList ();
+}return this.properties.keySet ();
+});
+Clazz.defineMethod (c$, "getAnnotationForPosition",
+function (position) {
+return this.sequenceMapping == null ? null : this.sequenceMapping.get (new Integer (position));
+}, "~N");
+Clazz.defineMethod (c$, "setAnnotationId",
+function () {
+this.annotationId = "ann" + Long.toString (jalview.datamodel.AlignmentAnnotation.nextId ());
+});
+c$.nextId = Clazz.defineMethod (c$, "nextId",
+function () {
+return jalview.datamodel.AlignmentAnnotation.counter++;
+});
+c$.$AlignmentAnnotation$AnnotCharSequence$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.offset = 0;
+this.max = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.AlignmentAnnotation, "AnnotCharSequence", null, CharSequence);
+Clazz.makeConstructor (c$,
+function () {
+this.construct (0, this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length);
+});
+Clazz.makeConstructor (c$,
+function (a, b) {
+this.offset = a;
+this.max = b;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "subSequence",
+function (a, b) {
+return Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null, this.offset + a, this.offset + b);
+}, "~N,~N");
+Clazz.overrideMethod (c$, "length",
+function () {
+return this.max - this.offset;
+});
+Clazz.overrideMethod (c$, "charAt",
+function (a) {
+return ((a + this.offset < 0) || (a + this.offset) >= this.max || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset] == null || (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure <= ' ') ? ' ' : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.charAt (0));
+}, "~N");
+Clazz.overrideMethod (c$, "toString",
+function () {
+var a = Clazz.newCharArray (this.max - this.offset, '\0');
+var b = this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length;
+for (var c = this.offset; c < b; c++) {
+a[c] = (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c] == null || ((this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure).charCodeAt (0) <= 32)) ? ' ' : (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.charAt (0));
+}
+return String.instantialize (a);
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ANNOTATION_ID_PREFIX", "ann",
+"SEQUENCE_PROFILE", 0,
+"STRUCTURE_PROFILE", 1,
+"CDNA_PROFILE", 2,
+"counter", 0,
+"NO_GRAPH", 0,
+"BAR_GRAPH", 1,
+"LINE_GRAPH", 2);
+});
diff --git a/bin/jalview/datamodel/AlignmentI.js b/bin/jalview/datamodel/AlignmentI.js
index d1f3174..80e1794 100644
--- a/bin/jalview/datamodel/AlignmentI.js
+++ b/bin/jalview/datamodel/AlignmentI.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.AnnotatedCollectionI"], "jalview.datamodel.AlignmentI", null, function () {
-Clazz.declareInterface (jalview.datamodel, "AlignmentI", jalview.datamodel.AnnotatedCollectionI);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AnnotatedCollectionI"], "jalview.datamodel.AlignmentI", null, function () {
+Clazz.declareInterface (jalview.datamodel, "AlignmentI", jalview.datamodel.AnnotatedCollectionI);
+});
diff --git a/bin/jalview/datamodel/AlignmentOrder.js b/bin/jalview/datamodel/AlignmentOrder.js
index 281aa17..0fb0cbb 100644
--- a/bin/jalview/datamodel/AlignmentOrder.js
+++ b/bin/jalview/datamodel/AlignmentOrder.js
@@ -1,118 +1,118 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.AlignmentOrder", ["java.lang.Error", "java.util.ArrayList", "$.Arrays"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.Type = 0;
-this.Name = null;
-this.Order = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "AlignmentOrder");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.makeConstructor (c$,
-function (anOrder) {
-this.Order = anOrder;
-}, "java.util.List");
-Clazz.makeConstructor (c$,
-function (orderFrom) {
-this.Order = new java.util.ArrayList ();
-for (var seq, $seq = orderFrom.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-this.Order.add (seq);
-}
-}, "jalview.datamodel.AlignmentI");
-Clazz.makeConstructor (c$,
-function (orderFrom) {
-this.Order = new java.util.ArrayList (java.util.Arrays.asList (orderFrom));
-}, "~A");
-Clazz.defineMethod (c$, "setType",
-function (Type) {
-this.Type = Type;
-}, "~N");
-Clazz.defineMethod (c$, "getType",
-function () {
-return this.Type;
-});
-Clazz.defineMethod (c$, "setName",
-function (Name) {
-this.Name = Name;
-}, "~S");
-Clazz.defineMethod (c$, "getName",
-function () {
-return this.Name;
-});
-Clazz.defineMethod (c$, "setOrder",
-function (Order) {
-this.Order = Order;
-}, "java.util.List");
-Clazz.defineMethod (c$, "getOrder",
-function () {
-return this.Order;
-});
-Clazz.defineMethod (c$, "updateSequence",
-function (oldref, newref) {
-var found = this.Order.indexOf (oldref);
-if (found > -1) {
-this.Order.set (found, newref);
-}return found > -1;
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "equals",
-function (o) {
-if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.AlignmentOrder))) {
-return false;
-}return this.equals (o, true);
-}, "~O");
-Clazz.defineMethod (c$, "equals",
-function (o, identity) {
-if (o !== this) {
-if (o == null) {
-return false;
-}if (this.Order != null && o.Order != null && this.Order.size () == o.Order.size ()) {
-if (!identity) {
-throw new Error ("Weak sequenceI equivalence not yet implemented.");
-} else {
-for (var i = 0, j = o.Order.size (); i < j; i++) {
-if (this.Order.get (i) !== o.Order.get (i)) {
-return false;
-}}
-}} else {
-return false;
-}}return true;
-}, "jalview.datamodel.AlignmentOrder,~B");
-Clazz.defineMethod (c$, "isConsistent",
-function (o) {
-return this.isConsistent (o, true);
-}, "jalview.datamodel.AlignmentOrder");
-Clazz.defineMethod (c$, "isConsistent",
-function (o, identity) {
-if (o !== this) {
-if (o == null) {
-return false;
-}if (this.Order != null && o.Order != null) {
-var c;
-var s;
-if (o.Order.size () > this.Order.size ()) {
-c = o.Order;
-s = this.Order;
-} else {
-c = this.Order;
-s = o.Order;
-}if (!identity) {
-throw new Error ("Weak sequenceI equivalence not yet implemented.");
-} else {
-var last = -1;
-for (var i = 0, j = s.size (); i < j; i++) {
-var pos = c.indexOf (s.get (i));
-if (pos > last) {
-last = pos;
-} else {
-return false;
-}}
-}} else {
-return false;
-}}return true;
-}, "jalview.datamodel.AlignmentOrder,~B");
-Clazz.defineStatics (c$,
-"FILE", 0,
-"MSA", 1,
-"USER", 2);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignmentOrder", ["java.lang.Error", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.Type = 0;
+this.Name = null;
+this.Order = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentOrder");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.makeConstructor (c$,
+function (anOrder) {
+this.Order = anOrder;
+}, "java.util.List");
+Clazz.makeConstructor (c$,
+function (orderFrom) {
+this.Order = new java.util.ArrayList ();
+for (var seq, $seq = orderFrom.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.Order.add (seq);
+}
+}, "jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$,
+function (orderFrom) {
+this.Order = new java.util.ArrayList (java.util.Arrays.asList (orderFrom));
+}, "~A");
+Clazz.defineMethod (c$, "setType",
+function (Type) {
+this.Type = Type;
+}, "~N");
+Clazz.defineMethod (c$, "getType",
+function () {
+return this.Type;
+});
+Clazz.defineMethod (c$, "setName",
+function (Name) {
+this.Name = Name;
+}, "~S");
+Clazz.defineMethod (c$, "getName",
+function () {
+return this.Name;
+});
+Clazz.defineMethod (c$, "setOrder",
+function (Order) {
+this.Order = Order;
+}, "java.util.List");
+Clazz.defineMethod (c$, "getOrder",
+function () {
+return this.Order;
+});
+Clazz.defineMethod (c$, "updateSequence",
+function (oldref, newref) {
+var found = this.Order.indexOf (oldref);
+if (found > -1) {
+this.Order.set (found, newref);
+}return found > -1;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "equals",
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.AlignmentOrder))) {
+return false;
+}return this.equals (o, true);
+}, "~O");
+Clazz.defineMethod (c$, "equals",
+function (o, identity) {
+if (o !== this) {
+if (o == null) {
+return false;
+}if (this.Order != null && o.Order != null && this.Order.size () == o.Order.size ()) {
+if (!identity) {
+throw new Error ("Weak sequenceI equivalence not yet implemented.");
+} else {
+for (var i = 0, j = o.Order.size (); i < j; i++) {
+if (this.Order.get (i) !== o.Order.get (i)) {
+return false;
+}}
+}} else {
+return false;
+}}return true;
+}, "jalview.datamodel.AlignmentOrder,~B");
+Clazz.defineMethod (c$, "isConsistent",
+function (o) {
+return this.isConsistent (o, true);
+}, "jalview.datamodel.AlignmentOrder");
+Clazz.defineMethod (c$, "isConsistent",
+function (o, identity) {
+if (o !== this) {
+if (o == null) {
+return false;
+}if (this.Order != null && o.Order != null) {
+var c;
+var s;
+if (o.Order.size () > this.Order.size ()) {
+c = o.Order;
+s = this.Order;
+} else {
+c = this.Order;
+s = o.Order;
+}if (!identity) {
+throw new Error ("Weak sequenceI equivalence not yet implemented.");
+} else {
+var last = -1;
+for (var i = 0, j = s.size (); i < j; i++) {
+var pos = c.indexOf (s.get (i));
+if (pos > last) {
+last = pos;
+} else {
+return false;
+}}
+}} else {
+return false;
+}}return true;
+}, "jalview.datamodel.AlignmentOrder,~B");
+Clazz.defineStatics (c$,
+"FILE", 0,
+"MSA", 1,
+"USER", 2);
+});
diff --git a/bin/jalview/datamodel/AlignmentView.class b/bin/jalview/datamodel/AlignmentView.class
index 122d311e9828f76a9d3bb6b05dfdb0d156ac69fe..08408b7ad6afccecd66ac8dc5832289fbfea18cf 100644
GIT binary patch
delta 53
zcmV-50LuT!oB_C;0kHHm0cErGH1YxiasUyN>NimV6SGS=@CpG@vphpE0Rtca2a|6^
L7XcKrh(y2%Dkl;#
delta 69
zcmV-L0J{IUoB_z30kHHm0d%wVH1YxifdCSd>Nimk5C8-R009990Z;(|0RI32vphKP
b3IS5HEkiH?10etilVC&_0uchUctpSn2+R|S
diff --git a/bin/jalview/datamodel/AlignmentView.js b/bin/jalview/datamodel/AlignmentView.js
index e88c405..e559e79 100644
--- a/bin/jalview/datamodel/AlignmentView.js
+++ b/bin/jalview/datamodel/AlignmentView.js
@@ -1,625 +1,625 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.AlignmentView", ["jalview.datamodel.Alignment", "$.CigarArray", "$.ColumnSelection", "$.SeqCigar", "$.SequenceGroup", "jalview.util.MessageManager", "$.ShiftList", "java.lang.Error", "java.util.ArrayList", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.sequences = null;
-this.contigs = null;
-this.width = 0;
-this.firstCol = 0;
-this.scGroups = null;
-this.$isNa = false;
-if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentView.ScGroup")) {
-jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$ ();
-}
-this.selected = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "AlignmentView");
-Clazz.defineMethod (c$, "isNa",
-function () {
-return this.$isNa;
-});
-Clazz.makeConstructor (c$,
-function (alignment, columnSelection, selection, hasHiddenColumns, selectedRegionOnly, recordGroups) {
-this.construct ( new jalview.datamodel.CigarArray (alignment, (hasHiddenColumns ? columnSelection : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection.getStartRes () : 0);
-this.$isNa = alignment.isNucleotide ();
-var selseqs;
-if (selection != null && selection.getSize () > 0) {
-var sel = selection.getSequences (null);
-this.selected = new java.util.Vector ();
-selseqs = selection.getSequencesInOrder (alignment, selectedRegionOnly);
-} else {
-selseqs = alignment.getSequencesArray ();
-}var seqsets = new java.util.ArrayList ();
-var grps = new java.util.ArrayList ();
-var gg = alignment.getGroups ();
-grps.addAll (gg);
-var sgrps = null;
-var addedgps = null;
-if (grps != null) {
-if (selection != null && selectedRegionOnly) {
-var ssel = selection.getStartRes ();
-var esel = selection.getEndRes ();
-var isg = new java.util.ArrayList ();
-for (var sg, $sg = grps.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-if (!(sg.getStartRes () > esel || sg.getEndRes () < ssel)) {
-if (sg.getStartRes () < ssel) {
-sg.setStartRes (ssel);
-}if (sg.getEndRes () > esel) {
-sg.setEndRes (esel);
-}sg.setStartRes (sg.getStartRes () - ssel + 1);
-sg.setEndRes (sg.getEndRes () - ssel + 1);
-isg.add (sg);
-}}
-grps = isg;
-}sgrps = new Array (grps.size ());
-addedgps = Clazz.newBooleanArray (grps.size (), false);
-for (var g = 0; g < sgrps.length; g++) {
-var sg = grps.get (g);
-sgrps[g] = Clazz.innerTypeInstance (jalview.datamodel.AlignmentView.ScGroup, this, null);
-sgrps[g].sg = new jalview.datamodel.SequenceGroup (sg);
-addedgps[g] = false;
-seqsets.add (sg.getSequences ());
-}
-}var csi = 0;
-for (var i = 0; i < selseqs.length; i++) {
-if (selseqs[i] != null) {
-if (selection != null && selection.getSize () > 0 && !selectedRegionOnly) {
-this.sequences[csi].setGroupMembership (this.selected);
-this.selected.addElement (this.sequences[csi]);
-}if (seqsets != null) {
-for (var sg = 0; sg < sgrps.length; sg++) {
-if ((seqsets.get (sg)).contains (selseqs[i])) {
-this.sequences[csi].setGroupMembership (sgrps[sg]);
-sgrps[sg].sg.deleteSequence (selseqs[i], false);
-sgrps[sg].seqs.addElement (this.sequences[csi]);
-if (!addedgps[sg]) {
-if (this.scGroups == null) {
-this.scGroups = new java.util.ArrayList ();
-}addedgps[sg] = true;
-this.scGroups.add (sgrps[sg]);
-}}}
-}csi++;
-}}
-for (var sg = 0; sg < sgrps.length; sg++) {
-var sqs = sgrps[sg].sg.getSequencesAsArray (null);
-for (var si = 0; si < sqs.length; si++) {
-sgrps[sg].sg.deleteSequence (sqs[si], false);
-}
-sgrps[sg] = null;
-}
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");
-Clazz.makeConstructor (c$,
-function (seqcigararray) {
-if (!seqcigararray.isSeqCigarArray ()) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_can_only_make_alignmnet_from_cigararray"));
-}this.contigs = seqcigararray.getDeletedRegions ();
-this.sequences = seqcigararray.getSeqCigarArray ();
-this.width = seqcigararray.getWidth ();
-}, "jalview.datamodel.CigarArray");
-Clazz.makeConstructor (c$,
-function (sdata, firstcol) {
-this.construct (sdata);
-this.firstCol = firstcol;
-}, "jalview.datamodel.CigarArray,~N");
-Clazz.defineMethod (c$, "setSequences",
-function (sequences) {
-this.sequences = sequences;
-}, "~A");
-Clazz.defineMethod (c$, "setContigs",
-function (contigs) {
-this.contigs = contigs;
-}, "~A");
-Clazz.defineMethod (c$, "getSequences",
-function () {
-return this.sequences;
-});
-Clazz.defineMethod (c$, "getContigs",
-function () {
-return this.contigs;
-});
-Clazz.defineMethod (c$, "getAlignmentAndColumnSelection",
-function (gapCharacter) {
-var colsel = new jalview.datamodel.ColumnSelection ();
-return Clazz.newArray (-1, [jalview.datamodel.SeqCigar.createAlignmentSequences (this.sequences, gapCharacter, colsel, this.contigs), colsel]);
-}, "~S");
-Clazz.defineMethod (c$, "getVisibleAlignment",
-function (c) {
-var aln = this.getVisibleSeqs (c);
-var vcal = new jalview.datamodel.Alignment (aln);
-this.addPrunedGroupsInOrder (vcal, -1, -1, true);
-return vcal;
-}, "~S");
-Clazz.defineMethod (c$, "addPrunedGroupsInOrder",
-($fz = function (vcal, gstart, gend, viscontigs) {
-var r = false;
-if (gstart > -1 && gstart <= gend) {
-r = true;
-}var aln = vcal.getSequencesArray ();
-{
-{
-var nvg = (this.scGroups != null) ? this.scGroups.size () : 0;
-if (nvg > 0) {
-var nsg = new Array (nvg);
-for (var g = 0; g < nvg; g++) {
-var sg = this.scGroups.get (g).sg;
-if (r) {
-if (sg.getStartRes () > gend || sg.getEndRes () < gstart) {
-nsg[g] = null;
-continue;
-}}nsg[g] = new jalview.datamodel.SequenceGroup (sg);
-if (r && !viscontigs) {
-if (nsg[g].getStartRes () < gstart) {
-nsg[g].setStartRes (0);
-} else {
-nsg[g].setStartRes (nsg[g].getStartRes () - gstart);
-nsg[g].setEndRes (nsg[g].getEndRes () - gstart);
-}if (nsg[g].getEndRes () > (gend - gstart)) {
-nsg[g].setEndRes (gend - gstart);
-}}}
-if (viscontigs) {
-if (this.contigs != null) {
-var p = 0;
-var prune = new jalview.util.ShiftList ();
-if (r) {
-prune.addShift (gstart, -gstart);
-}for (var h = 0; h < this.contigs.length; h += 3) {
-{
-prune.addShift (p + this.contigs[h + 1], this.contigs[h + 2] - this.contigs[h + 1]);
-}p = this.contigs[h + 1] + this.contigs[h + 2];
-}
-for (var g = 0; g < nsg.length; g++) {
-if (nsg[g] != null) {
-var s = nsg[g].getStartRes ();
-var t = nsg[g].getEndRes ();
-var w = 1 + t - s;
-if (r) {
-if (s < gstart) {
-s = gstart;
-}if (t > gend) {
-t = gend;
-}}s = prune.shift (s);
-t = prune.shift (t);
-nsg[g].setStartRes (s);
-nsg[g].setEndRes (t);
-}}
-}}for (var nsq = 0; nsq < aln.length; nsq++) {
-for (var g = 0; g < nvg; g++) {
-if (nsg[g] != null && this.sequences[nsq].isMemberOf (this.scGroups.get (g))) {
-nsg[g].addSequence (aln[nsq], false);
-}}
-}
-for (var g = 0; g < nvg; g++) {
-if (nsg[g] != null && nsg[g].getSize () > 0) {
-vcal.addGroup (nsg[g]);
-}nsg[g] = null;
-}
-}}}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~N,~N,~B");
-Clazz.defineMethod (c$, "getVisibleSeqs",
-($fz = function (c) {
-var aln = new Array (this.sequences.length);
-for (var i = 0, j = this.sequences.length; i < j; i++) {
-aln[i] = this.sequences[i].getSeq ('-');
-}
-var seqs = this.getSequenceStrings ('-');
-for (var i = 0, j = aln.length; i < j; i++) {
-aln[i].setSequence (seqs[i]);
-}
-return aln;
-}, $fz.isPrivate = true, $fz), "~S");
-Clazz.defineMethod (c$, "getVisibleContigAlignments",
-function (c) {
-var nvc = 0;
-var vcontigs = this.getVisibleContigs ();
-var contigviews = this.getVisibleContigs (c);
-var vcals = new Array (contigviews.length);
-for (nvc = 0; nvc < contigviews.length; nvc++) {
-vcals[nvc] = new jalview.datamodel.Alignment (contigviews[nvc]);
-if (this.scGroups != null && this.scGroups.size () > 0) {
-this.addPrunedGroupsInOrder (vcals[nvc], vcontigs[nvc * 2], vcontigs[nvc * 2 + 1], true);
-}}
-return vcals;
-}, "~S");
-Clazz.defineMethod (c$, "getSequenceStrings",
-function (c) {
-var seqs = new Array (this.sequences.length);
-for (var n = 0; n < this.sequences.length; n++) {
-var fullseq = this.sequences[n].getSequenceString (c);
-if (this.contigs != null) {
-seqs[n] = "";
-var p = 0;
-for (var h = 0; h < this.contigs.length; h += 3) {
-seqs[n] += fullseq.substring (p, this.contigs[h + 1]);
-p = this.contigs[h + 1] + this.contigs[h + 2];
-}
-seqs[n] += fullseq.substring (p);
-} else {
-seqs[n] = fullseq;
-}}
-return seqs;
-}, "~S");
-Clazz.defineMethod (c$, "getWidth",
-function () {
-return this.width;
-});
-Clazz.defineMethod (c$, "setWidth",
-function (width) {
-this.width = width;
-}, "~N");
-Clazz.defineMethod (c$, "getVisibleContigs",
-function (gapCharacter) {
-var smsa;
-var njobs = 1;
-if (this.sequences == null || this.width <= 0) {
-return null;
-}if (this.contigs != null && this.contigs.length > 0) {
-var start = 0;
-njobs = 0;
-var fwidth = this.width;
-for (var contig = 0; contig < this.contigs.length; contig += 3) {
-if ((this.contigs[contig + 1] - start) > 0) {
-njobs++;
-}fwidth += this.contigs[contig + 2];
-start = this.contigs[contig + 1] + this.contigs[contig + 2];
-}
-if (start < fwidth) {
-njobs++;
-}smsa = new Array (njobs);
-start = 0;
-var j = 0;
-for (var contig = 0; contig < this.contigs.length; contig += 3) {
-if (this.contigs[contig + 1] - start > 0) {
-var mseq = new Array (this.sequences.length);
-for (var s = 0; s < mseq.length; s++) {
-mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
-}
-smsa[j] = mseq;
-j++;
-}start = this.contigs[contig + 1] + this.contigs[contig + 2];
-}
-if (start < fwidth) {
-var mseq = new Array (this.sequences.length);
-for (var s = 0; s < mseq.length; s++) {
-mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, fwidth + 1);
-}
-smsa[j] = mseq;
-j++;
-}} else {
-smsa = new Array (1);
-smsa[0] = new Array (this.sequences.length);
-for (var s = 0; s < this.sequences.length; s++) {
-smsa[0][s] = this.sequences[s].getSeq (gapCharacter);
-}
-}return smsa;
-}, "~S");
-Clazz.defineMethod (c$, "getUpdatedView",
-function (nvismsa, orders, gapCharacter) {
-if (this.sequences == null || this.width <= 0) {
-throw new Error (jalview.util.MessageManager.getString ("error.empty_view_cannot_be_updated"));
-}if (nvismsa == null) {
-throw new Error ("nvismsa==null. use getAlignmentAndColumnSelection() instead.");
-}if (this.contigs != null && this.contigs.length > 0) {
-var alignment = new Array (this.sequences.length);
-var columnselection = new jalview.datamodel.ColumnSelection ();
-if (this.contigs != null && this.contigs.length > 0) {
-var start = 0;
-var nwidth = 0;
-var owidth = this.width;
-var j = 0;
-for (var contig = 0; contig < this.contigs.length; contig += 3) {
-owidth += this.contigs[contig + 2];
-if (this.contigs[contig + 1] - start > 0) {
-var swidth = 0;
-if (nvismsa[j] != null) {
-var mseq = nvismsa[j];
-var order = (orders == null) ? null : orders[j];
-j++;
-if (mseq.length != this.sequences.length) {
-throw new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_number_of_sequences_in_block", Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (mseq.length).toString (), Integer.$valueOf (this.sequences.length).toString ()])));
-}swidth = mseq[0].getLength ();
-for (var s = 0; s < mseq.length; s++) {
-if (alignment[s] == null) {
-alignment[s] = mseq[s];
-} else {
-alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
-if (mseq[s].getStart () <= mseq[s].getEnd ()) {
-alignment[s].setEnd (mseq[s].getEnd ());
-}if (order != null) {
-order.updateSequence (mseq[s], alignment[s]);
-}}}
-} else {
-if (true) {
-for (var s = 0; s < this.sequences.length; s++) {
-var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
-if (swidth < oseq.getLength ()) {
-swidth = oseq.getLength ();
-}if (alignment[s] == null) {
-alignment[s] = oseq;
-} else {
-alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
-if (oseq.getEnd () >= oseq.getStart ()) {
-alignment[s].setEnd (oseq.getEnd ());
-}}}
-}j++;
-}nwidth += swidth;
-}start = this.contigs[contig + 1] + this.contigs[contig + 2];
-for (var s = 0; s < this.sequences.length; s++) {
-var hseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (this.contigs[contig + 1], start);
-if (alignment[s] == null) {
-alignment[s] = hseq;
-} else {
-alignment[s].setSequence (alignment[s].getSequenceAsString () + hseq.getSequenceAsString ());
-if (hseq.getEnd () >= hseq.getStart ()) {
-alignment[s].setEnd (hseq.getEnd ());
-}}}
-columnselection.hideColumns (nwidth, nwidth + this.contigs[contig + 2] - 1);
-nwidth += this.contigs[contig + 2];
-}
-if (j < nvismsa.length) {
-var swidth = 0;
-if (nvismsa[j] != null) {
-var mseq = nvismsa[j];
-var order = (orders != null) ? orders[j] : null;
-swidth = mseq[0].getLength ();
-for (var s = 0; s < mseq.length; s++) {
-if (alignment[s] == null) {
-alignment[s] = mseq[s];
-} else {
-alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
-if (mseq[s].getEnd () >= mseq[s].getStart ()) {
-alignment[s].setEnd (mseq[s].getEnd ());
-}if (order != null) {
-order.updateSequence (mseq[s], alignment[s]);
-}}}
-} else {
-if (start < owidth) {
-if (true) {
-for (var s = 0; s < this.sequences.length; s++) {
-var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, owidth + 1);
-if (swidth < oseq.getLength ()) {
-swidth = oseq.getLength ();
-}if (alignment[s] == null) {
-alignment[s] = oseq;
-} else {
-alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
-if (oseq.getEnd () >= oseq.getStart ()) {
-alignment[s].setEnd (oseq.getEnd ());
-}}}
-nwidth += swidth;
-} else {
-throw new Error (jalview.util.MessageManager.getString ("error.padding_not_yet_implemented"));
-}}}}}return Clazz.newArray (-1, [alignment, columnselection]);
-} else {
-if (nvismsa.length != 1) {
-throw new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view", Clazz.newArray (-1, [Integer.$valueOf (nvismsa.length).toString ()])));
-}if (nvismsa[0] != null) {
-return Clazz.newArray (-1, [nvismsa[0], new jalview.datamodel.ColumnSelection ()]);
-} else {
-return this.getAlignmentAndColumnSelection (gapCharacter);
-}}}, "~A,~A,~S");
-Clazz.defineMethod (c$, "getVisibleContigs",
-function () {
-if (this.contigs != null && this.contigs.length > 0) {
-var start = 0;
-var nvis = 0;
-var fwidth = this.width;
-for (var contig = 0; contig < this.contigs.length; contig += 3) {
-if ((this.contigs[contig + 1] - start) > 0) {
-nvis++;
-}fwidth += this.contigs[contig + 2];
-start = this.contigs[contig + 1] + this.contigs[contig + 2];
-}
-if (start < fwidth) {
-nvis++;
-}var viscontigs = Clazz.newIntArray (nvis * 2, 0);
-nvis = 0;
-start = 0;
-for (var contig = 0; contig < this.contigs.length; contig += 3) {
-if ((this.contigs[contig + 1] - start) > 0) {
-viscontigs[nvis] = start;
-viscontigs[nvis + 1] = this.contigs[contig + 1] - 1;
-nvis += 2;
-}start = this.contigs[contig + 1] + this.contigs[contig + 2];
-}
-if (start < fwidth) {
-viscontigs[nvis] = start;
-viscontigs[nvis + 1] = fwidth;
-nvis += 2;
-}return viscontigs;
-} else {
-return Clazz.newIntArray (-1, [0, this.width]);
-}});
-Clazz.defineMethod (c$, "getAlignmentOrigin",
-function () {
-return this.firstCol;
-});
-Clazz.defineMethod (c$, "getVisibleContigMapFor",
-function (gapMap) {
-var delMap = null;
-var viscontigs = this.getVisibleContigs ();
-var spos = 0;
-var i = 0;
-if (viscontigs != null) {
-delMap = Clazz.newIntArray (gapMap.length, 0);
-for (var contig = 0; contig < viscontigs.length; contig += 2) {
-while (spos < gapMap.length && gapMap[spos] < viscontigs[contig]) {
-spos++;
-}
-while (spos < gapMap.length && gapMap[spos] <= viscontigs[contig + 1]) {
-delMap[i++] = spos++;
-}
-}
-var tmap = Clazz.newIntArray (i, 0);
-System.arraycopy (delMap, 0, tmap, 0, i);
-delMap = tmap;
-}return delMap;
-}, "~A");
-Clazz.defineMethod (c$, "getEditedSequences",
-function (gc, $delete) {
-var msf = this.getSequences ();
-var aln = new Array (msf.length);
-for (var i = 0, j = msf.length; i < j; i++) {
-aln[i] = msf[i].getSeq (gc);
-}
-if ($delete) {
-var sqs = this.getSequenceStrings (gc);
-for (var i = 0; i < sqs.length; i++) {
-aln[i].setSequence (sqs[i]);
-sqs[i] = null;
-}
-}return aln;
-}, "~S,~B");
-c$.summariseAlignmentView = Clazz.defineMethod (c$, "summariseAlignmentView",
-function (view, os) {
-os.print ("View has " + view.sequences.length + " of which ");
-if (view.selected == null) {
-os.print ("None");
-} else {
-os.print (" " + view.selected.size ());
-}os.println (" are selected.");
-os.print ("View is " + view.getWidth () + " columns wide");
-var viswid = 0;
-var contigs = view.getContigs ();
-if (contigs != null) {
-viswid = view.width;
-for (var i = 0; i < contigs.length; i += 3) {
-viswid += contigs[i + 2];
-}
-os.println ("with " + viswid + " visible columns spread over " + Clazz.doubleToInt (contigs.length / 3) + " regions.");
-} else {
-viswid = view.width;
-os.println (".");
-}if (view.scGroups != null) {
-os.println ("There are " + view.scGroups.size () + " groups defined on the view.");
-for (var g = 0; g < view.scGroups.size (); g++) {
-var sgr = view.scGroups.get (g);
-os.println ("Group " + g + ": Name = " + sgr.sg.getName () + " Contains " + sgr.seqs.size () + " Seqs.");
-os.println ("This group runs from " + sgr.sg.getStartRes () + " to " + sgr.sg.getEndRes ());
-for (var s = 0; s < sgr.seqs.size (); s++) {
-if (!(sgr.seqs.elementAt (s)).isMemberOf (sgr)) {
-os.println ("** WARNING: sequence " + (sgr.seqs.elementAt (s)).toString () + " is not marked as member of group.");
-}}
-}
-var visal = view.getVisibleAlignment ('-');
-if (visal != null) {
-os.println ("Vis. alignment is " + visal.getWidth () + " wide and has " + visal.getHeight () + " seqs.");
-if (visal.getGroups () != null && visal.getGroups ().size () > 0) {
-var i = 1;
-for (var sg, $sg = visal.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-os.println ("Group " + (i++) + " begins at column " + sg.getStartRes () + " and ends at " + sg.getEndRes ());
-}
-}}}}, "jalview.datamodel.AlignmentView,java.io.PrintStream");
-c$.testSelectionViews = Clazz.defineMethod (c$, "testSelectionViews",
-function (alignment, csel, selection) {
-System.out.println ("Testing standard view creation:\n");
-var view = null;
-try {
-System.out.println ("View with no hidden columns, no limit to selection, no groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, false);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection but no groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View with no hidden columns, no limit to selection, and all groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, true);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View with no hidden columns, limited to selection and no groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, false);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View with no hidden columns, limited to selection, and all groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, true);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View *with* hidden columns, no limit to selection, no groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, false);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection but no groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View *with* hidden columns, no limit to selection, and all groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, true);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View *with* hidden columns, limited to selection and no groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, false);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
-} else {
-throw e;
-}
-}
-try {
-System.out.println ("View *with* hidden columns, limited to selection, and all groups to be collected:");
-view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, true);
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-e.printStackTrace ();
-System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
-} else {
-throw e;
-}
-}
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
-c$.$AlignmentView$ScGroup$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.seqs = null;
-this.sg = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel.AlignmentView, "ScGroup");
-Clazz.makeConstructor (c$,
-function () {
-this.seqs = new java.util.Vector ();
-});
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignmentView", ["jalview.datamodel.Alignment", "$.CigarArray", "$.ColumnSelection", "$.SeqCigar", "$.SequenceGroup", "jalview.util.MessageManager", "$.ShiftList", "java.lang.Error", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sequences = null;
+this.contigs = null;
+this.width = 0;
+this.firstCol = 0;
+this.scGroups = null;
+this.$isNa = false;
+if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentView.ScGroup")) {
+jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$ ();
+}
+this.selected = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentView");
+Clazz.defineMethod (c$, "isNa",
+function () {
+return this.$isNa;
+});
+Clazz.makeConstructor (c$,
+function (alignment, columnSelection, selection, hasHiddenColumns, selectedRegionOnly, recordGroups) {
+this.construct ( new jalview.datamodel.CigarArray (alignment, (hasHiddenColumns ? columnSelection : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection.getStartRes () : 0);
+this.$isNa = alignment.isNucleotide ();
+var selseqs;
+if (selection != null && selection.getSize () > 0) {
+var sel = selection.getSequences (null);
+this.selected = new java.util.Vector ();
+selseqs = selection.getSequencesInOrder (alignment, selectedRegionOnly);
+} else {
+selseqs = alignment.getSequencesArray ();
+}var seqsets = new java.util.ArrayList ();
+var grps = new java.util.ArrayList ();
+var gg = alignment.getGroups ();
+grps.addAll (gg);
+var sgrps = null;
+var addedgps = null;
+if (grps != null) {
+if (selection != null && selectedRegionOnly) {
+var ssel = selection.getStartRes ();
+var esel = selection.getEndRes ();
+var isg = new java.util.ArrayList ();
+for (var sg, $sg = grps.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (!(sg.getStartRes () > esel || sg.getEndRes () < ssel)) {
+if (sg.getStartRes () < ssel) {
+sg.setStartRes (ssel);
+}if (sg.getEndRes () > esel) {
+sg.setEndRes (esel);
+}sg.setStartRes (sg.getStartRes () - ssel + 1);
+sg.setEndRes (sg.getEndRes () - ssel + 1);
+isg.add (sg);
+}}
+grps = isg;
+}sgrps = new Array (grps.size ());
+addedgps = Clazz.newBooleanArray (grps.size (), false);
+for (var g = 0; g < sgrps.length; g++) {
+var sg = grps.get (g);
+sgrps[g] = Clazz.innerTypeInstance (jalview.datamodel.AlignmentView.ScGroup, this, null);
+sgrps[g].sg = new jalview.datamodel.SequenceGroup (sg);
+addedgps[g] = false;
+seqsets.add (sg.getSequences ());
+}
+}var csi = 0;
+for (var i = 0; i < selseqs.length; i++) {
+if (selseqs[i] != null) {
+if (selection != null && selection.getSize () > 0 && !selectedRegionOnly) {
+this.sequences[csi].setGroupMembership (this.selected);
+this.selected.addElement (this.sequences[csi]);
+}if (seqsets != null) {
+for (var sg = 0; sg < sgrps.length; sg++) {
+if ((seqsets.get (sg)).contains (selseqs[i])) {
+this.sequences[csi].setGroupMembership (sgrps[sg]);
+sgrps[sg].sg.deleteSequence (selseqs[i], false);
+sgrps[sg].seqs.addElement (this.sequences[csi]);
+if (!addedgps[sg]) {
+if (this.scGroups == null) {
+this.scGroups = new java.util.ArrayList ();
+}addedgps[sg] = true;
+this.scGroups.add (sgrps[sg]);
+}}}
+}csi++;
+}}
+for (var sg = 0; sg < sgrps.length; sg++) {
+var sqs = sgrps[sg].sg.getSequencesAsArray (null);
+for (var si = 0; si < sqs.length; si++) {
+sgrps[sg].sg.deleteSequence (sqs[si], false);
+}
+sgrps[sg] = null;
+}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");
+Clazz.makeConstructor (c$,
+function (seqcigararray) {
+if (!seqcigararray.isSeqCigarArray ()) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_can_only_make_alignmnet_from_cigararray"));
+}this.contigs = seqcigararray.getDeletedRegions ();
+this.sequences = seqcigararray.getSeqCigarArray ();
+this.width = seqcigararray.getWidth ();
+}, "jalview.datamodel.CigarArray");
+Clazz.makeConstructor (c$,
+function (sdata, firstcol) {
+this.construct (sdata);
+this.firstCol = firstcol;
+}, "jalview.datamodel.CigarArray,~N");
+Clazz.defineMethod (c$, "setSequences",
+function (sequences) {
+this.sequences = sequences;
+}, "~A");
+Clazz.defineMethod (c$, "setContigs",
+function (contigs) {
+this.contigs = contigs;
+}, "~A");
+Clazz.defineMethod (c$, "getSequences",
+function () {
+return this.sequences;
+});
+Clazz.defineMethod (c$, "getContigs",
+function () {
+return this.contigs;
+});
+Clazz.defineMethod (c$, "getAlignmentAndColumnSelection",
+function (gapCharacter) {
+var colsel = new jalview.datamodel.ColumnSelection ();
+return Clazz.newArray (-1, [jalview.datamodel.SeqCigar.createAlignmentSequences (this.sequences, gapCharacter, colsel, this.contigs), colsel]);
+}, "~S");
+Clazz.defineMethod (c$, "getVisibleAlignment",
+function (c) {
+var aln = this.getVisibleSeqs (c);
+var vcal = new jalview.datamodel.Alignment (aln);
+this.addPrunedGroupsInOrder (vcal, -1, -1, true);
+return vcal;
+}, "~S");
+Clazz.defineMethod (c$, "addPrunedGroupsInOrder",
+($fz = function (vcal, gstart, gend, viscontigs) {
+var r = false;
+if (gstart > -1 && gstart <= gend) {
+r = true;
+}var aln = vcal.getSequencesArray ();
+{
+{
+var nvg = (this.scGroups != null) ? this.scGroups.size () : 0;
+if (nvg > 0) {
+var nsg = new Array (nvg);
+for (var g = 0; g < nvg; g++) {
+var sg = this.scGroups.get (g).sg;
+if (r) {
+if (sg.getStartRes () > gend || sg.getEndRes () < gstart) {
+nsg[g] = null;
+continue;
+}}nsg[g] = new jalview.datamodel.SequenceGroup (sg);
+if (r && !viscontigs) {
+if (nsg[g].getStartRes () < gstart) {
+nsg[g].setStartRes (0);
+} else {
+nsg[g].setStartRes (nsg[g].getStartRes () - gstart);
+nsg[g].setEndRes (nsg[g].getEndRes () - gstart);
+}if (nsg[g].getEndRes () > (gend - gstart)) {
+nsg[g].setEndRes (gend - gstart);
+}}}
+if (viscontigs) {
+if (this.contigs != null) {
+var p = 0;
+var prune = new jalview.util.ShiftList ();
+if (r) {
+prune.addShift (gstart, -gstart);
+}for (var h = 0; h < this.contigs.length; h += 3) {
+{
+prune.addShift (p + this.contigs[h + 1], this.contigs[h + 2] - this.contigs[h + 1]);
+}p = this.contigs[h + 1] + this.contigs[h + 2];
+}
+for (var g = 0; g < nsg.length; g++) {
+if (nsg[g] != null) {
+var s = nsg[g].getStartRes ();
+var t = nsg[g].getEndRes ();
+var w = 1 + t - s;
+if (r) {
+if (s < gstart) {
+s = gstart;
+}if (t > gend) {
+t = gend;
+}}s = prune.shift (s);
+t = prune.shift (t);
+nsg[g].setStartRes (s);
+nsg[g].setEndRes (t);
+}}
+}}for (var nsq = 0; nsq < aln.length; nsq++) {
+for (var g = 0; g < nvg; g++) {
+if (nsg[g] != null && this.sequences[nsq].isMemberOf (this.scGroups.get (g))) {
+nsg[g].addSequence (aln[nsq], false);
+}}
+}
+for (var g = 0; g < nvg; g++) {
+if (nsg[g] != null && nsg[g].getSize () > 0) {
+vcal.addGroup (nsg[g]);
+}nsg[g] = null;
+}
+}}}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~N,~N,~B");
+Clazz.defineMethod (c$, "getVisibleSeqs",
+($fz = function (c) {
+var aln = new Array (this.sequences.length);
+for (var i = 0, j = this.sequences.length; i < j; i++) {
+aln[i] = this.sequences[i].getSeq ('-');
+}
+var seqs = this.getSequenceStrings ('-');
+for (var i = 0, j = aln.length; i < j; i++) {
+aln[i].setSequence (seqs[i]);
+}
+return aln;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "getVisibleContigAlignments",
+function (c) {
+var nvc = 0;
+var vcontigs = this.getVisibleContigs ();
+var contigviews = this.getVisibleContigs (c);
+var vcals = new Array (contigviews.length);
+for (nvc = 0; nvc < contigviews.length; nvc++) {
+vcals[nvc] = new jalview.datamodel.Alignment (contigviews[nvc]);
+if (this.scGroups != null && this.scGroups.size () > 0) {
+this.addPrunedGroupsInOrder (vcals[nvc], vcontigs[nvc * 2], vcontigs[nvc * 2 + 1], true);
+}}
+return vcals;
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceStrings",
+function (c) {
+var seqs = new Array (this.sequences.length);
+for (var n = 0; n < this.sequences.length; n++) {
+var fullseq = this.sequences[n].getSequenceString (c);
+if (this.contigs != null) {
+seqs[n] = "";
+var p = 0;
+for (var h = 0; h < this.contigs.length; h += 3) {
+seqs[n] += fullseq.substring (p, this.contigs[h + 1]);
+p = this.contigs[h + 1] + this.contigs[h + 2];
+}
+seqs[n] += fullseq.substring (p);
+} else {
+seqs[n] = fullseq;
+}}
+return seqs;
+}, "~S");
+Clazz.defineMethod (c$, "getWidth",
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "setWidth",
+function (width) {
+this.width = width;
+}, "~N");
+Clazz.defineMethod (c$, "getVisibleContigs",
+function (gapCharacter) {
+var smsa;
+var njobs = 1;
+if (this.sequences == null || this.width <= 0) {
+return null;
+}if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+njobs = 0;
+var fwidth = this.width;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+njobs++;
+}fwidth += this.contigs[contig + 2];
+start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+njobs++;
+}smsa = new Array (njobs);
+start = 0;
+var j = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if (this.contigs[contig + 1] - start > 0) {
+var mseq = new Array (this.sequences.length);
+for (var s = 0; s < mseq.length; s++) {
+mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
+}
+smsa[j] = mseq;
+j++;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+var mseq = new Array (this.sequences.length);
+for (var s = 0; s < mseq.length; s++) {
+mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, fwidth + 1);
+}
+smsa[j] = mseq;
+j++;
+}} else {
+smsa = new Array (1);
+smsa[0] = new Array (this.sequences.length);
+for (var s = 0; s < this.sequences.length; s++) {
+smsa[0][s] = this.sequences[s].getSeq (gapCharacter);
+}
+}return smsa;
+}, "~S");
+Clazz.defineMethod (c$, "getUpdatedView",
+function (nvismsa, orders, gapCharacter) {
+if (this.sequences == null || this.width <= 0) {
+throw new Error (jalview.util.MessageManager.getString ("error.empty_view_cannot_be_updated"));
+}if (nvismsa == null) {
+throw new Error ("nvismsa==null. use getAlignmentAndColumnSelection() instead.");
+}if (this.contigs != null && this.contigs.length > 0) {
+var alignment = new Array (this.sequences.length);
+var columnselection = new jalview.datamodel.ColumnSelection ();
+if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+var nwidth = 0;
+var owidth = this.width;
+var j = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+owidth += this.contigs[contig + 2];
+if (this.contigs[contig + 1] - start > 0) {
+var swidth = 0;
+if (nvismsa[j] != null) {
+var mseq = nvismsa[j];
+var order = (orders == null) ? null : orders[j];
+j++;
+if (mseq.length != this.sequences.length) {
+throw new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_number_of_sequences_in_block", Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (mseq.length).toString (), Integer.$valueOf (this.sequences.length).toString ()])));
+}swidth = mseq[0].getLength ();
+for (var s = 0; s < mseq.length; s++) {
+if (alignment[s] == null) {
+alignment[s] = mseq[s];
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
+if (mseq[s].getStart () <= mseq[s].getEnd ()) {
+alignment[s].setEnd (mseq[s].getEnd ());
+}if (order != null) {
+order.updateSequence (mseq[s], alignment[s]);
+}}}
+} else {
+if (true) {
+for (var s = 0; s < this.sequences.length; s++) {
+var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
+if (swidth < oseq.getLength ()) {
+swidth = oseq.getLength ();
+}if (alignment[s] == null) {
+alignment[s] = oseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
+if (oseq.getEnd () >= oseq.getStart ()) {
+alignment[s].setEnd (oseq.getEnd ());
+}}}
+}j++;
+}nwidth += swidth;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+for (var s = 0; s < this.sequences.length; s++) {
+var hseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (this.contigs[contig + 1], start);
+if (alignment[s] == null) {
+alignment[s] = hseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + hseq.getSequenceAsString ());
+if (hseq.getEnd () >= hseq.getStart ()) {
+alignment[s].setEnd (hseq.getEnd ());
+}}}
+columnselection.hideColumns (nwidth, nwidth + this.contigs[contig + 2] - 1);
+nwidth += this.contigs[contig + 2];
+}
+if (j < nvismsa.length) {
+var swidth = 0;
+if (nvismsa[j] != null) {
+var mseq = nvismsa[j];
+var order = (orders != null) ? orders[j] : null;
+swidth = mseq[0].getLength ();
+for (var s = 0; s < mseq.length; s++) {
+if (alignment[s] == null) {
+alignment[s] = mseq[s];
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
+if (mseq[s].getEnd () >= mseq[s].getStart ()) {
+alignment[s].setEnd (mseq[s].getEnd ());
+}if (order != null) {
+order.updateSequence (mseq[s], alignment[s]);
+}}}
+} else {
+if (start < owidth) {
+if (true) {
+for (var s = 0; s < this.sequences.length; s++) {
+var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, owidth + 1);
+if (swidth < oseq.getLength ()) {
+swidth = oseq.getLength ();
+}if (alignment[s] == null) {
+alignment[s] = oseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
+if (oseq.getEnd () >= oseq.getStart ()) {
+alignment[s].setEnd (oseq.getEnd ());
+}}}
+nwidth += swidth;
+} else {
+throw new Error (jalview.util.MessageManager.getString ("error.padding_not_yet_implemented"));
+}}}}}return Clazz.newArray (-1, [alignment, columnselection]);
+} else {
+if (nvismsa.length != 1) {
+throw new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view", Clazz.newArray (-1, [Integer.$valueOf (nvismsa.length).toString ()])));
+}if (nvismsa[0] != null) {
+return Clazz.newArray (-1, [nvismsa[0], new jalview.datamodel.ColumnSelection ()]);
+} else {
+return this.getAlignmentAndColumnSelection (gapCharacter);
+}}}, "~A,~A,~S");
+Clazz.defineMethod (c$, "getVisibleContigs",
+function () {
+if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+var nvis = 0;
+var fwidth = this.width;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+nvis++;
+}fwidth += this.contigs[contig + 2];
+start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+nvis++;
+}var viscontigs = Clazz.newIntArray (nvis * 2, 0);
+nvis = 0;
+start = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+viscontigs[nvis] = start;
+viscontigs[nvis + 1] = this.contigs[contig + 1] - 1;
+nvis += 2;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+viscontigs[nvis] = start;
+viscontigs[nvis + 1] = fwidth;
+nvis += 2;
+}return viscontigs;
+} else {
+return Clazz.newIntArray (-1, [0, this.width]);
+}});
+Clazz.defineMethod (c$, "getAlignmentOrigin",
+function () {
+return this.firstCol;
+});
+Clazz.defineMethod (c$, "getVisibleContigMapFor",
+function (gapMap) {
+var delMap = null;
+var viscontigs = this.getVisibleContigs ();
+var spos = 0;
+var i = 0;
+if (viscontigs != null) {
+delMap = Clazz.newIntArray (gapMap.length, 0);
+for (var contig = 0; contig < viscontigs.length; contig += 2) {
+while (spos < gapMap.length && gapMap[spos] < viscontigs[contig]) {
+spos++;
+}
+while (spos < gapMap.length && gapMap[spos] <= viscontigs[contig + 1]) {
+delMap[i++] = spos++;
+}
+}
+var tmap = Clazz.newIntArray (i, 0);
+System.arraycopy (delMap, 0, tmap, 0, i);
+delMap = tmap;
+}return delMap;
+}, "~A");
+Clazz.defineMethod (c$, "getEditedSequences",
+function (gc, $delete) {
+var msf = this.getSequences ();
+var aln = new Array (msf.length);
+for (var i = 0, j = msf.length; i < j; i++) {
+aln[i] = msf[i].getSeq (gc);
+}
+if ($delete) {
+var sqs = this.getSequenceStrings (gc);
+for (var i = 0; i < sqs.length; i++) {
+aln[i].setSequence (sqs[i]);
+sqs[i] = null;
+}
+}return aln;
+}, "~S,~B");
+c$.summariseAlignmentView = Clazz.defineMethod (c$, "summariseAlignmentView",
+function (view, os) {
+os.print ("View has " + view.sequences.length + " of which ");
+if (view.selected == null) {
+os.print ("None");
+} else {
+os.print (" " + view.selected.size ());
+}os.println (" are selected.");
+os.print ("View is " + view.getWidth () + " columns wide");
+var viswid = 0;
+var contigs = view.getContigs ();
+if (contigs != null) {
+viswid = view.width;
+for (var i = 0; i < contigs.length; i += 3) {
+viswid += contigs[i + 2];
+}
+os.println ("with " + viswid + " visible columns spread over " + Clazz.doubleToInt (contigs.length / 3) + " regions.");
+} else {
+viswid = view.width;
+os.println (".");
+}if (view.scGroups != null) {
+os.println ("There are " + view.scGroups.size () + " groups defined on the view.");
+for (var g = 0; g < view.scGroups.size (); g++) {
+var sgr = view.scGroups.get (g);
+os.println ("Group " + g + ": Name = " + sgr.sg.getName () + " Contains " + sgr.seqs.size () + " Seqs.");
+os.println ("This group runs from " + sgr.sg.getStartRes () + " to " + sgr.sg.getEndRes ());
+for (var s = 0; s < sgr.seqs.size (); s++) {
+if (!(sgr.seqs.elementAt (s)).isMemberOf (sgr)) {
+os.println ("** WARNING: sequence " + (sgr.seqs.elementAt (s)).toString () + " is not marked as member of group.");
+}}
+}
+var visal = view.getVisibleAlignment ('-');
+if (visal != null) {
+os.println ("Vis. alignment is " + visal.getWidth () + " wide and has " + visal.getHeight () + " seqs.");
+if (visal.getGroups () != null && visal.getGroups ().size () > 0) {
+var i = 1;
+for (var sg, $sg = visal.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+os.println ("Group " + (i++) + " begins at column " + sg.getStartRes () + " and ends at " + sg.getEndRes ());
+}
+}}}}, "jalview.datamodel.AlignmentView,java.io.PrintStream");
+c$.testSelectionViews = Clazz.defineMethod (c$, "testSelectionViews",
+function (alignment, csel, selection) {
+System.out.println ("Testing standard view creation:\n");
+var view = null;
+try {
+System.out.println ("View with no hidden columns, no limit to selection, no groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, no limit to selection, and all groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, limited to selection and no groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, limited to selection, and all groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, no limit to selection, no groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, no limit to selection, and all groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, limited to selection and no groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, limited to selection, and all groups to be collected:");
+view = new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
+} else {
+throw e;
+}
+}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+c$.$AlignmentView$ScGroup$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.seqs = null;
+this.sg = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.AlignmentView, "ScGroup");
+Clazz.makeConstructor (c$,
+function () {
+this.seqs = new java.util.Vector ();
+});
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/datamodel/AnnotatedCollectionI.js b/bin/jalview/datamodel/AnnotatedCollectionI.js
index 0dda32c..fd7a804 100644
--- a/bin/jalview/datamodel/AnnotatedCollectionI.js
+++ b/bin/jalview/datamodel/AnnotatedCollectionI.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.SequenceCollectionI"], "jalview.datamodel.AnnotatedCollectionI", null, function () {
-Clazz.declareInterface (jalview.datamodel, "AnnotatedCollectionI", jalview.datamodel.SequenceCollectionI);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.SequenceCollectionI"], "jalview.datamodel.AnnotatedCollectionI", null, function () {
+Clazz.declareInterface (jalview.datamodel, "AnnotatedCollectionI", jalview.datamodel.SequenceCollectionI);
+});
diff --git a/bin/jalview/datamodel/Annotation.class b/bin/jalview/datamodel/Annotation.class
index ad9b0f6c0e2cad278dee7c2149ab438c3ad36617..043f3308f0825b28329db8a4dfc0805ed14f2c8f 100644
GIT binary patch
delta 229
zcmX>o{91U!G!|}WhFl&7dxktl2ARnVS;QvCGjnX-$D+#2`GIh3{r?j@-`RsY5)ugI$!_*
delta 188
zcmaDYd{B79G!||PhFl&7dxktl2I 0) {
-sb.append ("\"");
-sb.append (this.description);
-sb.append ("\"");
-}{
-sb.append (",");
-}if (!Float.isNaN (this.value)) {
-sb.append (this.value);
-}if (this.colour != null) {
-if (sb.length () > 0) {
-sb.append (",");
-}sb.append ("[");
-sb.append (this.colour.getRed ());
-sb.append (",");
-sb.append (this.colour.getGreen ());
-sb.append (",");
-sb.append (this.colour.getBlue ());
-sb.append ("]");
-}return sb.toString ();
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.Annotation", ["java.lang.Float", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.displayCharacter = "";
+this.description = "";
+this.secondaryStructure = ' ';
+this.value = 0;
+this.colour = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Annotation");
+Clazz.makeConstructor (c$,
+function (displayChar, desc, ss, val) {
+this.displayCharacter = displayChar;
+this.description = desc;
+this.secondaryStructure = ss;
+this.value = val;
+}, "~S,~S,~S,~N");
+Clazz.makeConstructor (c$,
+function (displayChar, desc, ss, val, colour) {
+this.construct (displayChar, desc, ss, val);
+this.colour = colour;
+}, "~S,~S,~S,~N,java.awt.Color");
+Clazz.makeConstructor (c$,
+function (that) {
+if (that == null || this === that) {
+return;
+}if (that.displayCharacter != null) this.displayCharacter = String.instantialize (that.displayCharacter);
+if (that.description != null) this.description = String.instantialize (that.description);
+this.secondaryStructure = that.secondaryStructure;
+this.value = that.value;
+this.colour = that.colour;
+}, "jalview.datamodel.Annotation");
+Clazz.makeConstructor (c$,
+function (val) {
+this.construct (null, null, ' ', val, null);
+}, "~N");
+Clazz.overrideMethod (c$, "toString",
+function () {
+var sb = new StringBuffer ();
+if (this.displayCharacter != null) {
+sb.append ("\'");
+sb.append (this.displayCharacter);
+sb.append ("\'");
+}{
+sb.append (",");
+}if (this.secondaryStructure.charCodeAt (0) != 0 && !("" + this.displayCharacter).equals ("" + this.secondaryStructure)) {
+sb.append ("\'");
+sb.append (this.secondaryStructure);
+sb.append ("\'");
+}{
+sb.append (",");
+}if (this.description != null && this.description.length > 0) {
+sb.append ("\"");
+sb.append (this.description);
+sb.append ("\"");
+}{
+sb.append (",");
+}if (!Float.isNaN (this.value)) {
+sb.append (this.value);
+}if (this.colour != null) {
+if (sb.length () > 0) {
+sb.append (",");
+}sb.append ("[");
+sb.append ("" + this.colour.getRed ());
+sb.append (",");
+sb.append ("" + this.colour.getGreen ());
+sb.append (",");
+sb.append ("" + this.colour.getBlue ());
+sb.append ("]");
+}return sb.toString ();
+});
+});
diff --git a/bin/jalview/datamodel/BinaryNode.js b/bin/jalview/datamodel/BinaryNode.js
index 64fb764..7575508 100644
--- a/bin/jalview/datamodel/BinaryNode.js
+++ b/bin/jalview/datamodel/BinaryNode.js
@@ -1,112 +1,112 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this.$element = null;
-this.name = null;
-this.$left = null;
-this.$right = null;
-this.$parent = null;
-this.bootstrap = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "BinaryNode");
-Clazz.makeConstructor (c$,
-function () {
-this.$left = this.$right = this.$parent = null;
-this.bootstrap = 0;
-});
-Clazz.makeConstructor (c$,
-function (element, parent, name) {
-this.$element = element;
-this.$parent = parent;
-this.name = name;
-this.$left = this.$right = null;
-}, "~O,jalview.datamodel.BinaryNode,~S");
-Clazz.defineMethod (c$, "element",
-function () {
-return this.$element;
-});
-Clazz.defineMethod (c$, "setElement",
-function (v) {
-return this.$element = v;
-}, "~O");
-Clazz.defineMethod (c$, "left",
-function () {
-return this.$left;
-});
-Clazz.defineMethod (c$, "setLeft",
-function (n) {
-return this.$left = n;
-}, "jalview.datamodel.BinaryNode");
-Clazz.defineMethod (c$, "right",
-function () {
-return this.$right;
-});
-Clazz.defineMethod (c$, "setRight",
-function (n) {
-return this.$right = n;
-}, "jalview.datamodel.BinaryNode");
-Clazz.defineMethod (c$, "parent",
-function () {
-return this.$parent;
-});
-Clazz.defineMethod (c$, "setParent",
-function (n) {
-return this.$parent = n;
-}, "jalview.datamodel.BinaryNode");
-Clazz.defineMethod (c$, "isLeaf",
-function () {
-return (this.$left == null) && (this.$right == null);
-});
-Clazz.defineMethod (c$, "SetChildren",
-function (leftchild, rightchild) {
-if (leftchild != null) {
-this.setLeft (leftchild);
-leftchild.detach ();
-leftchild.setParent (this);
-}if (rightchild != null) {
-this.setRight (rightchild);
-rightchild.detach ();
-rightchild.setParent (this);
-}}, "jalview.datamodel.BinaryNode,jalview.datamodel.BinaryNode");
-Clazz.defineMethod (c$, "detach",
-function () {
-if (this.$parent != null) {
-if (this.$parent.$left === this) {
-this.$parent.$left = null;
-} else {
-if (this.$parent.$right === this) {
-this.$parent.$right = null;
-}}}this.$parent = null;
-return this;
-});
-Clazz.defineMethod (c$, "ascendLeft",
-function () {
-var c = this;
-do {
-c = c.parent ();
-} while ((c != null) && (c.left () != null) && !c.left ().isLeaf ());
-return c;
-});
-Clazz.defineMethod (c$, "ascendRight",
-function () {
-var c = this;
-do {
-c = c.parent ();
-} while ((c != null) && (c.right () != null) && !c.right ().isLeaf ());
-return c;
-});
-Clazz.defineMethod (c$, "setName",
-function (name) {
-this.name = name;
-}, "~S");
-Clazz.defineMethod (c$, "getName",
-function () {
-return this.name;
-});
-Clazz.defineMethod (c$, "setBootstrap",
-function (boot) {
-this.bootstrap = boot;
-}, "~N");
-Clazz.defineMethod (c$, "getBootstrap",
-function () {
-return this.bootstrap;
-});
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.$element = null;
+this.name = null;
+this.$left = null;
+this.$right = null;
+this.$parent = null;
+this.bootstrap = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "BinaryNode");
+Clazz.makeConstructor (c$,
+function () {
+this.$left = this.$right = this.$parent = null;
+this.bootstrap = 0;
+});
+Clazz.makeConstructor (c$,
+function (element, parent, name) {
+this.$element = element;
+this.$parent = parent;
+this.name = name;
+this.$left = this.$right = null;
+}, "~O,jalview.datamodel.BinaryNode,~S");
+Clazz.defineMethod (c$, "element",
+function () {
+return this.$element;
+});
+Clazz.defineMethod (c$, "setElement",
+function (v) {
+return this.$element = v;
+}, "~O");
+Clazz.defineMethod (c$, "left",
+function () {
+return this.$left;
+});
+Clazz.defineMethod (c$, "setLeft",
+function (n) {
+return this.$left = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "right",
+function () {
+return this.$right;
+});
+Clazz.defineMethod (c$, "setRight",
+function (n) {
+return this.$right = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "parent",
+function () {
+return this.$parent;
+});
+Clazz.defineMethod (c$, "setParent",
+function (n) {
+return this.$parent = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "isLeaf",
+function () {
+return (this.$left == null) && (this.$right == null);
+});
+Clazz.defineMethod (c$, "SetChildren",
+function (leftchild, rightchild) {
+if (leftchild != null) {
+this.setLeft (leftchild);
+leftchild.detach ();
+leftchild.setParent (this);
+}if (rightchild != null) {
+this.setRight (rightchild);
+rightchild.detach ();
+rightchild.setParent (this);
+}}, "jalview.datamodel.BinaryNode,jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "detach",
+function () {
+if (this.$parent != null) {
+if (this.$parent.$left === this) {
+this.$parent.$left = null;
+} else {
+if (this.$parent.$right === this) {
+this.$parent.$right = null;
+}}}this.$parent = null;
+return this;
+});
+Clazz.defineMethod (c$, "ascendLeft",
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && (c.left () != null) && !c.left ().isLeaf ());
+return c;
+});
+Clazz.defineMethod (c$, "ascendRight",
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && (c.right () != null) && !c.right ().isLeaf ());
+return c;
+});
+Clazz.defineMethod (c$, "setName",
+function (name) {
+this.name = name;
+}, "~S");
+Clazz.defineMethod (c$, "getName",
+function () {
+return this.name;
+});
+Clazz.defineMethod (c$, "setBootstrap",
+function (boot) {
+this.bootstrap = boot;
+}, "~N");
+Clazz.defineMethod (c$, "getBootstrap",
+function () {
+return this.bootstrap;
+});
diff --git a/bin/jalview/datamodel/BinarySequence.js b/bin/jalview/datamodel/BinarySequence.js
index 2285387..90b6b95 100644
--- a/bin/jalview/datamodel/BinarySequence.js
+++ b/bin/jalview/datamodel/BinarySequence.js
@@ -1,99 +1,99 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.Sequence", "java.lang.Exception"], "jalview.datamodel.BinarySequence", ["jalview.schemes.ResidueProperties"], function () {
-c$ = Clazz.decorateAsClass (function () {
-if (!Clazz.isClassDefined ("jalview.datamodel.BinarySequence.InvalidSequenceTypeException")) {
-jalview.datamodel.BinarySequence.$BinarySequence$InvalidSequenceTypeException$ ();
-}
-this.binary = null;
-this.dbinary = null;
-this.isNa = false;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "BinarySequence", jalview.datamodel.Sequence);
-Clazz.makeConstructor (c$,
-function (s, isNa) {
-Clazz.superConstructor (this, jalview.datamodel.BinarySequence, ["", s, 0, s.length]);
-this.isNa = isNa;
-}, "~S,~B");
-Clazz.defineMethod (c$, "initMatrixGetNoRes",
-($fz = function () {
-var nores = (this.isNa) ? 10 : 23;
-this.dbinary = Clazz.newDoubleArray (this.getSequence ().length * nores, 0);
-for (var i = 0; i < this.dbinary.length; i++) {
-this.dbinary[i] = 0.0;
-}
-return nores;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "getSymbolmatrix",
-($fz = function () {
-return (this.isNa) ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "encode",
-function () {
-var nores = this.initMatrixGetNoRes ();
-var sindex = this.getSymbolmatrix ();
-for (var i = 0; i < this.getSequence ().length; i++) {
-var aanum = nores - 1;
-try {
-aanum = sindex[this.getCharAt (i).charCodeAt (0)];
-} catch (e) {
-if (Clazz.exceptionOf (e, NullPointerException)) {
-aanum = nores - 1;
-} else {
-throw e;
-}
-}
-if (aanum >= nores) {
-aanum = nores - 1;
-}this.dbinary[(i * nores) + aanum] = 1.0;
-}
-});
-Clazz.defineMethod (c$, "matrixEncode",
-function (matrix) {
-if (this.isNa != matrix.isDNA ()) {
-throw Clazz.innerTypeInstance (jalview.datamodel.BinarySequence.InvalidSequenceTypeException, this, null, "matrix " + matrix.getClass ().getCanonicalName () + " is not a valid matrix for " + (this.isNa ? "nucleotide" : "protein") + "sequences");
-}this.matrixEncode (matrix.isDNA () ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex, matrix.getMatrix ());
-}, "jalview.schemes.ScoreMatrix");
-Clazz.defineMethod (c$, "matrixEncode",
-($fz = function (aaIndex, matrix) {
-var nores = this.initMatrixGetNoRes ();
-for (var i = 0, iSize = this.getSequence ().length; i < iSize; i++) {
-var aanum = nores - 1;
-try {
-aanum = aaIndex[this.getCharAt (i).charCodeAt (0)];
-} catch (e) {
-if (Clazz.exceptionOf (e, NullPointerException)) {
-aanum = nores - 1;
-} else {
-throw e;
-}
-}
-if (aanum >= nores) {
-aanum = nores - 1;
-}for (var j = 0; j < nores; j++) {
-this.dbinary[(i * nores) + j] = matrix[aanum][j];
-}
-}
-}, $fz.isPrivate = true, $fz), "~A,~A");
-Clazz.defineMethod (c$, "toBinaryString",
-function () {
-var out = "";
-for (var i = 0; i < this.binary.length; i++) {
-out += ( new Integer (this.binary[i])).toString ();
-if (i < (this.binary.length - 1)) {
-out += " ";
-}}
-return out;
-});
-Clazz.defineMethod (c$, "getDBinary",
-function () {
-return this.dbinary;
-});
-c$.$BinarySequence$InvalidSequenceTypeException$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel.BinarySequence, "InvalidSequenceTypeException", Exception);
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.Sequence", "java.lang.Exception"], "jalview.datamodel.BinarySequence", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.datamodel.BinarySequence.InvalidSequenceTypeException")) {
+jalview.datamodel.BinarySequence.$BinarySequence$InvalidSequenceTypeException$ ();
+}
+this.binary = null;
+this.dbinary = null;
+this.isNa = false;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "BinarySequence", jalview.datamodel.Sequence);
+Clazz.makeConstructor (c$,
+function (s, isNa) {
+Clazz.superConstructor (this, jalview.datamodel.BinarySequence, ["", s, 0, s.length]);
+this.isNa = isNa;
+}, "~S,~B");
+Clazz.defineMethod (c$, "initMatrixGetNoRes",
+($fz = function () {
+var nores = (this.isNa) ? 10 : 23;
+this.dbinary = Clazz.newDoubleArray (this.getSequence ().length * nores, 0);
+for (var i = 0; i < this.dbinary.length; i++) {
+this.dbinary[i] = 0.0;
+}
+return nores;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getSymbolmatrix",
+($fz = function () {
+return (this.isNa) ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "encode",
+function () {
+var nores = this.initMatrixGetNoRes ();
+var sindex = this.getSymbolmatrix ();
+for (var i = 0; i < this.getSequence ().length; i++) {
+var aanum = nores - 1;
+try {
+aanum = sindex[this.getCharAt (i).charCodeAt (0)];
+} catch (e) {
+if (Clazz.exceptionOf (e, NullPointerException)) {
+aanum = nores - 1;
+} else {
+throw e;
+}
+}
+if (aanum >= nores) {
+aanum = nores - 1;
+}this.dbinary[(i * nores) + aanum] = 1.0;
+}
+});
+Clazz.defineMethod (c$, "matrixEncode",
+function (matrix) {
+if (this.isNa != matrix.isDNA ()) {
+throw Clazz.innerTypeInstance (jalview.datamodel.BinarySequence.InvalidSequenceTypeException, this, null, "matrix " + matrix.getClass ().getCanonicalName () + " is not a valid matrix for " + (this.isNa ? "nucleotide" : "protein") + "sequences");
+}this.matrixEncode (matrix.isDNA () ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex, matrix.getMatrix ());
+}, "jalview.schemes.ScoreMatrix");
+Clazz.defineMethod (c$, "matrixEncode",
+($fz = function (aaIndex, matrix) {
+var nores = this.initMatrixGetNoRes ();
+for (var i = 0, iSize = this.getSequence ().length; i < iSize; i++) {
+var aanum = nores - 1;
+try {
+aanum = aaIndex[this.getCharAt (i).charCodeAt (0)];
+} catch (e) {
+if (Clazz.exceptionOf (e, NullPointerException)) {
+aanum = nores - 1;
+} else {
+throw e;
+}
+}
+if (aanum >= nores) {
+aanum = nores - 1;
+}for (var j = 0; j < nores; j++) {
+this.dbinary[(i * nores) + j] = matrix[aanum][j];
+}
+}
+}, $fz.isPrivate = true, $fz), "~A,~A");
+Clazz.defineMethod (c$, "toBinaryString",
+function () {
+var out = "";
+for (var i = 0; i < this.binary.length; i++) {
+out += ( new Integer (this.binary[i])).toString ();
+if (i < (this.binary.length - 1)) {
+out += " ";
+}}
+return out;
+});
+Clazz.defineMethod (c$, "getDBinary",
+function () {
+return this.dbinary;
+});
+c$.$BinarySequence$InvalidSequenceTypeException$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.BinarySequence, "InvalidSequenceTypeException", Exception);
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/datamodel/CigarArray.class b/bin/jalview/datamodel/CigarArray.class
index c31f49e0ff94cc06294168b9fca19d8be6fe8c31..10b48a9697e4714110db1112daea4bffd2eda569 100644
GIT binary patch
delta 42
zcmV+_0M-AsG_*9ZXb}OBvuP3U0S2G|5B~rmlfe@ilXnwq0~P=Wlc5t6v-uM|21IEN
A0RR91
delta 44
zcmV+{0Mq}pG_^FaXb}OCvuP3U0S2J}5dQ!nlfe@ilXnwq0}}uTlc5t60Rpr56Fdf7
Cs15@F
diff --git a/bin/jalview/datamodel/CigarArray.js b/bin/jalview/datamodel/CigarArray.js
index b18df9f..7f45aff 100644
--- a/bin/jalview/datamodel/CigarArray.js
+++ b/bin/jalview/datamodel/CigarArray.js
@@ -1,188 +1,188 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarArray", ["jalview.datamodel.CigarCigar", "$.SeqCigar", "java.lang.StringBuffer", "java.util.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.refCigars = null;
-this.seqcigararray = false;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "CigarArray", jalview.datamodel.CigarBase);
-Clazz.defineMethod (c$, "isSeqCigarArray",
-function () {
-return this.seqcigararray;
-});
-Clazz.makeConstructor (c$,
-function (cigars) {
-Clazz.superConstructor (this, jalview.datamodel.CigarArray);
-this.seqcigararray = true;
-if (cigars != null && cigars.length > 0) {
-this.refCigars = new Array (cigars.length);
-for (var c = 0; c < cigars.length; c++) {
-this.refCigars[c] = cigars[c];
-if (!((Clazz.instanceOf (cigars[c], jalview.datamodel.SeqCigar)) || Clazz.instanceOf (cigars[c], jalview.datamodel.CigarCigar))) {
-this.seqcigararray = false;
-}}
-}}, "~A");
-Clazz.makeConstructor (c$,
-function (alignment, columnSelection, selectionGroup) {
-this.construct (jalview.datamodel.CigarArray.constructSeqCigarArray (alignment, selectionGroup));
-this.constructFromAlignment (alignment, columnSelection != null ? columnSelection.getHiddenColumns () : null, selectionGroup);
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
-c$._calcStartEndBounds = Clazz.defineMethod (c$, "_calcStartEndBounds",
-($fz = function (alignment, selectionGroup) {
-var startend = Clazz.newIntArray (-1, [0, 0, 0]);
-if (selectionGroup != null) {
-startend[0] = selectionGroup.getSize ();
-startend[1] = selectionGroup.getStartRes ();
-startend[2] = selectionGroup.getEndRes ();
-} else {
-startend[0] = alignment.getHeight ();
-startend[2] = alignment.getWidth () - 1;
-}return startend;
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
-c$.constructSeqCigarArray = Clazz.defineMethod (c$, "constructSeqCigarArray",
-function (alignment, selectionGroup) {
-var seqs = null;
-var i;
-var iSize;
-var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
-var start = _startend[1];
-var end = _startend[2];
-if (selectionGroup != null) {
-iSize = selectionGroup.getSize ();
-seqs = selectionGroup.getSequencesInOrder (alignment);
-start = selectionGroup.getStartRes ();
-end = selectionGroup.getEndRes ();
-} else {
-iSize = alignment.getHeight ();
-seqs = alignment.getSequencesArray ();
-end = alignment.getWidth () - 1;
-}var selseqs = new Array (iSize);
-for (i = 0; i < iSize; i++) {
-selseqs[i] = new jalview.datamodel.SeqCigar (seqs[i], start, end);
-}
-return selseqs;
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
-Clazz.defineMethod (c$, "constructFromAlignment",
-($fz = function (alignment, list, selectionGroup) {
-var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
-var start = _startend[1];
-var end = _startend[2];
-if (list != null) {
-var region;
-var hideStart;
-var hideEnd;
-var last = start;
-for (var j = 0; new Boolean (last < end & j < list.size ()).valueOf (); j++) {
-region = list.get (j);
-hideStart = region[0];
-hideEnd = region[1];
-if (hideStart < last) {
-if (hideEnd > last) {
-hideStart = last;
-} else {
-continue;
-}}if (hideStart > end) {
-break;
-}if (hideEnd > end) {
-hideEnd = end;
-}if (hideStart > hideEnd) {
-break;
-}if (last < hideStart) {
-this.addOperation ('M', hideStart - last);
-}this.addOperation ('D', 1 + hideEnd - hideStart);
-last = hideEnd + 1;
-}
-if (last < end) {
-this.addOperation ('M', end - last + 1);
-}} else {
-this.addOperation ('M', end - start + 1);
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");
-Clazz.defineMethod (c$, "getArrayofSequenceAndDeletions",
-function (GapChar) {
-if (this.refCigars == null || this.refCigars.length == 0 || this.length == 0) {
-return null;
-}var sqanddels = new Array (this.refCigars.length);
-for (var c = 0; c < this.refCigars.length; c++) {
-var refString = this.refCigars[c].getSequenceString (GapChar);
-if (refString != null) {
-sqanddels[c] = this.getSequenceAndDeletions (refString, GapChar);
-} else {
-sqanddels[c] = null;
-}}
-return sqanddels;
-}, "~S");
-Clazz.defineMethod (c$, "getSequenceString",
-function (GapChar) {
-if (this.length == 0 || this.refCigars == null) {
-return "";
-}var seqStrings = new StringBuffer ();
-var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
-for (var c = 0; c < this.refCigars.length; c++) {
-if (sqanddels[c] != null) {
-seqStrings.append (sqanddels[c][0]);
-sqanddels[c][0] = null;
-}seqStrings.append ('\n');
-}
-return seqStrings.toString ();
-}, "~S");
-Clazz.defineMethod (c$, "getSequenceStrings",
-function (GapChar) {
-if (this.length == 0 || this.refCigars == null || this.refCigars.length == 0) {
-return null;
-}var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
-var seqs = new Array (sqanddels.length);
-for (var c = 0; c < this.refCigars.length; c++) {
-seqs[c] = sqanddels[c][0];
-}
-return seqs;
-}, "~S");
-Clazz.defineMethod (c$, "applyDeletions",
-function () {
-var delpos = null;
-if (this.length == 0) {
-return null;
-}var cursor = 0;
-var vcursor = 0;
-var offset = 0;
-var i = 0;
-while (i < this.length) {
-if (this.operation[i] != 'D') {
-if (this.operation[i] == 'M') {
-cursor += this.range[i];
-}vcursor += this.range[i++];
-} else {
-if (delpos == null) {
-delpos = new java.util.Vector ();
-}var delstart = cursor;
-var delend = cursor + this.range[i] - 1;
-delpos.addElement ( Clazz.newIntArray (-1, [vcursor + offset, this.range[i]]));
-offset += this.range[i] - 1;
-System.arraycopy (this.operation, i + 1, this.operation, i, this.length - i);
-System.arraycopy (this.range, i + 1, this.range, i, this.length - i);
-this.length--;
-for (var s = 0; s < this.refCigars.length; s++) {
-var d = this.refCigars[s].deleteRange (delstart, delend);
-}
-}}
-if (delpos != null) {
-var pos = Clazz.newIntArray (delpos.size () * 2, 0);
-for (var k = 0, l = delpos.size (); k < l; k++) {
-var dr = (delpos.elementAt (k));
-pos[k * 2] = dr[0];
-pos[k * 2 + 1] = dr[1];
-delpos.setElementAt (null, k);
-}
-delpos = null;
-return pos;
-}return null;
-});
-Clazz.defineMethod (c$, "getSeqCigarArray",
-function () {
-if (!this.isSeqCigarArray ()) {
-return null;
-}var sa = new Array (this.refCigars.length);
-for (var i = 0; i < this.refCigars.length; i++) {
-sa[i] = this.refCigars[i];
-}
-return sa;
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarArray", ["jalview.datamodel.CigarCigar", "$.SeqCigar", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.refCigars = null;
+this.seqcigararray = false;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "CigarArray", jalview.datamodel.CigarBase);
+Clazz.defineMethod (c$, "isSeqCigarArray",
+function () {
+return this.seqcigararray;
+});
+Clazz.makeConstructor (c$,
+function (cigars) {
+Clazz.superConstructor (this, jalview.datamodel.CigarArray);
+this.seqcigararray = true;
+if (cigars != null && cigars.length > 0) {
+this.refCigars = new Array (cigars.length);
+for (var c = 0; c < cigars.length; c++) {
+this.refCigars[c] = cigars[c];
+if (!((Clazz.instanceOf (cigars[c], jalview.datamodel.SeqCigar)) || Clazz.instanceOf (cigars[c], jalview.datamodel.CigarCigar))) {
+this.seqcigararray = false;
+}}
+}}, "~A");
+Clazz.makeConstructor (c$,
+function (alignment, columnSelection, selectionGroup) {
+this.construct (jalview.datamodel.CigarArray.constructSeqCigarArray (alignment, selectionGroup));
+this.constructFromAlignment (alignment, columnSelection != null ? columnSelection.getHiddenColumns () : null, selectionGroup);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+c$._calcStartEndBounds = Clazz.defineMethod (c$, "_calcStartEndBounds",
+($fz = function (alignment, selectionGroup) {
+var startend = Clazz.newIntArray (-1, [0, 0, 0]);
+if (selectionGroup != null) {
+startend[0] = selectionGroup.getSize ();
+startend[1] = selectionGroup.getStartRes ();
+startend[2] = selectionGroup.getEndRes ();
+} else {
+startend[0] = alignment.getHeight ();
+startend[2] = alignment.getWidth () - 1;
+}return startend;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+c$.constructSeqCigarArray = Clazz.defineMethod (c$, "constructSeqCigarArray",
+function (alignment, selectionGroup) {
+var seqs = null;
+var i;
+var iSize;
+var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
+var start = _startend[1];
+var end = _startend[2];
+if (selectionGroup != null) {
+iSize = selectionGroup.getSize ();
+seqs = selectionGroup.getSequencesInOrder (alignment);
+start = selectionGroup.getStartRes ();
+end = selectionGroup.getEndRes ();
+} else {
+iSize = alignment.getHeight ();
+seqs = alignment.getSequencesArray ();
+end = alignment.getWidth () - 1;
+}var selseqs = new Array (iSize);
+for (i = 0; i < iSize; i++) {
+selseqs[i] = new jalview.datamodel.SeqCigar (seqs[i], start, end);
+}
+return selseqs;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "constructFromAlignment",
+($fz = function (alignment, list, selectionGroup) {
+var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
+var start = _startend[1];
+var end = _startend[2];
+if (list != null) {
+var region;
+var hideStart;
+var hideEnd;
+var last = start;
+for (var j = 0; new Boolean (last < end & j < list.size ()).valueOf (); j++) {
+region = list.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < last) {
+if (hideEnd > last) {
+hideStart = last;
+} else {
+continue;
+}}if (hideStart > end) {
+break;
+}if (hideEnd > end) {
+hideEnd = end;
+}if (hideStart > hideEnd) {
+break;
+}if (last < hideStart) {
+this.addOperation ('M', hideStart - last);
+}this.addOperation ('D', 1 + hideEnd - hideStart);
+last = hideEnd + 1;
+}
+if (last < end) {
+this.addOperation ('M', end - last + 1);
+}} else {
+this.addOperation ('M', end - start + 1);
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "getArrayofSequenceAndDeletions",
+function (GapChar) {
+if (this.refCigars == null || this.refCigars.length == 0 || this.length == 0) {
+return null;
+}var sqanddels = new Array (this.refCigars.length);
+for (var c = 0; c < this.refCigars.length; c++) {
+var refString = this.refCigars[c].getSequenceString (GapChar);
+if (refString != null) {
+sqanddels[c] = this.getSequenceAndDeletions (refString, GapChar);
+} else {
+sqanddels[c] = null;
+}}
+return sqanddels;
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceString",
+function (GapChar) {
+if (this.length == 0 || this.refCigars == null) {
+return "";
+}var seqStrings = new StringBuffer ();
+var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
+for (var c = 0; c < this.refCigars.length; c++) {
+if (sqanddels[c] != null) {
+seqStrings.append (sqanddels[c][0]);
+sqanddels[c][0] = null;
+}seqStrings.append ('\n');
+}
+return seqStrings.toString ();
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceStrings",
+function (GapChar) {
+if (this.length == 0 || this.refCigars == null || this.refCigars.length == 0) {
+return null;
+}var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
+var seqs = new Array (sqanddels.length);
+for (var c = 0; c < this.refCigars.length; c++) {
+seqs[c] = sqanddels[c][0];
+}
+return seqs;
+}, "~S");
+Clazz.defineMethod (c$, "applyDeletions",
+function () {
+var delpos = null;
+if (this.length == 0) {
+return null;
+}var cursor = 0;
+var vcursor = 0;
+var offset = 0;
+var i = 0;
+while (i < this.length) {
+if (this.operation[i] != 'D') {
+if (this.operation[i] == 'M') {
+cursor += this.range[i];
+}vcursor += this.range[i++];
+} else {
+if (delpos == null) {
+delpos = new java.util.Vector ();
+}var delstart = cursor;
+var delend = cursor + this.range[i] - 1;
+delpos.addElement ( Clazz.newIntArray (-1, [vcursor + offset, this.range[i]]));
+offset += this.range[i] - 1;
+System.arraycopy (this.operation, i + 1, this.operation, i, this.length - i);
+System.arraycopy (this.range, i + 1, this.range, i, this.length - i);
+this.length--;
+for (var s = 0; s < this.refCigars.length; s++) {
+var d = this.refCigars[s].deleteRange (delstart, delend);
+}
+}}
+if (delpos != null) {
+var pos = Clazz.newIntArray (delpos.size () * 2, 0);
+for (var k = 0, l = delpos.size (); k < l; k++) {
+var dr = (delpos.elementAt (k));
+pos[k * 2] = dr[0];
+pos[k * 2 + 1] = dr[1];
+delpos.setElementAt (null, k);
+}
+delpos = null;
+return pos;
+}return null;
+});
+Clazz.defineMethod (c$, "getSeqCigarArray",
+function () {
+if (!this.isSeqCigarArray ()) {
+return null;
+}var sa = new Array (this.refCigars.length);
+for (var i = 0; i < this.refCigars.length; i++) {
+sa[i] = this.refCigars[i];
+}
+return sa;
+});
+});
diff --git a/bin/jalview/datamodel/CigarBase.class b/bin/jalview/datamodel/CigarBase.class
index d6583684f0ee21b41a054f760db8b730d934db05..7417a4dce3c56ea2cde6181993333590f8121bc5 100644
GIT binary patch
delta 36
scmX?ObJAwRF;T|i&BsL@n3;_j1SfMzs&jCN@hJUb5D?jHBPqZN0NTL`kpKVy
delta 39
vcmX?UbH--FF;T{{&BsL@n3+u(L?&}ds&lh42{Z91{bCRhWZG;gDZmN<@=OVr
diff --git a/bin/jalview/datamodel/CigarBase.js b/bin/jalview/datamodel/CigarBase.js
index bd75085..5b88b3f 100644
--- a/bin/jalview/datamodel/CigarBase.js
+++ b/bin/jalview/datamodel/CigarBase.js
@@ -1,310 +1,310 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.CigarBase", ["jalview.util.MessageManager", "java.lang.Error", "$.Exception", "$.StringBuffer", "java.util.Vector", "javajs.util.AU"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.length = 0;
-this._inc_length = 10;
-this.operation = null;
-this.range = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "CigarBase");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.defineMethod (c$, "getSequenceAndDeletions",
-function (reference, GapChar) {
-var rlength = 0;
-var deletions = javajs.util.AU.newInt2 (this.length);
-var trunc_deletions = null;
-var sq = new StringBuffer ();
-var cursor = 0;
-var alcursor = 0;
-var start = 0;
-var startpos = 0;
-var end = 0;
-var endpos = 0;
-var delcount = -1;
-var consecutive_del = false;
-if (this.length == 0) {
-return null;
-}if (reference != null) {
-rlength = reference.length;
-}var modstart = true;
-for (var i = 0; i < this.length; i++) {
-switch (this.operation[i]) {
-case 'D':
-if (!consecutive_del) {
-deletions[++delcount] = Clazz.newIntArray (-1, [cursor, 0, alcursor]);
-}cursor += this.range[i];
-deletions[delcount][1] = cursor - 1;
-consecutive_del = true;
-break;
-case 'I':
-consecutive_del = false;
-for (var r = 0; r < this.range[i]; r++) {
-sq.append (GapChar);
-alcursor++;
-}
-break;
-case 'M':
-consecutive_del = false;
-if (modstart) {
-start = cursor;
-startpos = alcursor;
-modstart = false;
-}if (reference != null) {
-var sbend = cursor + this.range[i];
-if (sbend > rlength) {
-sq.append (reference.substring (cursor, rlength));
-while (sbend-- >= rlength) {
-sq.append (GapChar);
-}
-} else {
-sq.append (reference.substring (cursor, sbend));
-}}alcursor += this.range[i];
-cursor += this.range[i];
-end = cursor - 1;
-endpos = alcursor;
-break;
-default:
-throw new Error (jalview.util.MessageManager.formatMessage ("error.unknown_seq_cigar_operation", Clazz.newArray (-1, [ new StringBuffer (this.operation[i].charCodeAt (0)).toString ()])));
-}
-}
-if (++delcount > 0) {
-trunc_deletions = Clazz.newIntArray (delcount, 0);
-System.arraycopy (deletions, 0, trunc_deletions, 0, delcount);
-}deletions = null;
-return Clazz.newArray (-1, [((reference != null) ? sq.toString () : null), Clazz.newIntArray (-1, [start, startpos, end, endpos]), trunc_deletions]);
-}, "~S,~S");
-Clazz.defineMethod (c$, "compact_operations",
-function () {
-var i = 1;
-if (this.operation == null) {
-return;
-}var last = this.operation[0];
-while (i < this.length) {
-if (last == this.operation[i]) {
-this.range[i - 1] += this.range[i];
-var r = this.length - i;
-if (r > 0) {
-System.arraycopy (this.range, i + 1, this.range, i, r);
-System.arraycopy (this.operation, i + 1, this.operation, i, r);
-}this.length--;
-} else {
-last = this.operation[i++];
-}}
-});
-c$.parseCigarString = Clazz.defineMethod (c$, "parseCigarString",
-function (cigarString) {
-var ops = 0;
-for (var i = 0, l = cigarString.length; i < l; i++) {
-var c = cigarString.charAt (i);
-if (c == 'M' || c.charCodeAt (0) == (45) || c == 'I' || c.charCodeAt (0) == (41) || c == 'D' || c.charCodeAt (0) == (36)) {
-ops++;
-}}
-var operation = Clazz.newCharArray (ops, '\0');
-var range = Clazz.newIntArray (ops, 0);
-var op = 0;
-var i = 0;
-var l = cigarString.length;
-while (i < l) {
-var c;
-var j = i;
-do {
-c = cigarString.charAt (j++);
-} while (c >= '0' && c <= '9' && j < l);
-if (j >= l && c >= '0' && c <= '9') {
-throw new Exception (jalview.util.MessageManager.getString ("exception.unterminated_cigar_string"));
-}try {
-var rangeint = cigarString.substring (i, j - 1);
-range[op] = Integer.parseInt (rangeint);
-i = j;
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_bug_parse_cigar_string"));
-} else {
-throw e;
-}
-}
-if (c >= 'a' && c <= 'z') {
-c = String.fromCharCode (c.charCodeAt (0) - 32);
-}if ((c == 'M' || c == 'I' || c == 'D')) {
-operation[op++] = c;
-} else {
-throw new Exception (jalview.util.MessageManager.formatMessage ("exception.unexpected_operation_cigar_string_pos", Clazz.newArray (-1, [ new StringBuffer (c.charCodeAt (0)).toString (), Integer.$valueOf (i).toString (), cigarString])));
-}}
-return Clazz.newArray (-1, [operation, range]);
-}, "~S");
-Clazz.defineMethod (c$, "addOperation",
-function (op, range) {
-if (op >= 'a' && op <= 'z') {
-op = String.fromCharCode (op.charCodeAt (0) - 32);
-}if (op != 'M' && op != 'D' && op != 'I') {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_invalid_operation_string"));
-}if (range == 0) {
-return;
-}if (range < 0) {
-throw new Error (jalview.util.MessageManager.getString ("error.invalid_range_string"));
-}var lngth = 0;
-if (this.operation == null) {
-this.operation = Clazz.newCharArray (this._inc_length, '\0');
-this.range = Clazz.newIntArray (this._inc_length, 0);
-}if (this.length + 1 == this.operation.length) {
-var ops = this.operation;
-this.operation = Clazz.newCharArray (this.length + 1 + this._inc_length, '\0');
-System.arraycopy (ops, 0, this.operation, 0, this.length);
-ops = null;
-var rng = this.range;
-this.range = Clazz.newIntArray (this.length + 1 + this._inc_length, 0);
-System.arraycopy (rng, 0, this.range, 0, this.length);
-rng = null;
-}if ((this.length > 0) && (this.operation[this.length - 1] == op)) {
-this.length--;
-} else {
-this.range[this.length] = 0;
-}this.operation[this.length] = op;
-this.range[this.length++] += range;
-}, "~S,~N");
-Clazz.defineMethod (c$, "deleteRange",
-function (start, end) {
-var deleted = 0;
-if (this.length == 0) {
-return deleted;
-}if (start < 0 || start > end) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_delete_range_out_of_bounds"));
-}var cursor = 0;
-var rlength = 1 + end - start;
-var oldlen = this.length;
-var o = 0;
-var editing = false;
-var oldops = this.operation;
-var oldrange = this.range;
-this.length = 0;
-this.operation = null;
-this.range = null;
-this.compact_operations ();
-while (o < oldlen && cursor <= end && rlength > 0) {
-if (oldops[o] == 'D') {
-this.addDeleted (oldrange[o++]);
-continue;
-}var remain = oldrange[o];
-if (!editing) {
-if ((cursor + remain) <= start) {
-this.addOperation (oldops[o], oldrange[o]);
-cursor += oldrange[o++];
-continue;
-}editing = true;
-if (start - cursor > 0) {
-this.addOperation (oldops[o], start - cursor);
-remain -= start - cursor;
-}}if (o < oldlen && editing && rlength > 0 && remain > 0) {
-switch (oldops[o]) {
-case 'M':
-if (rlength > remain) {
-this.addDeleted (remain);
-deleted += remain;
-} else {
-deleted += rlength;
-this.addDeleted (rlength);
-if (remain - rlength > 0) {
-this.addOperation ('M', remain - rlength);
-}rlength = 0;
-remain = 0;
-}break;
-case 'I':
-if (remain - rlength > 0) {
-this.addInsertion (remain - rlength);
-rlength = 0;
-}break;
-case 'D':
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error"));
-default:
-throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_unknown_operation", Clazz.newArray (-1, [ new StringBuffer (oldops[o].charCodeAt (0)).toString ()])));
-}
-rlength -= remain;
-remain = oldrange[++o];
-}}
-while (o < oldlen) {
-this.addOperation (oldops[o], oldrange[o++]);
-}
-return deleted;
-}, "~N,~N");
-Clazz.defineMethod (c$, "hasDeletedRegions",
-function () {
-for (var i = 0; i < this.length; i++) {
-if (this.operation[i] == 'D') {
-return true;
-}}
-return false;
-});
-Clazz.defineMethod (c$, "getDeletedRegions",
-function () {
-if (this.length == 0) {
-return null;
-}var dr = new java.util.Vector ();
-var cursor = 0;
-var vcursor = 0;
-for (var i = 0; i < this.length; i++) {
-switch (this.operation[i]) {
-case 'M':
-cursor += this.range[i];
-case 'I':
-vcursor += this.range[i];
-break;
-case 'D':
-dr.addElement ( Clazz.newIntArray (-1, [vcursor, cursor, this.range[i]]));
-cursor += this.range[i];
-}
-}
-if (dr.size () == 0) {
-return null;
-}var delregions = Clazz.newIntArray (dr.size () * 3, 0);
-for (var i = 0, l = dr.size (); i < l; i++) {
-var reg = dr.elementAt (i);
-delregions[i * 3] = reg[0];
-delregions[i * 3 + 1] = reg[1];
-delregions[i * 3 + 2] = reg[2];
-}
-return delregions;
-});
-Clazz.defineMethod (c$, "getFullWidth",
-function () {
-var w = 0;
-if (this.range != null) {
-for (var i = 0; i < this.length; i++) {
-w += this.range[i];
-}
-}return w;
-});
-Clazz.defineMethod (c$, "getWidth",
-function () {
-var w = 0;
-if (this.range != null) {
-for (var i = 0; i < this.length; i++) {
-if (this.operation[i] == 'M' || this.operation[i] == 'I') {
-w += this.range[i];
-}}
-}return w;
-});
-Clazz.defineMethod (c$, "addInsertion",
-function (range) {
-this.addOperation ('I', range);
-}, "~N");
-Clazz.defineMethod (c$, "addDeleted",
-function (range) {
-this.addOperation ('D', range);
-}, "~N");
-Clazz.defineMethod (c$, "getCigarstring",
-function () {
-var cigarString = new StringBuffer ();
-for (var i = 0; i < this.length; i++) {
-cigarString.append ("" + this.range[i]);
-cigarString.append (this.operation[i]);
-}
-return cigarString.toString ();
-});
-Clazz.defineStatics (c$,
-"D", 'D',
-"I", 'I',
-"M", 'M',
-"_case_shift", String.fromCharCode (32));
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.CigarBase", ["jalview.util.MessageManager", "java.lang.Error", "$.Exception", "$.StringBuffer", "java.util.Vector", "javajs.util.AU"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.length = 0;
+this._inc_length = 10;
+this.operation = null;
+this.range = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "CigarBase");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.defineMethod (c$, "getSequenceAndDeletions",
+function (reference, GapChar) {
+var rlength = 0;
+var deletions = javajs.util.AU.newInt2 (this.length);
+var trunc_deletions = null;
+var sq = new StringBuffer ();
+var cursor = 0;
+var alcursor = 0;
+var start = 0;
+var startpos = 0;
+var end = 0;
+var endpos = 0;
+var delcount = -1;
+var consecutive_del = false;
+if (this.length == 0) {
+return null;
+}if (reference != null) {
+rlength = reference.length;
+}var modstart = true;
+for (var i = 0; i < this.length; i++) {
+switch (this.operation[i]) {
+case 'D':
+if (!consecutive_del) {
+deletions[++delcount] = Clazz.newIntArray (-1, [cursor, 0, alcursor]);
+}cursor += this.range[i];
+deletions[delcount][1] = cursor - 1;
+consecutive_del = true;
+break;
+case 'I':
+consecutive_del = false;
+for (var r = 0; r < this.range[i]; r++) {
+sq.append (GapChar);
+alcursor++;
+}
+break;
+case 'M':
+consecutive_del = false;
+if (modstart) {
+start = cursor;
+startpos = alcursor;
+modstart = false;
+}if (reference != null) {
+var sbend = cursor + this.range[i];
+if (sbend > rlength) {
+sq.append (reference.substring (cursor, rlength));
+while (sbend-- >= rlength) {
+sq.append (GapChar);
+}
+} else {
+sq.append (reference.substring (cursor, sbend));
+}}alcursor += this.range[i];
+cursor += this.range[i];
+end = cursor - 1;
+endpos = alcursor;
+break;
+default:
+throw new Error (jalview.util.MessageManager.formatMessage ("error.unknown_seq_cigar_operation", Clazz.newArray (-1, [ new StringBuffer (this.operation[i].charCodeAt (0)).toString ()])));
+}
+}
+if (++delcount > 0) {
+trunc_deletions = Clazz.newIntArray (delcount, 0);
+System.arraycopy (deletions, 0, trunc_deletions, 0, delcount);
+}deletions = null;
+return Clazz.newArray (-1, [((reference != null) ? sq.toString () : null), Clazz.newIntArray (-1, [start, startpos, end, endpos]), trunc_deletions]);
+}, "~S,~S");
+Clazz.defineMethod (c$, "compact_operations",
+function () {
+var i = 1;
+if (this.operation == null) {
+return;
+}var last = this.operation[0];
+while (i < this.length) {
+if (last == this.operation[i]) {
+this.range[i - 1] += this.range[i];
+var r = this.length - i;
+if (r > 0) {
+System.arraycopy (this.range, i + 1, this.range, i, r);
+System.arraycopy (this.operation, i + 1, this.operation, i, r);
+}this.length--;
+} else {
+last = this.operation[i++];
+}}
+});
+c$.parseCigarString = Clazz.defineMethod (c$, "parseCigarString",
+function (cigarString) {
+var ops = 0;
+for (var i = 0, l = cigarString.length; i < l; i++) {
+var c = cigarString.charAt (i);
+if (c == 'M' || c.charCodeAt (0) == (45) || c == 'I' || c.charCodeAt (0) == (41) || c == 'D' || c.charCodeAt (0) == (36)) {
+ops++;
+}}
+var operation = Clazz.newCharArray (ops, '\0');
+var range = Clazz.newIntArray (ops, 0);
+var op = 0;
+var i = 0;
+var l = cigarString.length;
+while (i < l) {
+var c;
+var j = i;
+do {
+c = cigarString.charAt (j++);
+} while (c >= '0' && c <= '9' && j < l);
+if (j >= l && c >= '0' && c <= '9') {
+throw new Exception (jalview.util.MessageManager.getString ("exception.unterminated_cigar_string"));
+}try {
+var rangeint = cigarString.substring (i, j - 1);
+range[op] = Integer.parseInt (rangeint);
+i = j;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_bug_parse_cigar_string"));
+} else {
+throw e;
+}
+}
+if (c >= 'a' && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - 32);
+}if ((c == 'M' || c == 'I' || c == 'D')) {
+operation[op++] = c;
+} else {
+throw new Exception (jalview.util.MessageManager.formatMessage ("exception.unexpected_operation_cigar_string_pos", Clazz.newArray (-1, [ new StringBuffer (c.charCodeAt (0)).toString (), Integer.$valueOf (i).toString (), cigarString])));
+}}
+return Clazz.newArray (-1, [operation, range]);
+}, "~S");
+Clazz.defineMethod (c$, "addOperation",
+function (op, range) {
+if (op >= 'a' && op <= 'z') {
+op = String.fromCharCode (op.charCodeAt (0) - 32);
+}if (op != 'M' && op != 'D' && op != 'I') {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_invalid_operation_string"));
+}if (range == 0) {
+return;
+}if (range < 0) {
+throw new Error (jalview.util.MessageManager.getString ("error.invalid_range_string"));
+}var lngth = 0;
+if (this.operation == null) {
+this.operation = Clazz.newCharArray (this._inc_length, '\0');
+this.range = Clazz.newIntArray (this._inc_length, 0);
+}if (this.length + 1 == this.operation.length) {
+var ops = this.operation;
+this.operation = Clazz.newCharArray (this.length + 1 + this._inc_length, '\0');
+System.arraycopy (ops, 0, this.operation, 0, this.length);
+ops = null;
+var rng = this.range;
+this.range = Clazz.newIntArray (this.length + 1 + this._inc_length, 0);
+System.arraycopy (rng, 0, this.range, 0, this.length);
+rng = null;
+}if ((this.length > 0) && (this.operation[this.length - 1] == op)) {
+this.length--;
+} else {
+this.range[this.length] = 0;
+}this.operation[this.length] = op;
+this.range[this.length++] += range;
+}, "~S,~N");
+Clazz.defineMethod (c$, "deleteRange",
+function (start, end) {
+var deleted = 0;
+if (this.length == 0) {
+return deleted;
+}if (start < 0 || start > end) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_delete_range_out_of_bounds"));
+}var cursor = 0;
+var rlength = 1 + end - start;
+var oldlen = this.length;
+var o = 0;
+var editing = false;
+var oldops = this.operation;
+var oldrange = this.range;
+this.length = 0;
+this.operation = null;
+this.range = null;
+this.compact_operations ();
+while (o < oldlen && cursor <= end && rlength > 0) {
+if (oldops[o] == 'D') {
+this.addDeleted (oldrange[o++]);
+continue;
+}var remain = oldrange[o];
+if (!editing) {
+if ((cursor + remain) <= start) {
+this.addOperation (oldops[o], oldrange[o]);
+cursor += oldrange[o++];
+continue;
+}editing = true;
+if (start - cursor > 0) {
+this.addOperation (oldops[o], start - cursor);
+remain -= start - cursor;
+}}if (o < oldlen && editing && rlength > 0 && remain > 0) {
+switch (oldops[o]) {
+case 'M':
+if (rlength > remain) {
+this.addDeleted (remain);
+deleted += remain;
+} else {
+deleted += rlength;
+this.addDeleted (rlength);
+if (remain - rlength > 0) {
+this.addOperation ('M', remain - rlength);
+}rlength = 0;
+remain = 0;
+}break;
+case 'I':
+if (remain - rlength > 0) {
+this.addInsertion (remain - rlength);
+rlength = 0;
+}break;
+case 'D':
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error"));
+default:
+throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_unknown_operation", Clazz.newArray (-1, [ new StringBuffer (oldops[o].charCodeAt (0)).toString ()])));
+}
+rlength -= remain;
+remain = oldrange[++o];
+}}
+while (o < oldlen) {
+this.addOperation (oldops[o], oldrange[o++]);
+}
+return deleted;
+}, "~N,~N");
+Clazz.defineMethod (c$, "hasDeletedRegions",
+function () {
+for (var i = 0; i < this.length; i++) {
+if (this.operation[i] == 'D') {
+return true;
+}}
+return false;
+});
+Clazz.defineMethod (c$, "getDeletedRegions",
+function () {
+if (this.length == 0) {
+return null;
+}var dr = new java.util.Vector ();
+var cursor = 0;
+var vcursor = 0;
+for (var i = 0; i < this.length; i++) {
+switch (this.operation[i]) {
+case 'M':
+cursor += this.range[i];
+case 'I':
+vcursor += this.range[i];
+break;
+case 'D':
+dr.addElement ( Clazz.newIntArray (-1, [vcursor, cursor, this.range[i]]));
+cursor += this.range[i];
+}
+}
+if (dr.size () == 0) {
+return null;
+}var delregions = Clazz.newIntArray (dr.size () * 3, 0);
+for (var i = 0, l = dr.size (); i < l; i++) {
+var reg = dr.elementAt (i);
+delregions[i * 3] = reg[0];
+delregions[i * 3 + 1] = reg[1];
+delregions[i * 3 + 2] = reg[2];
+}
+return delregions;
+});
+Clazz.defineMethod (c$, "getFullWidth",
+function () {
+var w = 0;
+if (this.range != null) {
+for (var i = 0; i < this.length; i++) {
+w += this.range[i];
+}
+}return w;
+});
+Clazz.defineMethod (c$, "getWidth",
+function () {
+var w = 0;
+if (this.range != null) {
+for (var i = 0; i < this.length; i++) {
+if (this.operation[i] == 'M' || this.operation[i] == 'I') {
+w += this.range[i];
+}}
+}return w;
+});
+Clazz.defineMethod (c$, "addInsertion",
+function (range) {
+this.addOperation ('I', range);
+}, "~N");
+Clazz.defineMethod (c$, "addDeleted",
+function (range) {
+this.addOperation ('D', range);
+}, "~N");
+Clazz.defineMethod (c$, "getCigarstring",
+function () {
+var cigarString = new StringBuffer ();
+for (var i = 0; i < this.length; i++) {
+cigarString.append ("" + this.range[i]);
+cigarString.append (this.operation[i]);
+}
+return cigarString.toString ();
+});
+Clazz.defineStatics (c$,
+"D", 'D',
+"I", 'I',
+"M", 'M',
+"_case_shift", String.fromCharCode (32));
+});
diff --git a/bin/jalview/datamodel/CigarCigar.js b/bin/jalview/datamodel/CigarCigar.js
index 12f3e39..9448de4 100644
--- a/bin/jalview/datamodel/CigarCigar.js
+++ b/bin/jalview/datamodel/CigarCigar.js
@@ -1,22 +1,22 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.CigarCigar", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.refCigar = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "CigarCigar", jalview.datamodel.CigarSimple);
-Clazz.makeConstructor (c$,
-function (cigar) {
-Clazz.superConstructor (this, jalview.datamodel.CigarCigar);
-this.refCigar = cigar;
-}, "jalview.datamodel.SeqCigar");
-Clazz.overrideMethod (c$, "getSequenceString",
-function (GapChar) {
-if (this.length == 0) {
-return "";
-}var refString = this.refCigar.getSequenceString (GapChar);
-if (refString != null) {
-return (this.length == 0) ? "" : this.getSequenceAndDeletions (refString, GapChar)[0];
-} else {
-return null;
-}}, "~S");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.CigarCigar", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.refCigar = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "CigarCigar", jalview.datamodel.CigarSimple);
+Clazz.makeConstructor (c$,
+function (cigar) {
+Clazz.superConstructor (this, jalview.datamodel.CigarCigar);
+this.refCigar = cigar;
+}, "jalview.datamodel.SeqCigar");
+Clazz.overrideMethod (c$, "getSequenceString",
+function (GapChar) {
+if (this.length == 0) {
+return "";
+}var refString = this.refCigar.getSequenceString (GapChar);
+if (refString != null) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (refString, GapChar)[0];
+} else {
+return null;
+}}, "~S");
+});
diff --git a/bin/jalview/datamodel/CigarSimple.js b/bin/jalview/datamodel/CigarSimple.js
index 776f62a..1f9da1c 100644
--- a/bin/jalview/datamodel/CigarSimple.js
+++ b/bin/jalview/datamodel/CigarSimple.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarSimple", null, function () {
-c$ = Clazz.declareType (jalview.datamodel, "CigarSimple", jalview.datamodel.CigarBase);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarSimple", null, function () {
+c$ = Clazz.declareType (jalview.datamodel, "CigarSimple", jalview.datamodel.CigarBase);
+});
diff --git a/bin/jalview/datamodel/ColumnSelection.class b/bin/jalview/datamodel/ColumnSelection.class
index c770c9670bb85cffc2b1fd3acb2b1438f78354df..e80a2622eb6f7acded9bcb68422cc3aaa61e76e5 100644
GIT binary patch
delta 120
zcmZpi%h)}aaf5{_WAJ86)lW>!2@GPB^)!@}S^qG|FiNuWIWYcV;A2FP+Kj>ujLfo<
z{~4Gj8)`^w?$-!VX6)Vkz&nOX-GG7X4+9ragEFI(h=|C423rPpb_PavMgw-n1B{I9
Q3=h~D;ushwhx+LN02jm?v;Y7A
delta 102
zcmeC4%h))Vaf5{_WB6uE)lW>!DGXAR^)!@}nV9}C$S_JWG4VMt{$b!_M35ScOu`O~
x%u-C7^EGmm8S6LS@s44VRAS)%!@vbps>~=QA|mpa!HS*X0XsvS)8u$R9RLuT7@`0G
diff --git a/bin/jalview/datamodel/ColumnSelection.js b/bin/jalview/datamodel/ColumnSelection.js
index 6cab54c..b9e3e99 100644
--- a/bin/jalview/datamodel/ColumnSelection.js
+++ b/bin/jalview/datamodel/ColumnSelection.js
@@ -1,682 +1,682 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.util.Vector"], "jalview.datamodel.ColumnSelection", ["jalview.util.ShiftList", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.lang.StringBuffer", "java.util.ArrayList", "$.Collections"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.selected = null;
-this.hiddenColumns = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "ColumnSelection");
-Clazz.prepareFields (c$, function () {
-this.selected = new java.util.Vector ();
-});
-Clazz.defineMethod (c$, "addElement",
-function (col) {
-var column = new Integer (col);
-if (!this.selected.contains (column)) {
-this.selected.addElement (column);
-}}, "~N");
-Clazz.defineMethod (c$, "clear",
-function () {
-this.selected.removeAllElements ();
-});
-Clazz.defineMethod (c$, "removeElement",
-function (col) {
-var colInt = new Integer (col);
-if (this.selected.contains (colInt)) {
-this.selected.removeElement (colInt);
-}}, "~N");
-Clazz.defineMethod (c$, "removeElements",
-function (start, end) {
-var colInt;
-for (var i = start; i < end; i++) {
-colInt = new Integer (i);
-if (this.selected.contains (colInt)) {
-this.selected.removeElement (colInt);
-}}
-}, "~N,~N");
-Clazz.defineMethod (c$, "getSelected",
-function () {
-return this.selected;
-});
-Clazz.defineMethod (c$, "contains",
-function (col) {
-return this.selected.contains ( new Integer (col));
-}, "~N");
-Clazz.defineMethod (c$, "columnAt",
-function (i) {
-return this.selected.elementAt (i).intValue ();
-}, "~N");
-Clazz.defineMethod (c$, "size",
-function () {
-return this.selected.size ();
-});
-Clazz.defineMethod (c$, "getMax",
-function () {
-var max = -1;
-for (var i = 0; i < this.selected.size (); i++) {
-if (this.columnAt (i) > max) {
-max = this.columnAt (i);
-}}
-return max;
-});
-Clazz.defineMethod (c$, "getMin",
-function () {
-var min = 1000000000;
-for (var i = 0; i < this.selected.size (); i++) {
-if (this.columnAt (i) < min) {
-min = this.columnAt (i);
-}}
-return min;
-});
-Clazz.defineMethod (c$, "compensateForEdit",
-function (start, change) {
-var deletedHiddenColumns = null;
-for (var i = 0; i < this.size (); i++) {
-var temp = this.columnAt (i);
-if (temp >= start) {
-this.selected.setElementAt ( new Integer (temp - change), i);
-}}
-if (this.hiddenColumns != null) {
-deletedHiddenColumns = new java.util.ArrayList ();
-var hSize = this.hiddenColumns.size ();
-for (var i = 0; i < hSize; i++) {
-var region = this.hiddenColumns.elementAt (i);
-if (region[0] > start && start + change > region[1]) {
-deletedHiddenColumns.add (region);
-this.hiddenColumns.removeElementAt (i);
-i--;
-hSize--;
-continue;
-}if (region[0] > start) {
-region[0] -= change;
-region[1] -= change;
-}if (region[0] < 0) {
-region[0] = 0;
-}}
-this.revealHiddenColumns (0);
-}return deletedHiddenColumns;
-}, "~N,~N");
-Clazz.defineMethod (c$, "compensateForDelEdits",
-($fz = function (start, change) {
-for (var i = 0; i < this.size (); i++) {
-var temp = this.columnAt (i);
-if (temp >= start) {
-this.selected.setElementAt ( new Integer (temp - change), i);
-}}
-if (this.hiddenColumns != null) {
-for (var i = 0; i < this.hiddenColumns.size (); i++) {
-var region = this.hiddenColumns.elementAt (i);
-if (region[0] >= start) {
-region[0] -= change;
-}if (region[1] >= start) {
-region[1] -= change;
-}if (region[1] < region[0]) {
-this.hiddenColumns.removeElementAt (i--);
-}if (region[0] < 0) {
-region[0] = 0;
-}if (region[1] < 0) {
-region[1] = 0;
-}}
-}}, $fz.isPrivate = true, $fz), "~N,~N");
-Clazz.defineMethod (c$, "compensateForEdits",
-function (shiftrecord) {
-if (shiftrecord != null) {
-var shifts = shiftrecord.getShifts ();
-if (shifts != null && shifts.size () > 0) {
-var shifted = 0;
-for (var i = 0, j = shifts.size (); i < j; i++) {
-var sh = shifts.get (i);
-this.compensateForDelEdits (shifted + sh[0], sh[1]);
-shifted -= sh[1];
-}
-}return shiftrecord.getInverse ();
-}return null;
-}, "jalview.util.ShiftList");
-Clazz.defineMethod (c$, "pruneIntervalVector",
-($fz = function (shifts, intervals) {
-var pruned = false;
-var i = 0;
-var j = intervals.size () - 1;
-var s = 0;
-var t = shifts.size () - 1;
-var hr = intervals.elementAt (i);
-var sr = shifts.get (s);
-while (i <= j && s <= t) {
-var trailinghn = hr[1] >= sr[0];
-if (!trailinghn) {
-if (i < j) {
-hr = intervals.elementAt (++i);
-} else {
-i++;
-}continue;
-}var endshift = sr[0] + sr[1];
-if (endshift < hr[0] || endshift < sr[0]) {
-if (s < t) {
-sr = shifts.get (++s);
-} else {
-s++;
-}continue;
-}var leadinghn = hr[0] >= sr[0];
-var leadinghc = hr[0] < endshift;
-var trailinghc = hr[1] < endshift;
-if (leadinghn) {
-if (trailinghc) {
-intervals.removeElementAt (i);
-pruned = true;
-j--;
-if (i <= j) {
-hr = intervals.elementAt (i);
-}continue;
-}if (leadinghc) {
-hr[0] = endshift;
-leadinghn = !leadinghn;
-pruned = true;
-}}if (!leadinghn) {
-if (trailinghc) {
-if (trailinghn) {
-hr[1] = sr[0] - 1;
-pruned = true;
-}} else {
-if (s < t) {
-sr = shifts.get (++s);
-} else {
-s++;
-}continue;
-}}}
-return pruned;
-}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");
-Clazz.defineMethod (c$, "pruneColumnList",
-($fz = function (shifts, list) {
-var s = 0;
-var t = shifts.size ();
-var sr = shifts.get (s++);
-var pruned = false;
-var i = 0;
-var j = list.size ();
-while (i < j && s <= t) {
-var c = list.elementAt (i++).intValue ();
-if (sr[0] <= c) {
-if (sr[1] + sr[0] >= c) {
-list.removeElementAt (--i);
-j--;
-} else {
-if (s < t) {
-sr = shifts.get (s);
-}s++;
-}}}
-return pruned;
-}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");
-Clazz.defineMethod (c$, "pruneDeletions",
-function (deletions) {
-if (deletions != null) {
-var shifts = deletions.getShifts ();
-if (shifts != null && shifts.size () > 0) {
-if (this.hiddenColumns != null) {
-this.pruneIntervalVector (shifts, this.hiddenColumns);
-if (this.hiddenColumns != null && this.hiddenColumns.size () == 0) {
-this.hiddenColumns = null;
-}}if (this.selected != null && this.selected.size () > 0) {
-this.pruneColumnList (shifts, this.selected);
-if (this.selected != null && this.selected.size () == 0) {
-this.selected = null;
-}}this.compensateForEdits (deletions);
-}}}, "jalview.util.ShiftList");
-Clazz.defineMethod (c$, "getHiddenColumns",
-function () {
-return this.hiddenColumns == null ? java.util.Collections.emptyList () : this.hiddenColumns;
-});
-Clazz.defineMethod (c$, "adjustForHiddenColumns",
-function (column) {
-var result = column;
-if (this.hiddenColumns != null) {
-for (var i = 0; i < this.hiddenColumns.size (); i++) {
-var region = this.hiddenColumns.elementAt (i);
-if (result >= region[0]) {
-result += region[1] - region[0] + 1;
-}}
-}return result;
-}, "~N");
-Clazz.defineMethod (c$, "findColumnPosition",
-function (hiddenColumn) {
-var result = hiddenColumn;
-if (this.hiddenColumns != null) {
-var index = 0;
-var region;
-do {
-region = this.hiddenColumns.elementAt (index++);
-if (hiddenColumn > region[1]) {
-result -= region[1] + 1 - region[0];
-}} while ((hiddenColumn > region[1]) && (index < this.hiddenColumns.size ()));
-if (hiddenColumn > region[0] && hiddenColumn < region[1]) {
-return region[0] + hiddenColumn - result;
-}}return result;
-}, "~N");
-Clazz.defineMethod (c$, "findHiddenRegionPosition",
-function (hiddenRegion) {
-var result = 0;
-if (this.hiddenColumns != null) {
-var index = 0;
-var gaps = 0;
-do {
-var region = this.hiddenColumns.elementAt (index);
-if (hiddenRegion == 0) {
-return region[0];
-}gaps += region[1] + 1 - region[0];
-result = region[1] + 1;
-index++;
-} while (index < hiddenRegion + 1);
-result -= gaps;
-}return result;
-}, "~N");
-Clazz.defineMethod (c$, "getHiddenBoundaryRight",
-function (alPos) {
-if (this.hiddenColumns != null) {
-var index = 0;
-do {
-var region = this.hiddenColumns.elementAt (index);
-if (alPos < region[0]) {
-return region[0];
-}index++;
-} while (index < this.hiddenColumns.size ());
-}return alPos;
-}, "~N");
-Clazz.defineMethod (c$, "getHiddenBoundaryLeft",
-function (alPos) {
-if (this.hiddenColumns != null) {
-var index = this.hiddenColumns.size () - 1;
-do {
-var region = this.hiddenColumns.elementAt (index);
-if (alPos > region[1]) {
-return region[1];
-}index--;
-} while (index > -1);
-}return alPos;
-}, "~N");
-Clazz.defineMethod (c$, "hideSelectedColumns",
-function () {
-while (this.size () > 0) {
-var column = this.getSelected ().firstElement ().intValue ();
-this.hideColumns (column);
-}
-});
-Clazz.defineMethod (c$, "hideColumns",
-function (start, end) {
-if (this.hiddenColumns == null) {
-this.hiddenColumns = new java.util.Vector ();
-}var added = false;
-var overlap = false;
-for (var i = 0; i < this.hiddenColumns.size (); i++) {
-var region = this.hiddenColumns.elementAt (i);
-if (start <= region[1] && end >= region[0]) {
-this.hiddenColumns.removeElementAt (i);
-overlap = true;
-break;
-} else if (end < region[0] && start < region[0]) {
-this.hiddenColumns.insertElementAt ( Clazz.newIntArray (-1, [start, end]), i);
-added = true;
-break;
-}}
-if (overlap) {
-this.hideColumns (start, end);
-} else if (!added) {
-this.hiddenColumns.addElement ( Clazz.newIntArray (-1, [start, end]));
-}}, "~N,~N");
-Clazz.defineMethod (c$, "hideColumns",
-function (col) {
-var min = col;
-var max = col + 1;
-while (this.contains (min)) {
-this.removeElement (min);
-min--;
-}
-while (this.contains (max)) {
-this.removeElement (max);
-max++;
-}
-min++;
-max--;
-if (min > max) {
-min = max;
-}this.hideColumns (min, max);
-}, "~N");
-Clazz.defineMethod (c$, "revealAllHiddenColumns",
-function () {
-if (this.hiddenColumns != null) {
-for (var i = 0; i < this.hiddenColumns.size (); i++) {
-var region = this.hiddenColumns.elementAt (i);
-for (var j = region[0]; j < region[1] + 1; j++) {
-this.addElement (j);
-}
-}
-}this.hiddenColumns = null;
-});
-Clazz.defineMethod (c$, "revealHiddenColumns",
-function (res) {
-for (var i = 0; i < this.hiddenColumns.size (); i++) {
-var region = this.hiddenColumns.elementAt (i);
-if (res == region[0]) {
-for (var j = region[0]; j < region[1] + 1; j++) {
-this.addElement (j);
-}
-this.hiddenColumns.removeElement (region);
-break;
-}}
-if (this.hiddenColumns.size () == 0) {
-this.hiddenColumns = null;
-}}, "~N");
-Clazz.defineMethod (c$, "isVisible",
-function (column) {
-if (this.hiddenColumns != null) {
-for (var i = 0; i < this.hiddenColumns.size (); i++) {
-var region = this.hiddenColumns.elementAt (i);
-if (column >= region[0] && column <= region[1]) {
-return false;
-}}
-}return true;
-}, "~N");
-Clazz.makeConstructor (c$,
-function (copy) {
-if (copy != null) {
-if (copy.selected != null) {
-this.selected = new java.util.Vector ();
-for (var i = 0, j = copy.selected.size (); i < j; i++) {
-this.selected.addElement (copy.selected.elementAt (i));
-}
-}if (copy.hiddenColumns != null) {
-this.hiddenColumns = new java.util.Vector (copy.hiddenColumns.size ());
-for (var i = 0, j = copy.hiddenColumns.size (); i < j; i++) {
-var rh;
-var cp;
-rh = copy.hiddenColumns.elementAt (i);
-if (rh != null) {
-cp = Clazz.newIntArray (rh.length, 0);
-System.arraycopy (rh, 0, cp, 0, rh.length);
-this.hiddenColumns.addElement (cp);
-}}
-}}}, "jalview.datamodel.ColumnSelection");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.defineMethod (c$, "getVisibleSequenceStrings",
-function (start, end, seqs) {
-var i;
-var iSize = seqs.length;
-var selection = new Array (iSize);
-if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
-for (i = 0; i < iSize; i++) {
-var visibleSeq = new StringBuffer ();
-var regions = this.getHiddenColumns ();
-var blockStart = start;
-var blockEnd = end;
-var region;
-var hideStart;
-var hideEnd;
-for (var j = 0; j < regions.size (); j++) {
-region = regions.get (j);
-hideStart = region[0];
-hideEnd = region[1];
-if (hideStart < start) {
-continue;
-}blockStart = Math.min (blockStart, hideEnd + 1);
-blockEnd = Math.min (blockEnd, hideStart);
-if (blockStart > blockEnd) {
-break;
-}visibleSeq.append (seqs[i].getSequence (blockStart, blockEnd));
-blockStart = hideEnd + 1;
-blockEnd = end;
-}
-if (end > blockStart) {
-visibleSeq.append (seqs[i].getSequence (blockStart, end));
-}selection[i] = visibleSeq.toString ();
-}
-} else {
-for (i = 0; i < iSize; i++) {
-selection[i] = seqs[i].getSequenceAsString (start, end);
-}
-}return selection;
-}, "~N,~N,~A");
-Clazz.defineMethod (c$, "getVisibleContigs",
-function (start, end) {
-if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
-var visiblecontigs = new java.util.ArrayList ();
-var regions = this.getHiddenColumns ();
-var vstart = start;
-var region;
-var hideStart;
-var hideEnd;
-for (var j = 0; vstart < end && j < regions.size (); j++) {
-region = regions.get (j);
-hideStart = region[0];
-hideEnd = region[1];
-if (hideEnd < vstart) {
-continue;
-}if (hideStart > vstart) {
-visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, hideStart - 1]));
-}vstart = hideEnd + 1;
-}
-if (vstart < end) {
-visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, end - 1]));
-}var vcontigs = Clazz.newIntArray (visiblecontigs.size () * 2, 0);
-for (var i = 0, j = visiblecontigs.size (); i < j; i++) {
-var vc = visiblecontigs.get (i);
-visiblecontigs.set (i, null);
-vcontigs[i * 2] = vc[0];
-vcontigs[i * 2 + 1] = vc[1];
-}
-visiblecontigs.clear ();
-return vcontigs;
-} else {
-return Clazz.newIntArray (-1, [start, end - 1]);
-}}, "~N,~N");
-Clazz.defineMethod (c$, "makeVisibleAnnotation",
-function (alignmentAnnotation) {
-this.makeVisibleAnnotation (-1, -1, alignmentAnnotation);
-}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "makeVisibleAnnotation",
-function (start, end, alignmentAnnotation) {
-if (alignmentAnnotation.annotations == null) {
-return;
-}if (start == end && end == -1) {
-start = 0;
-end = alignmentAnnotation.annotations.length;
-}if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
-var annels = new java.util.Vector ();
-var els = null;
-var regions = this.getHiddenColumns ();
-var blockStart = start;
-var blockEnd = end;
-var region;
-var hideStart;
-var hideEnd;
-var w = 0;
-for (var j = 0; j < regions.size (); j++) {
-region = regions.get (j);
-hideStart = region[0];
-hideEnd = region[1];
-if (hideStart < start) {
-continue;
-}blockStart = Math.min (blockStart, hideEnd + 1);
-blockEnd = Math.min (blockEnd, hideStart);
-if (blockStart > blockEnd) {
-break;
-}annels.addElement (els = new Array (blockEnd - blockStart));
-System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
-w += els.length;
-blockStart = hideEnd + 1;
-blockEnd = end;
-}
-if (end > blockStart) {
-annels.addElement (els = new Array (end - blockStart + 1));
-if ((els.length + blockStart) <= alignmentAnnotation.annotations.length) {
-System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
-} else {
-System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, (alignmentAnnotation.annotations.length - blockStart));
-}w += els.length;
-}if (w == 0) {
-return;
-}alignmentAnnotation.annotations = new Array (w);
-w = 0;
-for (var chnk, $chnk = annels.iterator (); $chnk.hasNext () && ((chnk = $chnk.next ()) || true);) {
-System.arraycopy (chnk, 0, alignmentAnnotation.annotations, w, chnk.length);
-w += chnk.length;
-}
-} else {
-alignmentAnnotation.restrict (start, end);
-}}, "~N,~N,jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "invertColumnSelection",
-function (first, width) {
-var hasHidden = this.hiddenColumns != null && this.hiddenColumns.size () > 0;
-for (var i = first; i < width; i++) {
-if (this.contains (i)) {
-this.removeElement (i);
-} else {
-if (!hasHidden || this.isVisible (i)) {
-this.addElement (i);
-}}}
-}, "~N,~N");
-Clazz.defineMethod (c$, "addElementsFrom",
-function (colsel) {
-if (colsel != null && colsel.size () > 0) {
-for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
-if (this.hiddenColumns != null && this.isVisible (col.intValue ())) {
-if (!this.selected.contains (col)) {
-this.selected.addElement (col);
-}}}
-}}, "jalview.datamodel.ColumnSelection");
-Clazz.defineMethod (c$, "setElementsFrom",
-function (colsel) {
-this.selected = new java.util.Vector ();
-if (colsel.selected != null && colsel.selected.size () > 0) {
-if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
-this.addElementsFrom (colsel);
-} else {
-for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
-this.addElement ((col).intValue ());
-}
-}}}, "jalview.datamodel.ColumnSelection");
-c$.propagateInsertions = Clazz.defineMethod (c$, "propagateInsertions",
-function (profileseq, al, input) {
-var profsqpos = 0;
-var gc = al.getGapCharacter ();
-var alandcolsel = input.getAlignmentAndColumnSelection (gc);
-var nview = alandcolsel[1];
-var origseq = (alandcolsel[0])[profsqpos];
-nview.propagateInsertions (profileseq, al, origseq);
-return nview;
-}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");
-Clazz.defineMethod (c$, "propagateInsertions",
-function (profileseq, al, origseq) {
-var gc = al.getGapCharacter ();
-this.pruneDeletions (jalview.util.ShiftList.parseMap (origseq.gapMap ()));
-var viscontigs = this.getVisibleContigs (0, profileseq.getLength ());
-var spos = 0;
-var offset = 0;
-for (var v = 0; v < viscontigs.length; v += 2) {
-if (viscontigs[v] > spos) {
-var sb = new StringBuffer ();
-for (var s = 0, ns = viscontigs[v] - spos; s < ns; s++) {
-sb.append (gc);
-}
-for (var s = 0, ns = al.getHeight (); s < ns; s++) {
-var sqobj = al.getSequenceAt (s);
-if (sqobj !== profileseq) {
-var sq = al.getSequenceAt (s).getSequenceAsString ();
-if (sq.length <= spos + offset) {
-var diff = spos + offset - sq.length - 1;
-if (diff > 0) {
-sq = sq + sb;
-while ((diff = spos + offset - sq.length - 1) > 0) {
-if (diff >= sb.length ()) {
-sq += sb.toString ();
-} else {
-var buf = Clazz.newCharArray (diff, '\0');
-sb.getChars (0, diff, buf, 0);
-sq += buf.toString ();
-}}
-}sq += sb.toString ();
-} else {
-al.getSequenceAt (s).setSequence (sq.substring (0, spos + offset) + sb.toString () + sq.substring (spos + offset));
-}}}
-}spos = viscontigs[v + 1] + 1;
-}
-if ((offset + spos) < profileseq.getLength ()) {
-var sb = new StringBuffer ();
-for (var s = 0, ns = profileseq.getLength () - spos - offset; s < ns; s++) {
-sb.append (gc);
-}
-for (var s = 0, ns = al.getHeight (); s < ns; s++) {
-var sqobj = al.getSequenceAt (s);
-if (sqobj === profileseq) {
-continue;
-}var sq = sqobj.getSequenceAsString ();
-var diff = origseq.getLength () - sq.length;
-while (diff > 0) {
-if (diff >= sb.length ()) {
-sq += sb.toString ();
-} else {
-var buf = Clazz.newCharArray (diff, '\0');
-sb.getChars (0, diff, buf, 0);
-sq += buf.toString ();
-}diff = origseq.getLength () - sq.length;
-}
-}
-}}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "hasSelectedColumns",
-function () {
-return (this.selected != null && this.selected.size () > 0);
-});
-Clazz.defineMethod (c$, "hasHiddenColumns",
-function () {
-return this.hiddenColumns != null && this.hiddenColumns.size () > 0;
-});
-Clazz.defineMethod (c$, "hasManyHiddenColumns",
-function () {
-return this.hiddenColumns != null && this.hiddenColumns.size () > 1;
-});
-Clazz.defineMethod (c$, "hideInsertionsFor",
-function (sr) {
-var inserts = sr.getInsertions ();
-for (var r, $r = inserts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
-this.hideColumns (r[0], r[1]);
-}
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "filterAnnotations",
-function (annotations, filterParams) {
-this.revealAllHiddenColumns ();
-this.clear ();
-var count = 0;
-do {
-if (annotations[count] != null) {
-var itemMatched = false;
-if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD && annotations[count].value >= filterParams.getThresholdValue ()) {
-itemMatched = true;
-}if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD && annotations[count].value <= filterParams.getThresholdValue ()) {
-itemMatched = true;
-}if (filterParams.isFilterAlphaHelix () && annotations[count].secondaryStructure == 'H') {
-itemMatched = true;
-}if (filterParams.isFilterBetaSheet () && annotations[count].secondaryStructure == 'E') {
-itemMatched = true;
-}if (filterParams.isFilterTurn () && annotations[count].secondaryStructure == 'S') {
-itemMatched = true;
-}var regexSearchString = filterParams.getRegexString ();
-if (regexSearchString != null && !filterParams.getRegexSearchFields ().isEmpty ()) {
-var fields = filterParams.getRegexSearchFields ();
-try {
-if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING) && annotations[count].displayCharacter.matches (regexSearchString)) {
-itemMatched = true;
-}} catch (pse) {
-if (Clazz.exceptionOf (pse, java.util.regex.PatternSyntaxException)) {
-if (annotations[count].displayCharacter.equals (regexSearchString)) {
-itemMatched = true;
-}} else {
-throw pse;
-}
-}
-if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION) && annotations[count].description != null && annotations[count].description.matches (regexSearchString)) {
-itemMatched = true;
-}}if (itemMatched) {
-this.addElement (count);
-}}count++;
-} while (count < annotations.length);
-return false;
-}, "~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.Vector"], "jalview.datamodel.ColumnSelection", ["jalview.util.ShiftList", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.lang.StringBuffer", "java.util.ArrayList", "$.Collections"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.selected = null;
+this.hiddenColumns = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "ColumnSelection");
+Clazz.prepareFields (c$, function () {
+this.selected = new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "addElement",
+function (col) {
+var column = new Integer (col);
+if (!this.selected.contains (column)) {
+this.selected.addElement (column);
+}}, "~N");
+Clazz.defineMethod (c$, "clear",
+function () {
+this.selected.removeAllElements ();
+});
+Clazz.defineMethod (c$, "removeElement",
+function (col) {
+var colInt = new Integer (col);
+if (this.selected.contains (colInt)) {
+this.selected.removeElement (colInt);
+}}, "~N");
+Clazz.defineMethod (c$, "removeElements",
+function (start, end) {
+var colInt;
+for (var i = start; i < end; i++) {
+colInt = new Integer (i);
+if (this.selected.contains (colInt)) {
+this.selected.removeElement (colInt);
+}}
+}, "~N,~N");
+Clazz.defineMethod (c$, "getSelected",
+function () {
+return this.selected;
+});
+Clazz.defineMethod (c$, "contains",
+function (col) {
+return this.selected.contains ( new Integer (col));
+}, "~N");
+Clazz.defineMethod (c$, "columnAt",
+function (i) {
+return this.selected.elementAt (i).intValue ();
+}, "~N");
+Clazz.defineMethod (c$, "size",
+function () {
+return this.selected.size ();
+});
+Clazz.defineMethod (c$, "getMax",
+function () {
+var max = -1;
+for (var i = 0; i < this.selected.size (); i++) {
+if (this.columnAt (i) > max) {
+max = this.columnAt (i);
+}}
+return max;
+});
+Clazz.defineMethod (c$, "getMin",
+function () {
+var min = 1000000000;
+for (var i = 0; i < this.selected.size (); i++) {
+if (this.columnAt (i) < min) {
+min = this.columnAt (i);
+}}
+return min;
+});
+Clazz.defineMethod (c$, "compensateForEdit",
+function (start, change) {
+var deletedHiddenColumns = null;
+for (var i = 0; i < this.size (); i++) {
+var temp = this.columnAt (i);
+if (temp >= start) {
+this.selected.setElementAt ( new Integer (temp - change), i);
+}}
+if (this.hiddenColumns != null) {
+deletedHiddenColumns = new java.util.ArrayList ();
+var hSize = this.hiddenColumns.size ();
+for (var i = 0; i < hSize; i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (region[0] > start && start + change > region[1]) {
+deletedHiddenColumns.add (region);
+this.hiddenColumns.removeElementAt (i);
+i--;
+hSize--;
+continue;
+}if (region[0] > start) {
+region[0] -= change;
+region[1] -= change;
+}if (region[0] < 0) {
+region[0] = 0;
+}}
+this.revealHiddenColumns (0);
+}return deletedHiddenColumns;
+}, "~N,~N");
+Clazz.defineMethod (c$, "compensateForDelEdits",
+($fz = function (start, change) {
+for (var i = 0; i < this.size (); i++) {
+var temp = this.columnAt (i);
+if (temp >= start) {
+this.selected.setElementAt ( new Integer (temp - change), i);
+}}
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (region[0] >= start) {
+region[0] -= change;
+}if (region[1] >= start) {
+region[1] -= change;
+}if (region[1] < region[0]) {
+this.hiddenColumns.removeElementAt (i--);
+}if (region[0] < 0) {
+region[0] = 0;
+}if (region[1] < 0) {
+region[1] = 0;
+}}
+}}, $fz.isPrivate = true, $fz), "~N,~N");
+Clazz.defineMethod (c$, "compensateForEdits",
+function (shiftrecord) {
+if (shiftrecord != null) {
+var shifts = shiftrecord.getShifts ();
+if (shifts != null && shifts.size () > 0) {
+var shifted = 0;
+for (var i = 0, j = shifts.size (); i < j; i++) {
+var sh = shifts.get (i);
+this.compensateForDelEdits (shifted + sh[0], sh[1]);
+shifted -= sh[1];
+}
+}return shiftrecord.getInverse ();
+}return null;
+}, "jalview.util.ShiftList");
+Clazz.defineMethod (c$, "pruneIntervalVector",
+($fz = function (shifts, intervals) {
+var pruned = false;
+var i = 0;
+var j = intervals.size () - 1;
+var s = 0;
+var t = shifts.size () - 1;
+var hr = intervals.elementAt (i);
+var sr = shifts.get (s);
+while (i <= j && s <= t) {
+var trailinghn = hr[1] >= sr[0];
+if (!trailinghn) {
+if (i < j) {
+hr = intervals.elementAt (++i);
+} else {
+i++;
+}continue;
+}var endshift = sr[0] + sr[1];
+if (endshift < hr[0] || endshift < sr[0]) {
+if (s < t) {
+sr = shifts.get (++s);
+} else {
+s++;
+}continue;
+}var leadinghn = hr[0] >= sr[0];
+var leadinghc = hr[0] < endshift;
+var trailinghc = hr[1] < endshift;
+if (leadinghn) {
+if (trailinghc) {
+intervals.removeElementAt (i);
+pruned = true;
+j--;
+if (i <= j) {
+hr = intervals.elementAt (i);
+}continue;
+}if (leadinghc) {
+hr[0] = endshift;
+leadinghn = !leadinghn;
+pruned = true;
+}}if (!leadinghn) {
+if (trailinghc) {
+if (trailinghn) {
+hr[1] = sr[0] - 1;
+pruned = true;
+}} else {
+if (s < t) {
+sr = shifts.get (++s);
+} else {
+s++;
+}continue;
+}}}
+return pruned;
+}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");
+Clazz.defineMethod (c$, "pruneColumnList",
+($fz = function (shifts, list) {
+var s = 0;
+var t = shifts.size ();
+var sr = shifts.get (s++);
+var pruned = false;
+var i = 0;
+var j = list.size ();
+while (i < j && s <= t) {
+var c = list.elementAt (i++).intValue ();
+if (sr[0] <= c) {
+if (sr[1] + sr[0] >= c) {
+list.removeElementAt (--i);
+j--;
+} else {
+if (s < t) {
+sr = shifts.get (s);
+}s++;
+}}}
+return pruned;
+}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");
+Clazz.defineMethod (c$, "pruneDeletions",
+function (deletions) {
+if (deletions != null) {
+var shifts = deletions.getShifts ();
+if (shifts != null && shifts.size () > 0) {
+if (this.hiddenColumns != null) {
+this.pruneIntervalVector (shifts, this.hiddenColumns);
+if (this.hiddenColumns != null && this.hiddenColumns.size () == 0) {
+this.hiddenColumns = null;
+}}if (this.selected != null && this.selected.size () > 0) {
+this.pruneColumnList (shifts, this.selected);
+if (this.selected != null && this.selected.size () == 0) {
+this.selected = null;
+}}this.compensateForEdits (deletions);
+}}}, "jalview.util.ShiftList");
+Clazz.defineMethod (c$, "getHiddenColumns",
+function () {
+return this.hiddenColumns == null ? java.util.Collections.emptyList () : this.hiddenColumns;
+});
+Clazz.defineMethod (c$, "adjustForHiddenColumns",
+function (column) {
+var result = column;
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (result >= region[0]) {
+result += region[1] - region[0] + 1;
+}}
+}return result;
+}, "~N");
+Clazz.defineMethod (c$, "findColumnPosition",
+function (hiddenColumn) {
+var result = hiddenColumn;
+if (this.hiddenColumns != null) {
+var index = 0;
+var region;
+do {
+region = this.hiddenColumns.elementAt (index++);
+if (hiddenColumn > region[1]) {
+result -= region[1] + 1 - region[0];
+}} while ((hiddenColumn > region[1]) && (index < this.hiddenColumns.size ()));
+if (hiddenColumn > region[0] && hiddenColumn < region[1]) {
+return region[0] + hiddenColumn - result;
+}}return result;
+}, "~N");
+Clazz.defineMethod (c$, "findHiddenRegionPosition",
+function (hiddenRegion) {
+var result = 0;
+if (this.hiddenColumns != null) {
+var index = 0;
+var gaps = 0;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (hiddenRegion == 0) {
+return region[0];
+}gaps += region[1] + 1 - region[0];
+result = region[1] + 1;
+index++;
+} while (index < hiddenRegion + 1);
+result -= gaps;
+}return result;
+}, "~N");
+Clazz.defineMethod (c$, "getHiddenBoundaryRight",
+function (alPos) {
+if (this.hiddenColumns != null) {
+var index = 0;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (alPos < region[0]) {
+return region[0];
+}index++;
+} while (index < this.hiddenColumns.size ());
+}return alPos;
+}, "~N");
+Clazz.defineMethod (c$, "getHiddenBoundaryLeft",
+function (alPos) {
+if (this.hiddenColumns != null) {
+var index = this.hiddenColumns.size () - 1;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (alPos > region[1]) {
+return region[1];
+}index--;
+} while (index > -1);
+}return alPos;
+}, "~N");
+Clazz.defineMethod (c$, "hideSelectedColumns",
+function () {
+while (this.size () > 0) {
+var column = this.getSelected ().firstElement ().intValue ();
+this.hideColumns (column);
+}
+});
+Clazz.defineMethod (c$, "hideColumns",
+function (start, end) {
+if (this.hiddenColumns == null) {
+this.hiddenColumns = new java.util.Vector ();
+}var added = false;
+var overlap = false;
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (start <= region[1] && end >= region[0]) {
+this.hiddenColumns.removeElementAt (i);
+overlap = true;
+break;
+} else if (end < region[0] && start < region[0]) {
+this.hiddenColumns.insertElementAt ( Clazz.newIntArray (-1, [start, end]), i);
+added = true;
+break;
+}}
+if (overlap) {
+this.hideColumns (start, end);
+} else if (!added) {
+this.hiddenColumns.addElement ( Clazz.newIntArray (-1, [start, end]));
+}}, "~N,~N");
+Clazz.defineMethod (c$, "hideColumns",
+function (col) {
+var min = col;
+var max = col + 1;
+while (this.contains (min)) {
+this.removeElement (min);
+min--;
+}
+while (this.contains (max)) {
+this.removeElement (max);
+max++;
+}
+min++;
+max--;
+if (min > max) {
+min = max;
+}this.hideColumns (min, max);
+}, "~N");
+Clazz.defineMethod (c$, "revealAllHiddenColumns",
+function () {
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+for (var j = region[0]; j < region[1] + 1; j++) {
+this.addElement (j);
+}
+}
+}this.hiddenColumns = null;
+});
+Clazz.defineMethod (c$, "revealHiddenColumns",
+function (res) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (res == region[0]) {
+for (var j = region[0]; j < region[1] + 1; j++) {
+this.addElement (j);
+}
+this.hiddenColumns.removeElement (region);
+break;
+}}
+if (this.hiddenColumns.size () == 0) {
+this.hiddenColumns = null;
+}}, "~N");
+Clazz.defineMethod (c$, "isVisible",
+function (column) {
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (column >= region[0] && column <= region[1]) {
+return false;
+}}
+}return true;
+}, "~N");
+Clazz.makeConstructor (c$,
+function (copy) {
+if (copy != null) {
+if (copy.selected != null) {
+this.selected = new java.util.Vector ();
+for (var i = 0, j = copy.selected.size (); i < j; i++) {
+this.selected.addElement (copy.selected.elementAt (i));
+}
+}if (copy.hiddenColumns != null) {
+this.hiddenColumns = new java.util.Vector (copy.hiddenColumns.size ());
+for (var i = 0, j = copy.hiddenColumns.size (); i < j; i++) {
+var rh;
+var cp;
+rh = copy.hiddenColumns.elementAt (i);
+if (rh != null) {
+cp = Clazz.newIntArray (rh.length, 0);
+System.arraycopy (rh, 0, cp, 0, rh.length);
+this.hiddenColumns.addElement (cp);
+}}
+}}}, "jalview.datamodel.ColumnSelection");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.defineMethod (c$, "getVisibleSequenceStrings",
+function (start, end, seqs) {
+var i;
+var iSize = seqs.length;
+var selection = new Array (iSize);
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+for (i = 0; i < iSize; i++) {
+var visibleSeq = new StringBuffer ();
+var regions = this.getHiddenColumns ();
+var blockStart = start;
+var blockEnd = end;
+var region;
+var hideStart;
+var hideEnd;
+for (var j = 0; j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < start) {
+continue;
+}blockStart = Math.min (blockStart, hideEnd + 1);
+blockEnd = Math.min (blockEnd, hideStart);
+if (blockStart > blockEnd) {
+break;
+}visibleSeq.append (seqs[i].getSequence (blockStart, blockEnd));
+blockStart = hideEnd + 1;
+blockEnd = end;
+}
+if (end > blockStart) {
+visibleSeq.append (seqs[i].getSequence (blockStart, end));
+}selection[i] = visibleSeq.toString ();
+}
+} else {
+for (i = 0; i < iSize; i++) {
+selection[i] = seqs[i].getSequenceAsString (start, end);
+}
+}return selection;
+}, "~N,~N,~A");
+Clazz.defineMethod (c$, "getVisibleContigs",
+function (start, end) {
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+var visiblecontigs = new java.util.ArrayList ();
+var regions = this.getHiddenColumns ();
+var vstart = start;
+var region;
+var hideStart;
+var hideEnd;
+for (var j = 0; vstart < end && j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideEnd < vstart) {
+continue;
+}if (hideStart > vstart) {
+visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, hideStart - 1]));
+}vstart = hideEnd + 1;
+}
+if (vstart < end) {
+visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, end - 1]));
+}var vcontigs = Clazz.newIntArray (visiblecontigs.size () * 2, 0);
+for (var i = 0, j = visiblecontigs.size (); i < j; i++) {
+var vc = visiblecontigs.get (i);
+visiblecontigs.set (i, null);
+vcontigs[i * 2] = vc[0];
+vcontigs[i * 2 + 1] = vc[1];
+}
+visiblecontigs.clear ();
+return vcontigs;
+} else {
+return Clazz.newIntArray (-1, [start, end - 1]);
+}}, "~N,~N");
+Clazz.defineMethod (c$, "makeVisibleAnnotation",
+function (alignmentAnnotation) {
+this.makeVisibleAnnotation (-1, -1, alignmentAnnotation);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "makeVisibleAnnotation",
+function (start, end, alignmentAnnotation) {
+if (alignmentAnnotation.annotations == null) {
+return;
+}if (start == end && end == -1) {
+start = 0;
+end = alignmentAnnotation.annotations.length;
+}if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+var annels = new java.util.Vector ();
+var els = null;
+var regions = this.getHiddenColumns ();
+var blockStart = start;
+var blockEnd = end;
+var region;
+var hideStart;
+var hideEnd;
+var w = 0;
+for (var j = 0; j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < start) {
+continue;
+}blockStart = Math.min (blockStart, hideEnd + 1);
+blockEnd = Math.min (blockEnd, hideStart);
+if (blockStart > blockEnd) {
+break;
+}annels.addElement (els = new Array (blockEnd - blockStart));
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
+w += els.length;
+blockStart = hideEnd + 1;
+blockEnd = end;
+}
+if (end > blockStart) {
+annels.addElement (els = new Array (end - blockStart + 1));
+if ((els.length + blockStart) <= alignmentAnnotation.annotations.length) {
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
+} else {
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, (alignmentAnnotation.annotations.length - blockStart));
+}w += els.length;
+}if (w == 0) {
+return;
+}alignmentAnnotation.annotations = new Array (w);
+w = 0;
+for (var chnk, $chnk = annels.iterator (); $chnk.hasNext () && ((chnk = $chnk.next ()) || true);) {
+System.arraycopy (chnk, 0, alignmentAnnotation.annotations, w, chnk.length);
+w += chnk.length;
+}
+} else {
+alignmentAnnotation.restrict (start, end);
+}}, "~N,~N,jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "invertColumnSelection",
+function (first, width) {
+var hasHidden = this.hiddenColumns != null && this.hiddenColumns.size () > 0;
+for (var i = first; i < width; i++) {
+if (this.contains (i)) {
+this.removeElement (i);
+} else {
+if (!hasHidden || this.isVisible (i)) {
+this.addElement (i);
+}}}
+}, "~N,~N");
+Clazz.defineMethod (c$, "addElementsFrom",
+function (colsel) {
+if (colsel != null && colsel.size () > 0) {
+for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
+if (this.hiddenColumns != null && this.isVisible (col.intValue ())) {
+if (!this.selected.contains (col)) {
+this.selected.addElement (col);
+}}}
+}}, "jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "setElementsFrom",
+function (colsel) {
+this.selected = new java.util.Vector ();
+if (colsel.selected != null && colsel.selected.size () > 0) {
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+this.addElementsFrom (colsel);
+} else {
+for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
+this.addElement ((col).intValue ());
+}
+}}}, "jalview.datamodel.ColumnSelection");
+c$.propagateInsertions = Clazz.defineMethod (c$, "propagateInsertions",
+function (profileseq, al, input) {
+var profsqpos = 0;
+var gc = al.getGapCharacter ();
+var alandcolsel = input.getAlignmentAndColumnSelection (gc);
+var nview = alandcolsel[1];
+var origseq = (alandcolsel[0])[profsqpos];
+nview.propagateInsertions (profileseq, al, origseq);
+return nview;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");
+Clazz.defineMethod (c$, "propagateInsertions",
+function (profileseq, al, origseq) {
+var gc = al.getGapCharacter ();
+this.pruneDeletions (jalview.util.ShiftList.parseMap (origseq.gapMap ()));
+var viscontigs = this.getVisibleContigs (0, profileseq.getLength ());
+var spos = 0;
+var offset = 0;
+for (var v = 0; v < viscontigs.length; v += 2) {
+if (viscontigs[v] > spos) {
+var sb = new StringBuffer ();
+for (var s = 0, ns = viscontigs[v] - spos; s < ns; s++) {
+sb.append (gc);
+}
+for (var s = 0, ns = al.getHeight (); s < ns; s++) {
+var sqobj = al.getSequenceAt (s);
+if (sqobj !== profileseq) {
+var sq = al.getSequenceAt (s).getSequenceAsString ();
+if (sq.length <= spos + offset) {
+var diff = spos + offset - sq.length - 1;
+if (diff > 0) {
+sq = sq + sb;
+while ((diff = spos + offset - sq.length - 1) > 0) {
+if (diff >= sb.length ()) {
+sq += sb.toString ();
+} else {
+var buf = Clazz.newCharArray (diff, '\0');
+sb.getChars (0, diff, buf, 0);
+sq += buf.toString ();
+}}
+}sq += sb.toString ();
+} else {
+al.getSequenceAt (s).setSequence (sq.substring (0, spos + offset) + sb.toString () + sq.substring (spos + offset));
+}}}
+}spos = viscontigs[v + 1] + 1;
+}
+if ((offset + spos) < profileseq.getLength ()) {
+var sb = new StringBuffer ();
+for (var s = 0, ns = profileseq.getLength () - spos - offset; s < ns; s++) {
+sb.append (gc);
+}
+for (var s = 0, ns = al.getHeight (); s < ns; s++) {
+var sqobj = al.getSequenceAt (s);
+if (sqobj === profileseq) {
+continue;
+}var sq = sqobj.getSequenceAsString ();
+var diff = origseq.getLength () - sq.length;
+while (diff > 0) {
+if (diff >= sb.length ()) {
+sq += sb.toString ();
+} else {
+var buf = Clazz.newCharArray (diff, '\0');
+sb.getChars (0, diff, buf, 0);
+sq += buf.toString ();
+}diff = origseq.getLength () - sq.length;
+}
+}
+}}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "hasSelectedColumns",
+function () {
+return (this.selected != null && this.selected.size () > 0);
+});
+Clazz.defineMethod (c$, "hasHiddenColumns",
+function () {
+return this.hiddenColumns != null && this.hiddenColumns.size () > 0;
+});
+Clazz.defineMethod (c$, "hasManyHiddenColumns",
+function () {
+return this.hiddenColumns != null && this.hiddenColumns.size () > 1;
+});
+Clazz.defineMethod (c$, "hideInsertionsFor",
+function (sr) {
+var inserts = sr.getInsertions ();
+for (var r, $r = inserts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.hideColumns (r[0], r[1]);
+}
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "filterAnnotations",
+function (annotations, filterParams) {
+this.revealAllHiddenColumns ();
+this.clear ();
+var count = 0;
+do {
+if (annotations[count] != null) {
+var itemMatched = false;
+if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD && annotations[count].value >= filterParams.getThresholdValue ()) {
+itemMatched = true;
+}if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD && annotations[count].value <= filterParams.getThresholdValue ()) {
+itemMatched = true;
+}if (filterParams.isFilterAlphaHelix () && annotations[count].secondaryStructure == 'H') {
+itemMatched = true;
+}if (filterParams.isFilterBetaSheet () && annotations[count].secondaryStructure == 'E') {
+itemMatched = true;
+}if (filterParams.isFilterTurn () && annotations[count].secondaryStructure == 'S') {
+itemMatched = true;
+}var regexSearchString = filterParams.getRegexString ();
+if (regexSearchString != null && !filterParams.getRegexSearchFields ().isEmpty ()) {
+var fields = filterParams.getRegexSearchFields ();
+try {
+if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING) && annotations[count].displayCharacter.matches (regexSearchString)) {
+itemMatched = true;
+}} catch (pse) {
+if (Clazz.exceptionOf (pse, java.util.regex.PatternSyntaxException)) {
+if (annotations[count].displayCharacter.equals (regexSearchString)) {
+itemMatched = true;
+}} else {
+throw pse;
+}
+}
+if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION) && annotations[count].description != null && annotations[count].description.matches (regexSearchString)) {
+itemMatched = true;
+}}if (itemMatched) {
+this.addElement (count);
+}}count++;
+} while (count < annotations.length);
+return false;
+}, "~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter");
+});
diff --git a/bin/jalview/datamodel/DBRefEntry.js b/bin/jalview/datamodel/DBRefEntry.js
index da2e0cb..148cf99 100644
--- a/bin/jalview/datamodel/DBRefEntry.js
+++ b/bin/jalview/datamodel/DBRefEntry.js
@@ -1,93 +1,93 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.DBRefEntry", ["jalview.datamodel.Mapping"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.source = "";
-this.version = "";
-this.accessionId = "";
-this.map = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "DBRefEntry");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.makeConstructor (c$,
-function (source, version, accessionId) {
-this.construct (source, version, accessionId, null);
-}, "~S,~S,~S");
-Clazz.makeConstructor (c$,
-function (source, version, accessionId, map) {
-this.source = source.toUpperCase ();
-this.version = version;
-this.accessionId = accessionId;
-this.map = map;
-}, "~S,~S,~S,jalview.datamodel.Mapping");
-Clazz.makeConstructor (c$,
-function (entry) {
-this.construct ((entry.source == null ? "" : String.instantialize (entry.source)), (entry.version == null ? "" : String.instantialize (entry.version)), (entry.accessionId == null ? "" : String.instantialize (entry.accessionId)), (entry.map == null ? null : new jalview.datamodel.Mapping (entry.map)));
-}, "jalview.datamodel.DBRefEntry");
-Clazz.overrideMethod (c$, "equals",
-function (o) {
-if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.DBRefEntry))) {
-return false;
-}var entry = o;
-if (entry === this) {
-return true;
-}if (this.equalRef (entry) && ((this.map == null && entry.map == null) || (this.map != null && entry.map != null && this.map.equals (entry.map)))) {
-return true;
-}return false;
-}, "~O");
-Clazz.defineMethod (c$, "equalRef",
-function (entry) {
-if (entry == null) {
-return false;
-}if (entry === this) {
-return true;
-}if ((this.source != null && entry.source != null && this.source.equalsIgnoreCase (entry.source)) && (this.accessionId != null && entry.accessionId != null && this.accessionId.equalsIgnoreCase (entry.accessionId)) && (this.version != null && entry.version != null && this.version.equalsIgnoreCase (entry.version))) {
-return true;
-}return false;
-}, "jalview.datamodel.DBRefEntry");
-Clazz.defineMethod (c$, "getSource",
-function () {
-return this.source;
-});
-Clazz.defineMethod (c$, "getVersion",
-function () {
-return this.version;
-});
-Clazz.defineMethod (c$, "getAccessionId",
-function () {
-return this.accessionId;
-});
-Clazz.defineMethod (c$, "setAccessionId",
-function (accessionId) {
-this.accessionId = accessionId;
-}, "~S");
-Clazz.defineMethod (c$, "setSource",
-function (source) {
-this.source = source;
-}, "~S");
-Clazz.defineMethod (c$, "setVersion",
-function (version) {
-this.version = version;
-}, "~S");
-Clazz.defineMethod (c$, "getMap",
-function () {
-return this.map;
-});
-Clazz.defineMethod (c$, "setMap",
-function (map) {
-this.map = map;
-}, "jalview.datamodel.Mapping");
-Clazz.defineMethod (c$, "hasMap",
-function () {
-return this.map != null;
-});
-Clazz.defineMethod (c$, "getSrcAccString",
-function () {
-return ((this.source != null) ? this.source : "") + ":" + ((this.accessionId != null) ? this.accessionId : "");
-});
-Clazz.overrideMethod (c$, "toString",
-function () {
-return this.getSrcAccString ();
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.DBRefEntry", ["jalview.datamodel.Mapping"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.source = "";
+this.version = "";
+this.accessionId = "";
+this.map = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "DBRefEntry");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.makeConstructor (c$,
+function (source, version, accessionId) {
+this.construct (source, version, accessionId, null);
+}, "~S,~S,~S");
+Clazz.makeConstructor (c$,
+function (source, version, accessionId, map) {
+this.source = source.toUpperCase ();
+this.version = version;
+this.accessionId = accessionId;
+this.map = map;
+}, "~S,~S,~S,jalview.datamodel.Mapping");
+Clazz.makeConstructor (c$,
+function (entry) {
+this.construct ((entry.source == null ? "" : String.instantialize (entry.source)), (entry.version == null ? "" : String.instantialize (entry.version)), (entry.accessionId == null ? "" : String.instantialize (entry.accessionId)), (entry.map == null ? null : new jalview.datamodel.Mapping (entry.map)));
+}, "jalview.datamodel.DBRefEntry");
+Clazz.overrideMethod (c$, "equals",
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.DBRefEntry))) {
+return false;
+}var entry = o;
+if (entry === this) {
+return true;
+}if (this.equalRef (entry) && ((this.map == null && entry.map == null) || (this.map != null && entry.map != null && this.map.equals (entry.map)))) {
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "equalRef",
+function (entry) {
+if (entry == null) {
+return false;
+}if (entry === this) {
+return true;
+}if ((this.source != null && entry.source != null && this.source.equalsIgnoreCase (entry.source)) && (this.accessionId != null && entry.accessionId != null && this.accessionId.equalsIgnoreCase (entry.accessionId)) && (this.version != null && entry.version != null && this.version.equalsIgnoreCase (entry.version))) {
+return true;
+}return false;
+}, "jalview.datamodel.DBRefEntry");
+Clazz.defineMethod (c$, "getSource",
+function () {
+return this.source;
+});
+Clazz.defineMethod (c$, "getVersion",
+function () {
+return this.version;
+});
+Clazz.defineMethod (c$, "getAccessionId",
+function () {
+return this.accessionId;
+});
+Clazz.defineMethod (c$, "setAccessionId",
+function (accessionId) {
+this.accessionId = accessionId;
+}, "~S");
+Clazz.defineMethod (c$, "setSource",
+function (source) {
+this.source = source;
+}, "~S");
+Clazz.defineMethod (c$, "setVersion",
+function (version) {
+this.version = version;
+}, "~S");
+Clazz.defineMethod (c$, "getMap",
+function () {
+return this.map;
+});
+Clazz.defineMethod (c$, "setMap",
+function (map) {
+this.map = map;
+}, "jalview.datamodel.Mapping");
+Clazz.defineMethod (c$, "hasMap",
+function () {
+return this.map != null;
+});
+Clazz.defineMethod (c$, "getSrcAccString",
+function () {
+return ((this.source != null) ? this.source : "") + ":" + ((this.accessionId != null) ? this.accessionId : "");
+});
+Clazz.overrideMethod (c$, "toString",
+function () {
+return this.getSrcAccString ();
+});
+});
diff --git a/bin/jalview/datamodel/DBRefSource.js b/bin/jalview/datamodel/DBRefSource.js
index 587f6f3..00d7337 100644
--- a/bin/jalview/datamodel/DBRefSource.js
+++ b/bin/jalview/datamodel/DBRefSource.js
@@ -1,29 +1,29 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.declareType (jalview.datamodel, "DBRefSource");
-Clazz.defineStatics (c$,
-"UNIPROT", "UNIPROT");
-c$.UP_NAME = c$.prototype.UP_NAME = "UNIPROT_NAME".toUpperCase ();
-c$.UNIPROTKB = c$.prototype.UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase ();
-c$.EMBLCDSProduct = c$.prototype.EMBLCDSProduct = "EMBLCDSProtein".toUpperCase ();
-Clazz.defineStatics (c$,
-"PDB", "PDB",
-"EMBL", "EMBL",
-"EMBLCDS", "EMBLCDS",
-"PFAM", "PFAM",
-"RFAM", "RFAM");
-c$.GENEDB = c$.prototype.GENEDB = "GeneDB".toUpperCase ();
-c$.DNACODINGDBS = c$.prototype.DNACODINGDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBL, jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
-c$.CODINGDBS = c$.prototype.CODINGDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
-c$.PROTEINDBS = c$.prototype.PROTEINDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.PDB, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
-c$.PROTEINSEQ = c$.prototype.PROTEINSEQ = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
-c$.PROTEINSTR = c$.prototype.PROTEINSTR = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PDB]);
-c$.DOMAINDBS = c$.prototype.DOMAINDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PFAM, jalview.datamodel.DBRefSource.RFAM]);
-Clazz.defineStatics (c$,
-"SEQDB", "SQ",
-"DNASEQDB", "NASQ",
-"PROTSEQDB", "PROTSQ",
-"CODINGSEQDB", "CODING",
-"DNACODINGSEQDB", "XONCODING",
-"DOMAINDB", "DOMAIN",
-"MULTIACC", "MULTIACC",
-"ALIGNMENTDB", "ALIGNMENTS");
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.declareType (jalview.datamodel, "DBRefSource");
+Clazz.defineStatics (c$,
+"UNIPROT", "UNIPROT");
+c$.UP_NAME = c$.prototype.UP_NAME = "UNIPROT_NAME".toUpperCase ();
+c$.UNIPROTKB = c$.prototype.UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase ();
+c$.EMBLCDSProduct = c$.prototype.EMBLCDSProduct = "EMBLCDSProtein".toUpperCase ();
+Clazz.defineStatics (c$,
+"PDB", "PDB",
+"EMBL", "EMBL",
+"EMBLCDS", "EMBLCDS",
+"PFAM", "PFAM",
+"RFAM", "RFAM");
+c$.GENEDB = c$.prototype.GENEDB = "GeneDB".toUpperCase ();
+c$.DNACODINGDBS = c$.prototype.DNACODINGDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBL, jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
+c$.CODINGDBS = c$.prototype.CODINGDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
+c$.PROTEINDBS = c$.prototype.PROTEINDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.PDB, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
+c$.PROTEINSEQ = c$.prototype.PROTEINSEQ = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
+c$.PROTEINSTR = c$.prototype.PROTEINSTR = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PDB]);
+c$.DOMAINDBS = c$.prototype.DOMAINDBS = Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PFAM, jalview.datamodel.DBRefSource.RFAM]);
+Clazz.defineStatics (c$,
+"SEQDB", "SQ",
+"DNASEQDB", "NASQ",
+"PROTSEQDB", "PROTSQ",
+"CODINGSEQDB", "CODING",
+"DNACODINGSEQDB", "XONCODING",
+"DOMAINDB", "DOMAIN",
+"MULTIACC", "MULTIACC",
+"ALIGNMENTDB", "ALIGNMENTS");
diff --git a/bin/jalview/datamodel/FeatureProperties.js b/bin/jalview/datamodel/FeatureProperties.js
index 6df3e2b..350148d 100644
--- a/bin/jalview/datamodel/FeatureProperties.js
+++ b/bin/jalview/datamodel/FeatureProperties.js
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.FeatureProperties", ["jalview.datamodel.DBRefSource"], function () {
-c$ = Clazz.declareType (jalview.datamodel, "FeatureProperties");
-c$.isCodingFeature = Clazz.defineMethod (c$, "isCodingFeature",
-function (dbrefsource, type) {
-if (type.equalsIgnoreCase ("CDS")) {
-return (dbrefsource == null || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBL) || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBLCDS));
-}return false;
-}, "~S,~S");
-c$.getCodingFeature = Clazz.defineMethod (c$, "getCodingFeature",
-function (dbrefsource) {
-if (jalview.datamodel.DBRefSource.EMBL.equalsIgnoreCase (dbrefsource) || jalview.datamodel.DBRefSource.EMBLCDS.equalsIgnoreCase (dbrefsource)) {
-return "CDS";
-}return null;
-}, "~S");
-Clazz.defineStatics (c$,
-"EMBL_CODING_FEATURE", "CDS",
-"EXONPOS", "exon number",
-"EXONPRODUCT", "product");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.FeatureProperties", ["jalview.datamodel.DBRefSource"], function () {
+c$ = Clazz.declareType (jalview.datamodel, "FeatureProperties");
+c$.isCodingFeature = Clazz.defineMethod (c$, "isCodingFeature",
+function (dbrefsource, type) {
+if (type.equalsIgnoreCase ("CDS")) {
+return (dbrefsource == null || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBL) || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBLCDS));
+}return false;
+}, "~S,~S");
+c$.getCodingFeature = Clazz.defineMethod (c$, "getCodingFeature",
+function (dbrefsource) {
+if (jalview.datamodel.DBRefSource.EMBL.equalsIgnoreCase (dbrefsource) || jalview.datamodel.DBRefSource.EMBLCDS.equalsIgnoreCase (dbrefsource)) {
+return "CDS";
+}return null;
+}, "~S");
+Clazz.defineStatics (c$,
+"EMBL_CODING_FEATURE", "CDS",
+"EXONPOS", "exon number",
+"EXONPRODUCT", "product");
+});
diff --git a/bin/jalview/datamodel/GraphLine.js b/bin/jalview/datamodel/GraphLine.js
index 564e7f4..83ffc69 100644
--- a/bin/jalview/datamodel/GraphLine.js
+++ b/bin/jalview/datamodel/GraphLine.js
@@ -1,36 +1,36 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.awt.Color"], "jalview.datamodel.GraphLine", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.value = 0;
-this.label = "";
-this.colour = null;
-this.displayed = true;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "GraphLine");
-Clazz.prepareFields (c$, function () {
-this.colour = java.awt.Color.black;
-});
-Clazz.makeConstructor (c$,
-function (value, label, col) {
-this.value = value;
-if (label != null) {
-this.label = label;
-}if (col != null) {
-this.colour = col;
-}}, "~N,~S,java.awt.Color");
-Clazz.makeConstructor (c$,
-function (from) {
-if (from != null) {
-this.value = from.value;
-this.label = String.instantialize (from.label);
-this.colour = from.colour;
-this.displayed = from.displayed;
-}}, "jalview.datamodel.GraphLine");
-Clazz.overrideMethod (c$, "equals",
-function (obj) {
-if (obj != null && Clazz.instanceOf (obj, jalview.datamodel.GraphLine)) {
-var other = obj;
-return this.displayed == other.displayed && this.value == other.value && (this.colour != null ? (other.colour != null && other.colour.equals (this.colour)) : other.colour == null) && (this.label != null ? (other.label != null && other.label.equals (this.label)) : other.label == null);
-}return false;
-}, "~O");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.awt.Color"], "jalview.datamodel.GraphLine", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.value = 0;
+this.label = "";
+this.colour = null;
+this.displayed = true;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "GraphLine");
+Clazz.prepareFields (c$, function () {
+this.colour = java.awt.Color.black;
+});
+Clazz.makeConstructor (c$,
+function (value, label, col) {
+this.value = value;
+if (label != null) {
+this.label = label;
+}if (col != null) {
+this.colour = col;
+}}, "~N,~S,java.awt.Color");
+Clazz.makeConstructor (c$,
+function (from) {
+if (from != null) {
+this.value = from.value;
+this.label = String.instantialize (from.label);
+this.colour = from.colour;
+this.displayed = from.displayed;
+}}, "jalview.datamodel.GraphLine");
+Clazz.overrideMethod (c$, "equals",
+function (obj) {
+if (obj != null && Clazz.instanceOf (obj, jalview.datamodel.GraphLine)) {
+var other = obj;
+return this.displayed == other.displayed && this.value == other.value && (this.colour != null ? (other.colour != null && other.colour.equals (this.colour)) : other.colour == null) && (this.label != null ? (other.label != null && other.label.equals (this.label)) : other.label == null);
+}return false;
+}, "~O");
+});
diff --git a/bin/jalview/datamodel/HiddenSequences.class b/bin/jalview/datamodel/HiddenSequences.class
index a6524e4aeebfd05e8e66a6ed26285f81260c14a2..5553ae26124c2c73ffb985c59e889b4cd4db000f 100644
GIT binary patch
delta 27
jcmZoOY&G0qA
delta 28
kcmZoQY%| width) {
-width = this.hiddenSequences[i].getLength ();
-}}
-return width;
-});
-Clazz.defineMethod (c$, "adjustHeightSequenceDeleted",
-function (seqIndex) {
-if (this.hiddenSequences == null) {
-return;
-}var alHeight = this.alignment.getHeight ();
-var tmp = new Array (alHeight + this.getSize ());
-var deletionIndex = this.adjustForHiddenSeqs (seqIndex);
-for (var i = 0; i < this.hiddenSequences.length; i++) {
-if (this.hiddenSequences[i] == null) {
-continue;
-}if (i > deletionIndex) {
-tmp[i - 1] = this.hiddenSequences[i];
-} else {
-tmp[i] = this.hiddenSequences[i];
-}}
-this.hiddenSequences = tmp;
-}, "~N");
-Clazz.defineMethod (c$, "adjustHeightSequenceAdded",
-function () {
-if (this.hiddenSequences == null) {
-return;
-}var alHeight = this.alignment.getHeight ();
-var tmp = new Array (alHeight + this.getSize ());
-System.arraycopy (this.hiddenSequences, 0, tmp, 0, this.hiddenSequences.length);
-this.hiddenSequences = tmp;
-});
-Clazz.defineMethod (c$, "hideSequence",
-function (sequence) {
-if (this.hiddenSequences == null) {
-this.hiddenSequences = new Array (this.alignment.getHeight ());
-}var alignmentIndex = this.alignment.findIndex (sequence);
-alignmentIndex = this.adjustForHiddenSeqs (alignmentIndex);
-if (this.hiddenSequences[alignmentIndex] != null) {
-System.out.println ("ERROR!!!!!!!!!!!");
-}this.hiddenSequences[alignmentIndex] = sequence;
-this.alignment.deleteSequence (sequence);
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "showAll",
-function (hiddenRepSequences) {
-var revealedSeqs = new java.util.ArrayList ();
-for (var i = 0; i < this.hiddenSequences.length; i++) {
-if (this.hiddenSequences[i] != null) {
-var tmp = this.showSequence (i, hiddenRepSequences);
-for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-revealedSeqs.add (seq);
-}
-}}
-return revealedSeqs;
-}, "java.util.Map");
-Clazz.defineMethod (c$, "showSequence",
-function (alignmentIndex, hiddenRepSequences) {
-var revealedSeqs = new java.util.ArrayList ();
-var repSequence = this.alignment.getSequenceAt (alignmentIndex);
-if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey (repSequence)) {
-hiddenRepSequences.remove (repSequence);
-revealedSeqs.add (repSequence);
-}var start = this.adjustForHiddenSeqs (alignmentIndex - 1);
-var end = this.adjustForHiddenSeqs (alignmentIndex);
-if (end >= this.hiddenSequences.length) {
-end = this.hiddenSequences.length - 1;
-}var asequences;
-{
-for (var index = end; index > start; index--) {
-var seq = this.hiddenSequences[index];
-this.hiddenSequences[index] = null;
-if (seq != null) {
-if (seq.getLength () > 0) {
-revealedSeqs.add (seq);
-asequences.add (alignmentIndex, seq);
-} else {
-System.out.println (seq.getName () + " has been deleted whilst hidden");
-}}}
-}return revealedSeqs;
-}, "~N,java.util.Map");
-Clazz.defineMethod (c$, "getHiddenSequence",
-function (alignmentIndex) {
-return this.hiddenSequences[alignmentIndex];
-}, "~N");
-Clazz.defineMethod (c$, "findIndexWithoutHiddenSeqs",
-function (alignmentIndex) {
-var index = 0;
-var hiddenSeqs = 0;
-if (this.hiddenSequences.length <= alignmentIndex) {
-alignmentIndex = this.hiddenSequences.length - 1;
-}while (index <= alignmentIndex) {
-if (this.hiddenSequences[index] != null) {
-hiddenSeqs++;
-}index++;
-}
-;return (alignmentIndex - hiddenSeqs);
-}, "~N");
-Clazz.defineMethod (c$, "adjustForHiddenSeqs",
-function (alignmentIndex) {
-var index = 0;
-var hSize = this.hiddenSequences.length;
-while (index <= alignmentIndex && index < hSize) {
-if (this.hiddenSequences[index] != null) {
-alignmentIndex++;
-}index++;
-}
-;return alignmentIndex;
-}, "~N");
-Clazz.defineMethod (c$, "getFullAlignment",
-function () {
-var isize = this.hiddenSequences.length;
-var seq = new Array (isize);
-var index = 0;
-for (var i = 0; i < this.hiddenSequences.length; i++) {
-if (this.hiddenSequences[i] != null) {
-seq[i] = this.hiddenSequences[i];
-} else {
-seq[i] = this.alignment.getSequenceAt (index);
-index++;
-}}
-var fAlignmt = new jalview.datamodel.Alignment (seq);
-fAlignmt.annotations = this.alignment.getAlignmentAnnotation ();
-fAlignmt.alignmentProperties = this.alignment.getProperties ();
-fAlignmt.groups = this.alignment.getGroups ();
-fAlignmt.$hasRNAStructure = this.alignment.hasRNAStructure ();
-return fAlignmt;
-});
-Clazz.defineMethod (c$, "isHidden",
-function (seq) {
-if (this.hiddenSequences != null) {
-for (var i = 0; i < this.hiddenSequences.length; i++) {
-if (this.hiddenSequences[i] != null && this.hiddenSequences[i] === seq) {
-return true;
-}}
-}return false;
-}, "jalview.datamodel.SequenceI");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.HiddenSequences", ["jalview.datamodel.Alignment", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.hiddenSequences = null;
+this.alignment = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "HiddenSequences");
+Clazz.makeConstructor (c$,
+function (al) {
+this.alignment = al;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getSize",
+function () {
+if (this.hiddenSequences == null) {
+return 0;
+}var count = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+count++;
+}}
+return count;
+});
+Clazz.defineMethod (c$, "getWidth",
+function () {
+var width = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null && this.hiddenSequences[i].getLength () > width) {
+width = this.hiddenSequences[i].getLength ();
+}}
+return width;
+});
+Clazz.defineMethod (c$, "adjustHeightSequenceDeleted",
+function (seqIndex) {
+if (this.hiddenSequences == null) {
+return;
+}var alHeight = this.alignment.getHeight ();
+var tmp = new Array (alHeight + this.getSize ());
+var deletionIndex = this.adjustForHiddenSeqs (seqIndex);
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] == null) {
+continue;
+}if (i > deletionIndex) {
+tmp[i - 1] = this.hiddenSequences[i];
+} else {
+tmp[i] = this.hiddenSequences[i];
+}}
+this.hiddenSequences = tmp;
+}, "~N");
+Clazz.defineMethod (c$, "adjustHeightSequenceAdded",
+function () {
+if (this.hiddenSequences == null) {
+return;
+}var alHeight = this.alignment.getHeight ();
+var tmp = new Array (alHeight + this.getSize ());
+System.arraycopy (this.hiddenSequences, 0, tmp, 0, this.hiddenSequences.length);
+this.hiddenSequences = tmp;
+});
+Clazz.defineMethod (c$, "hideSequence",
+function (sequence) {
+if (this.hiddenSequences == null) {
+this.hiddenSequences = new Array (this.alignment.getHeight ());
+}var alignmentIndex = this.alignment.findIndex (sequence);
+alignmentIndex = this.adjustForHiddenSeqs (alignmentIndex);
+if (this.hiddenSequences[alignmentIndex] != null) {
+System.out.println ("ERROR!!!!!!!!!!!");
+}this.hiddenSequences[alignmentIndex] = sequence;
+this.alignment.deleteSequence (sequence);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "showAll",
+function (hiddenRepSequences) {
+var revealedSeqs = new java.util.ArrayList ();
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+var tmp = this.showSequence (i, hiddenRepSequences);
+for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+revealedSeqs.add (seq);
+}
+}}
+return revealedSeqs;
+}, "java.util.Map");
+Clazz.defineMethod (c$, "showSequence",
+function (alignmentIndex, hiddenRepSequences) {
+var revealedSeqs = new java.util.ArrayList ();
+var repSequence = this.alignment.getSequenceAt (alignmentIndex);
+if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey (repSequence)) {
+hiddenRepSequences.remove (repSequence);
+revealedSeqs.add (repSequence);
+}var start = this.adjustForHiddenSeqs (alignmentIndex - 1);
+var end = this.adjustForHiddenSeqs (alignmentIndex);
+if (end >= this.hiddenSequences.length) {
+end = this.hiddenSequences.length - 1;
+}var asequences;
+{
+for (var index = end; index > start; index--) {
+var seq = this.hiddenSequences[index];
+this.hiddenSequences[index] = null;
+if (seq != null) {
+if (seq.getLength () > 0) {
+revealedSeqs.add (seq);
+asequences.add (alignmentIndex, seq);
+} else {
+System.out.println (seq.getName () + " has been deleted whilst hidden");
+}}}
+}return revealedSeqs;
+}, "~N,java.util.Map");
+Clazz.defineMethod (c$, "getHiddenSequence",
+function (alignmentIndex) {
+return this.hiddenSequences[alignmentIndex];
+}, "~N");
+Clazz.defineMethod (c$, "findIndexWithoutHiddenSeqs",
+function (alignmentIndex) {
+var index = 0;
+var hiddenSeqs = 0;
+if (this.hiddenSequences.length <= alignmentIndex) {
+alignmentIndex = this.hiddenSequences.length - 1;
+}while (index <= alignmentIndex) {
+if (this.hiddenSequences[index] != null) {
+hiddenSeqs++;
+}index++;
+}
+;return (alignmentIndex - hiddenSeqs);
+}, "~N");
+Clazz.defineMethod (c$, "adjustForHiddenSeqs",
+function (alignmentIndex) {
+var index = 0;
+var hSize = this.hiddenSequences.length;
+while (index <= alignmentIndex && index < hSize) {
+if (this.hiddenSequences[index] != null) {
+alignmentIndex++;
+}index++;
+}
+;return alignmentIndex;
+}, "~N");
+Clazz.defineMethod (c$, "getFullAlignment",
+function () {
+var isize = this.hiddenSequences.length;
+var seq = new Array (isize);
+var index = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+seq[i] = this.hiddenSequences[i];
+} else {
+seq[i] = this.alignment.getSequenceAt (index);
+index++;
+}}
+var fAlignmt = new jalview.datamodel.Alignment (seq);
+fAlignmt.annotations = this.alignment.getAlignmentAnnotation ();
+fAlignmt.alignmentProperties = this.alignment.getProperties ();
+fAlignmt.groups = this.alignment.getGroups ();
+fAlignmt.$hasRNAStructure = this.alignment.hasRNAStructure ();
+return fAlignmt;
+});
+Clazz.defineMethod (c$, "isHidden",
+function (seq) {
+if (this.hiddenSequences != null) {
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null && this.hiddenSequences[i] === seq) {
+return true;
+}}
+}return false;
+}, "jalview.datamodel.SequenceI");
+});
diff --git a/bin/jalview/datamodel/IncompleteCodonException.js b/bin/jalview/datamodel/IncompleteCodonException.js
index 372d9dd..924024c 100644
--- a/bin/jalview/datamodel/IncompleteCodonException.js
+++ b/bin/jalview/datamodel/IncompleteCodonException.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.lang.RuntimeException"], "jalview.datamodel.IncompleteCodonException", null, function () {
-c$ = Clazz.declareType (jalview.datamodel, "IncompleteCodonException", RuntimeException);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.lang.RuntimeException"], "jalview.datamodel.IncompleteCodonException", null, function () {
+c$ = Clazz.declareType (jalview.datamodel, "IncompleteCodonException", RuntimeException);
+});
diff --git a/bin/jalview/datamodel/Mapping.js b/bin/jalview/datamodel/Mapping.js
index fe06fda..a25222e 100644
--- a/bin/jalview/datamodel/Mapping.js
+++ b/bin/jalview/datamodel/Mapping.js
@@ -1,304 +1,304 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.util.Iterator"], "jalview.datamodel.Mapping", ["jalview.datamodel.AlignedCodon", "$.IncompleteCodonException", "$.SequenceFeature", "jalview.util.MapList", "java.util.NoSuchElementException", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-if (!Clazz.isClassDefined ("jalview.datamodel.Mapping.AlignedCodonIterator")) {
-jalview.datamodel.Mapping.$Mapping$AlignedCodonIterator$ ();
-}
-this.map = null;
-this.to = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "Mapping");
-Clazz.makeConstructor (c$,
-function (map) {
-this.map = map;
-}, "jalview.util.MapList");
-Clazz.makeConstructor (c$,
-function (to, map) {
-this.construct (map);
-this.to = to;
-}, "jalview.datamodel.SequenceI,jalview.util.MapList");
-Clazz.makeConstructor (c$,
-function (to, exon, is, i, j) {
-this.construct (to, new jalview.util.MapList (exon, is, i, j));
-}, "jalview.datamodel.SequenceI,~A,~A,~N,~N");
-Clazz.makeConstructor (c$,
-function (map2) {
-if (map2 !== this && map2 != null) {
-if (map2.map != null) {
-this.map = new jalview.util.MapList (map2.map);
-}this.to = map2.to;
-}}, "jalview.datamodel.Mapping");
-Clazz.defineMethod (c$, "getMap",
-function () {
-return this.map;
-});
-Clazz.defineMethod (c$, "setMap",
-function (map) {
-this.map = map;
-}, "jalview.util.MapList");
-Clazz.overrideMethod (c$, "equals",
-function (o) {
-if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.Mapping))) {
-return false;
-}var other = o;
-if (other === this) {
-return true;
-}if (other.to !== this.to) {
-return false;
-}if ((this.map != null && other.map == null) || (this.map == null && other.map != null)) {
-return false;
-}if ((this.map == null && other.map == null) || this.map.equals (other.map)) {
-return true;
-}return false;
-}, "~O");
-Clazz.defineMethod (c$, "getPosition",
-function (mpos) {
-if (this.map != null) {
-var mp = this.map.shiftTo (mpos);
-if (mp != null) {
-return mp[0];
-}}return mpos;
-}, "~N");
-Clazz.defineMethod (c$, "getWord",
-function (mpos) {
-if (this.map != null) {
-return this.map.getToWord (mpos);
-}return null;
-}, "~N");
-Clazz.defineMethod (c$, "getWidth",
-function () {
-if (this.map != null) {
-return this.map.getFromRatio ();
-}return 1;
-});
-Clazz.defineMethod (c$, "getMappedWidth",
-function () {
-if (this.map != null) {
-return this.map.getToRatio ();
-}return 1;
-});
-Clazz.defineMethod (c$, "getMappedPosition",
-function (pos) {
-if (this.map != null) {
-var mp = this.map.shiftFrom (pos);
-if (mp != null) {
-return mp[0];
-}}return pos;
-}, "~N");
-Clazz.defineMethod (c$, "getMappedWord",
-function (pos) {
-if (this.map != null) {
-var mp = this.map.shiftFrom (pos);
-if (mp != null) {
-return Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.map.getToRatio () - 1)]);
-}}return null;
-}, "~N");
-Clazz.defineMethod (c$, "locateFeature",
-function (f) {
-if (true) {
-if (this.map != null) {
-var frange = this.map.locateInFrom (f.getBegin (), f.getEnd ());
-if (frange == null) {
-return null;
-}var vf = new Array (Clazz.doubleToInt (frange.length / 2));
-for (var i = 0, v = 0; i < frange.length; i += 2, v++) {
-vf[v] = new jalview.datamodel.SequenceFeature (f);
-vf[v].setBegin (frange[i]);
-vf[v].setEnd (frange[i + 1]);
-if (frange.length > 2) {
-vf[v].setDescription (f.getDescription () + "\nPart " + (v + 1));
-}}
-return vf;
-}}if (false) {
-var word = this.getWord (f.getBegin ());
-if (word[0] < word[1]) {
-f.setBegin (word[0]);
-} else {
-f.setBegin (word[1]);
-}word = this.getWord (f.getEnd ());
-if (word[0] > word[1]) {
-f.setEnd (word[0]);
-} else {
-f.setEnd (word[1]);
-}}return Clazz.newArray (-1, [f]);
-}, "jalview.datamodel.SequenceFeature");
-Clazz.defineMethod (c$, "locateRange",
-function (from, to) {
-if (this.map != null) {
-if (from <= to) {
-from = (this.map.getToLowest () < from) ? from : this.map.getToLowest ();
-to = (this.map.getToHighest () > to) ? to : this.map.getToHighest ();
-if (from > to) {
-return null;
-}} else {
-from = (this.map.getToHighest () > from) ? from : this.map.getToHighest ();
-to = (this.map.getToLowest () < to) ? to : this.map.getToLowest ();
-if (from < to) {
-return null;
-}}return this.map.locateInFrom (from, to);
-}return Clazz.newIntArray (-1, [from, to]);
-}, "~N,~N");
-Clazz.defineMethod (c$, "locateMappedRange",
-function (from, to) {
-if (this.map != null) {
-if (from <= to) {
-from = (this.map.getFromLowest () < from) ? from : this.map.getFromLowest ();
-to = (this.map.getFromHighest () > to) ? to : this.map.getFromHighest ();
-if (from > to) {
-return null;
-}} else {
-from = (this.map.getFromHighest () > from) ? from : this.map.getFromHighest ();
-to = (this.map.getFromLowest () < to) ? to : this.map.getFromLowest ();
-if (from < to) {
-return null;
-}}return this.map.locateInTo (from, to);
-}return Clazz.newIntArray (-1, [from, to]);
-}, "~N,~N");
-Clazz.defineMethod (c$, "intersectVisContigs",
-function (viscontigs) {
-var copy = new jalview.datamodel.Mapping (this);
-if (this.map != null) {
-var vpos = 0;
-var apos = 0;
-var toRange = new java.util.Vector ();
-var fromRange = new java.util.Vector ();
-for (var vc = 0; vc < viscontigs.length; vc += 2) {
-var mpr = this.locateMappedRange (1 + viscontigs[vc], viscontigs[vc + 1] - 1);
-if (mpr != null) {
-for (var m = 0; m < mpr.length; m += 2) {
-toRange.addElement ( Clazz.newIntArray (-1, [mpr[m], mpr[m + 1]]));
-var xpos = this.locateRange (mpr[m], mpr[m + 1]);
-for (var x = 0; x < xpos.length; x += 2) {
-fromRange.addElement ( Clazz.newIntArray (-1, [xpos[x], xpos[x + 1]]));
-}
-}
-}}
-var from = Clazz.newIntArray (fromRange.size () * 2, 0);
-var to = Clazz.newIntArray (toRange.size () * 2, 0);
-var r;
-for (var f = 0, fSize = fromRange.size (); f < fSize; f++) {
-r = fromRange.elementAt (f);
-from[f * 2] = r[0];
-from[f * 2 + 1] = r[1];
-}
-for (var f = 0, fSize = toRange.size (); f < fSize; f++) {
-r = toRange.elementAt (f);
-to[f * 2] = r[0];
-to[f * 2 + 1] = r[1];
-}
-copy.setMap ( new jalview.util.MapList (from, to, this.map.getFromRatio (), this.map.getToRatio ()));
-}return copy;
-}, "~A");
-Clazz.defineMethod (c$, "getTo",
-function () {
-return this.to;
-});
-Clazz.defineMethod (c$, "setTo",
-function (tto) {
-this.to = tto;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "finalize",
-function () {
-this.map = null;
-this.to = null;
-Clazz.superCall (this, jalview.datamodel.Mapping, "finalize", []);
-});
-Clazz.defineMethod (c$, "getCodonIterator",
-function (seq, gapChar) {
-return Clazz.innerTypeInstance (jalview.datamodel.Mapping.AlignedCodonIterator, this, null, seq.getSequence (), gapChar);
-}, "jalview.datamodel.SequenceI,~S");
-c$.$Mapping$AlignedCodonIterator$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.gap = '\0';
-this.alignedSeq = null;
-this.alignedColumn = 0;
-this.alignedBases = 0;
-this.fromRanges = null;
-this.toRanges = null;
-this.currentFromRange = null;
-this.currentToRange = null;
-this.fromPosition = 0;
-this.toPosition = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel.Mapping, "AlignedCodonIterator", null, java.util.Iterator);
-Clazz.makeConstructor (c$,
-function (a, b) {
-this.alignedSeq = a;
-this.gap = b;
-this.fromRanges = this.b$["jalview.datamodel.Mapping"].map.getFromRanges ().iterator ();
-this.toRanges = this.b$["jalview.datamodel.Mapping"].map.getToRanges ().iterator ();
-if (this.fromRanges.hasNext ()) {
-this.currentFromRange = this.fromRanges.next ();
-this.fromPosition = this.currentFromRange[0];
-}if (this.toRanges.hasNext ()) {
-this.currentToRange = this.toRanges.next ();
-this.toPosition = this.currentToRange[0];
-}}, "~A,~S");
-Clazz.defineMethod (c$, "hasNext",
-function () {
-if (this.fromRanges.hasNext ()) {
-return true;
-}if (this.currentFromRange == null || this.fromPosition >= this.currentFromRange[1]) {
-return false;
-}return true;
-});
-Clazz.overrideMethod (c$, "next",
-function () {
-if (!this.hasNext ()) {
-throw new java.util.NoSuchElementException ();
-}var a = this.getNextCodon ();
-var b = this.getAlignedCodon (a);
-var c = this.getPeptide ();
-return new jalview.datamodel.AlignedCodon (b[0], b[1], b[2], c);
-});
-Clazz.defineMethod (c$, "getPeptide",
-($fz = function () {
-if (this.toPosition <= this.currentToRange[1]) {
-var a = this.b$["jalview.datamodel.Mapping"].to.getSequence ()[this.toPosition - 1];
-this.toPosition++;
-return String.valueOf (a);
-}if (!this.toRanges.hasNext ()) {
-throw new java.util.NoSuchElementException ("Ran out of peptide at position " + this.toPosition);
-}this.currentToRange = this.toRanges.next ();
-this.toPosition = this.currentToRange[0];
-return this.getPeptide ();
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "getNextCodon",
-($fz = function () {
-var a = Clazz.newIntArray (3, 0);
-var b = 0;
-while (b < 3) {
-if (this.fromPosition <= this.currentFromRange[1]) {
-a[b++] = this.fromPosition++;
-} else {
-if (!this.fromRanges.hasNext ()) {
-throw new jalview.datamodel.IncompleteCodonException ();
-}this.currentFromRange = this.fromRanges.next ();
-this.fromPosition = this.currentFromRange[0];
-}}
-return a;
-}, $fz.isPrivate = true, $fz));
-Clazz.defineMethod (c$, "getAlignedCodon",
-($fz = function (a) {
-var b = Clazz.newIntArray (a.length, 0);
-for (var c = 0; c < a.length; c++) {
-b[c] = this.getAlignedColumn (a[c]);
-}
-return b;
-}, $fz.isPrivate = true, $fz), "~A");
-Clazz.defineMethod (c$, "getAlignedColumn",
-($fz = function (a) {
-while (this.alignedBases < a && this.alignedColumn < this.alignedSeq.length) {
-if (this.alignedSeq[this.alignedColumn++] != this.gap) {
-this.alignedBases++;
-}}
-return this.alignedColumn - 1;
-}, $fz.isPrivate = true, $fz), "~N");
-Clazz.overrideMethod (c$, "remove",
-function () {
-});
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.Iterator"], "jalview.datamodel.Mapping", ["jalview.datamodel.AlignedCodon", "$.IncompleteCodonException", "$.SequenceFeature", "jalview.util.MapList", "java.util.NoSuchElementException", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.datamodel.Mapping.AlignedCodonIterator")) {
+jalview.datamodel.Mapping.$Mapping$AlignedCodonIterator$ ();
+}
+this.map = null;
+this.to = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Mapping");
+Clazz.makeConstructor (c$,
+function (map) {
+this.map = map;
+}, "jalview.util.MapList");
+Clazz.makeConstructor (c$,
+function (to, map) {
+this.construct (map);
+this.to = to;
+}, "jalview.datamodel.SequenceI,jalview.util.MapList");
+Clazz.makeConstructor (c$,
+function (to, exon, is, i, j) {
+this.construct (to, new jalview.util.MapList (exon, is, i, j));
+}, "jalview.datamodel.SequenceI,~A,~A,~N,~N");
+Clazz.makeConstructor (c$,
+function (map2) {
+if (map2 !== this && map2 != null) {
+if (map2.map != null) {
+this.map = new jalview.util.MapList (map2.map);
+}this.to = map2.to;
+}}, "jalview.datamodel.Mapping");
+Clazz.defineMethod (c$, "getMap",
+function () {
+return this.map;
+});
+Clazz.defineMethod (c$, "setMap",
+function (map) {
+this.map = map;
+}, "jalview.util.MapList");
+Clazz.overrideMethod (c$, "equals",
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.Mapping))) {
+return false;
+}var other = o;
+if (other === this) {
+return true;
+}if (other.to !== this.to) {
+return false;
+}if ((this.map != null && other.map == null) || (this.map == null && other.map != null)) {
+return false;
+}if ((this.map == null && other.map == null) || this.map.equals (other.map)) {
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "getPosition",
+function (mpos) {
+if (this.map != null) {
+var mp = this.map.shiftTo (mpos);
+if (mp != null) {
+return mp[0];
+}}return mpos;
+}, "~N");
+Clazz.defineMethod (c$, "getWord",
+function (mpos) {
+if (this.map != null) {
+return this.map.getToWord (mpos);
+}return null;
+}, "~N");
+Clazz.defineMethod (c$, "getWidth",
+function () {
+if (this.map != null) {
+return this.map.getFromRatio ();
+}return 1;
+});
+Clazz.defineMethod (c$, "getMappedWidth",
+function () {
+if (this.map != null) {
+return this.map.getToRatio ();
+}return 1;
+});
+Clazz.defineMethod (c$, "getMappedPosition",
+function (pos) {
+if (this.map != null) {
+var mp = this.map.shiftFrom (pos);
+if (mp != null) {
+return mp[0];
+}}return pos;
+}, "~N");
+Clazz.defineMethod (c$, "getMappedWord",
+function (pos) {
+if (this.map != null) {
+var mp = this.map.shiftFrom (pos);
+if (mp != null) {
+return Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.map.getToRatio () - 1)]);
+}}return null;
+}, "~N");
+Clazz.defineMethod (c$, "locateFeature",
+function (f) {
+if (true) {
+if (this.map != null) {
+var frange = this.map.locateInFrom (f.getBegin (), f.getEnd ());
+if (frange == null) {
+return null;
+}var vf = new Array (Clazz.doubleToInt (frange.length / 2));
+for (var i = 0, v = 0; i < frange.length; i += 2, v++) {
+vf[v] = new jalview.datamodel.SequenceFeature (f);
+vf[v].setBegin (frange[i]);
+vf[v].setEnd (frange[i + 1]);
+if (frange.length > 2) {
+vf[v].setDescription (f.getDescription () + "\nPart " + (v + 1));
+}}
+return vf;
+}}if (false) {
+var word = this.getWord (f.getBegin ());
+if (word[0] < word[1]) {
+f.setBegin (word[0]);
+} else {
+f.setBegin (word[1]);
+}word = this.getWord (f.getEnd ());
+if (word[0] > word[1]) {
+f.setEnd (word[0]);
+} else {
+f.setEnd (word[1]);
+}}return Clazz.newArray (-1, [f]);
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "locateRange",
+function (from, to) {
+if (this.map != null) {
+if (from <= to) {
+from = (this.map.getToLowest () < from) ? from : this.map.getToLowest ();
+to = (this.map.getToHighest () > to) ? to : this.map.getToHighest ();
+if (from > to) {
+return null;
+}} else {
+from = (this.map.getToHighest () > from) ? from : this.map.getToHighest ();
+to = (this.map.getToLowest () < to) ? to : this.map.getToLowest ();
+if (from < to) {
+return null;
+}}return this.map.locateInFrom (from, to);
+}return Clazz.newIntArray (-1, [from, to]);
+}, "~N,~N");
+Clazz.defineMethod (c$, "locateMappedRange",
+function (from, to) {
+if (this.map != null) {
+if (from <= to) {
+from = (this.map.getFromLowest () < from) ? from : this.map.getFromLowest ();
+to = (this.map.getFromHighest () > to) ? to : this.map.getFromHighest ();
+if (from > to) {
+return null;
+}} else {
+from = (this.map.getFromHighest () > from) ? from : this.map.getFromHighest ();
+to = (this.map.getFromLowest () < to) ? to : this.map.getFromLowest ();
+if (from < to) {
+return null;
+}}return this.map.locateInTo (from, to);
+}return Clazz.newIntArray (-1, [from, to]);
+}, "~N,~N");
+Clazz.defineMethod (c$, "intersectVisContigs",
+function (viscontigs) {
+var copy = new jalview.datamodel.Mapping (this);
+if (this.map != null) {
+var vpos = 0;
+var apos = 0;
+var toRange = new java.util.Vector ();
+var fromRange = new java.util.Vector ();
+for (var vc = 0; vc < viscontigs.length; vc += 2) {
+var mpr = this.locateMappedRange (1 + viscontigs[vc], viscontigs[vc + 1] - 1);
+if (mpr != null) {
+for (var m = 0; m < mpr.length; m += 2) {
+toRange.addElement ( Clazz.newIntArray (-1, [mpr[m], mpr[m + 1]]));
+var xpos = this.locateRange (mpr[m], mpr[m + 1]);
+for (var x = 0; x < xpos.length; x += 2) {
+fromRange.addElement ( Clazz.newIntArray (-1, [xpos[x], xpos[x + 1]]));
+}
+}
+}}
+var from = Clazz.newIntArray (fromRange.size () * 2, 0);
+var to = Clazz.newIntArray (toRange.size () * 2, 0);
+var r;
+for (var f = 0, fSize = fromRange.size (); f < fSize; f++) {
+r = fromRange.elementAt (f);
+from[f * 2] = r[0];
+from[f * 2 + 1] = r[1];
+}
+for (var f = 0, fSize = toRange.size (); f < fSize; f++) {
+r = toRange.elementAt (f);
+to[f * 2] = r[0];
+to[f * 2 + 1] = r[1];
+}
+copy.setMap ( new jalview.util.MapList (from, to, this.map.getFromRatio (), this.map.getToRatio ()));
+}return copy;
+}, "~A");
+Clazz.defineMethod (c$, "getTo",
+function () {
+return this.to;
+});
+Clazz.defineMethod (c$, "setTo",
+function (tto) {
+this.to = tto;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "finalize",
+function () {
+this.map = null;
+this.to = null;
+Clazz.superCall (this, jalview.datamodel.Mapping, "finalize", []);
+});
+Clazz.defineMethod (c$, "getCodonIterator",
+function (seq, gapChar) {
+return Clazz.innerTypeInstance (jalview.datamodel.Mapping.AlignedCodonIterator, this, null, seq.getSequence (), gapChar);
+}, "jalview.datamodel.SequenceI,~S");
+c$.$Mapping$AlignedCodonIterator$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.gap = '\0';
+this.alignedSeq = null;
+this.alignedColumn = 0;
+this.alignedBases = 0;
+this.fromRanges = null;
+this.toRanges = null;
+this.currentFromRange = null;
+this.currentToRange = null;
+this.fromPosition = 0;
+this.toPosition = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.Mapping, "AlignedCodonIterator", null, java.util.Iterator);
+Clazz.makeConstructor (c$,
+function (a, b) {
+this.alignedSeq = a;
+this.gap = b;
+this.fromRanges = this.b$["jalview.datamodel.Mapping"].map.getFromRanges ().iterator ();
+this.toRanges = this.b$["jalview.datamodel.Mapping"].map.getToRanges ().iterator ();
+if (this.fromRanges.hasNext ()) {
+this.currentFromRange = this.fromRanges.next ();
+this.fromPosition = this.currentFromRange[0];
+}if (this.toRanges.hasNext ()) {
+this.currentToRange = this.toRanges.next ();
+this.toPosition = this.currentToRange[0];
+}}, "~A,~S");
+Clazz.defineMethod (c$, "hasNext",
+function () {
+if (this.fromRanges.hasNext ()) {
+return true;
+}if (this.currentFromRange == null || this.fromPosition >= this.currentFromRange[1]) {
+return false;
+}return true;
+});
+Clazz.overrideMethod (c$, "next",
+function () {
+if (!this.hasNext ()) {
+throw new java.util.NoSuchElementException ();
+}var a = this.getNextCodon ();
+var b = this.getAlignedCodon (a);
+var c = this.getPeptide ();
+return new jalview.datamodel.AlignedCodon (b[0], b[1], b[2], c);
+});
+Clazz.defineMethod (c$, "getPeptide",
+($fz = function () {
+if (this.toPosition <= this.currentToRange[1]) {
+var a = this.b$["jalview.datamodel.Mapping"].to.getSequence ()[this.toPosition - 1];
+this.toPosition++;
+return String.valueOf (a);
+}if (!this.toRanges.hasNext ()) {
+throw new java.util.NoSuchElementException ("Ran out of peptide at position " + this.toPosition);
+}this.currentToRange = this.toRanges.next ();
+this.toPosition = this.currentToRange[0];
+return this.getPeptide ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getNextCodon",
+($fz = function () {
+var a = Clazz.newIntArray (3, 0);
+var b = 0;
+while (b < 3) {
+if (this.fromPosition <= this.currentFromRange[1]) {
+a[b++] = this.fromPosition++;
+} else {
+if (!this.fromRanges.hasNext ()) {
+throw new jalview.datamodel.IncompleteCodonException ();
+}this.currentFromRange = this.fromRanges.next ();
+this.fromPosition = this.currentFromRange[0];
+}}
+return a;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getAlignedCodon",
+($fz = function (a) {
+var b = Clazz.newIntArray (a.length, 0);
+for (var c = 0; c < a.length; c++) {
+b[c] = this.getAlignedColumn (a[c]);
+}
+return b;
+}, $fz.isPrivate = true, $fz), "~A");
+Clazz.defineMethod (c$, "getAlignedColumn",
+($fz = function (a) {
+while (this.alignedBases < a && this.alignedColumn < this.alignedSeq.length) {
+if (this.alignedSeq[this.alignedColumn++] != this.gap) {
+this.alignedBases++;
+}}
+return this.alignedColumn - 1;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.overrideMethod (c$, "remove",
+function () {
+});
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/datamodel/NodeTransformI.js b/bin/jalview/datamodel/NodeTransformI.js
index 83ace63..0f7a757 100644
--- a/bin/jalview/datamodel/NodeTransformI.js
+++ b/bin/jalview/datamodel/NodeTransformI.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.declareInterface (jalview.datamodel, "NodeTransformI");
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.declareInterface (jalview.datamodel, "NodeTransformI");
diff --git a/bin/jalview/datamodel/PDBEntry.js b/bin/jalview/datamodel/PDBEntry.js
index e52f785..e153399 100644
--- a/bin/jalview/datamodel/PDBEntry.js
+++ b/bin/jalview/datamodel/PDBEntry.js
@@ -1,88 +1,88 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.lang.Enum"], "jalview.datamodel.PDBEntry", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.file = null;
-this.type = null;
-this.id = null;
-this.chainCode = null;
-this.properties = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "PDBEntry");
-Clazz.overrideMethod (c$, "equals",
-function (obj) {
-if (obj == null || !(Clazz.instanceOf (obj, jalview.datamodel.PDBEntry))) {
-return false;
-}if (obj === this) {
-return true;
-}var o = obj;
-return (this.type === o.type || (this.type != null && o.type != null && o.type.equals (this.type))) && (this.id === o.id || (this.id != null && o.id != null && o.id.equalsIgnoreCase (this.id))) && (this.chainCode === o.chainCode || (this.chainCode != null && o.chainCode != null && o.chainCode.equalsIgnoreCase (this.chainCode))) && (this.properties === o.properties || (this.properties != null && o.properties != null && this.properties.equals (o.properties)));
-}, "~O");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.makeConstructor (c$,
-function (pdbId, chain, type, filePath) {
-this.id = pdbId;
-this.chainCode = chain;
-this.type = type == null ? null : type.toString ();
-this.file = filePath;
-}, "~S,~S,jalview.datamodel.PDBEntry.Type,~S");
-Clazz.makeConstructor (c$,
-function (entry) {
-this.file = entry.file;
-this.type = entry.type;
-this.id = entry.id;
-this.chainCode = entry.chainCode;
-if (entry.properties != null) {
-this.properties = entry.properties.clone ();
-}}, "jalview.datamodel.PDBEntry");
-Clazz.defineMethod (c$, "setFile",
-function (file) {
-this.file = file;
-}, "~S");
-Clazz.defineMethod (c$, "getFile",
-function () {
-return this.file;
-});
-Clazz.defineMethod (c$, "setType",
-function (t) {
-this.type = t;
-}, "~S");
-Clazz.defineMethod (c$, "setType",
-function (type) {
-this.type = type == null ? null : type.toString ();
-}, "jalview.datamodel.PDBEntry.Type");
-Clazz.defineMethod (c$, "getType",
-function () {
-return this.type;
-});
-Clazz.defineMethod (c$, "setId",
-function (id) {
-this.id = id;
-}, "~S");
-Clazz.defineMethod (c$, "getId",
-function () {
-return this.id;
-});
-Clazz.defineMethod (c$, "setProperty",
-function (property) {
-this.properties = property;
-}, "java.util.Hashtable");
-Clazz.defineMethod (c$, "getProperty",
-function () {
-return this.properties;
-});
-Clazz.defineMethod (c$, "getChainCode",
-function () {
-return this.chainCode;
-});
-Clazz.defineMethod (c$, "setChainCode",
-function (chainCode) {
-this.chainCode = chainCode;
-}, "~S");
-Clazz.pu$h ();
-c$ = Clazz.declareType (jalview.datamodel.PDBEntry, "Type", Enum);
-Clazz.defineEnumConstant (c$, "PDB", 0, []);
-Clazz.defineEnumConstant (c$, "FILE", 1, []);
-c$ = Clazz.p0p ();
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.lang.Enum"], "jalview.datamodel.PDBEntry", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.file = null;
+this.type = null;
+this.id = null;
+this.chainCode = null;
+this.properties = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "PDBEntry");
+Clazz.overrideMethod (c$, "equals",
+function (obj) {
+if (obj == null || !(Clazz.instanceOf (obj, jalview.datamodel.PDBEntry))) {
+return false;
+}if (obj === this) {
+return true;
+}var o = obj;
+return (this.type === o.type || (this.type != null && o.type != null && o.type.equals (this.type))) && (this.id === o.id || (this.id != null && o.id != null && o.id.equalsIgnoreCase (this.id))) && (this.chainCode === o.chainCode || (this.chainCode != null && o.chainCode != null && o.chainCode.equalsIgnoreCase (this.chainCode))) && (this.properties === o.properties || (this.properties != null && o.properties != null && this.properties.equals (o.properties)));
+}, "~O");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.makeConstructor (c$,
+function (pdbId, chain, type, filePath) {
+this.id = pdbId;
+this.chainCode = chain;
+this.type = type == null ? null : type.toString ();
+this.file = filePath;
+}, "~S,~S,jalview.datamodel.PDBEntry.Type,~S");
+Clazz.makeConstructor (c$,
+function (entry) {
+this.file = entry.file;
+this.type = entry.type;
+this.id = entry.id;
+this.chainCode = entry.chainCode;
+if (entry.properties != null) {
+this.properties = entry.properties.clone ();
+}}, "jalview.datamodel.PDBEntry");
+Clazz.defineMethod (c$, "setFile",
+function (file) {
+this.file = file;
+}, "~S");
+Clazz.defineMethod (c$, "getFile",
+function () {
+return this.file;
+});
+Clazz.defineMethod (c$, "setType",
+function (t) {
+this.type = t;
+}, "~S");
+Clazz.defineMethod (c$, "setType",
+function (type) {
+this.type = type == null ? null : type.toString ();
+}, "jalview.datamodel.PDBEntry.Type");
+Clazz.defineMethod (c$, "getType",
+function () {
+return this.type;
+});
+Clazz.defineMethod (c$, "setId",
+function (id) {
+this.id = id;
+}, "~S");
+Clazz.defineMethod (c$, "getId",
+function () {
+return this.id;
+});
+Clazz.defineMethod (c$, "setProperty",
+function (property) {
+this.properties = property;
+}, "java.util.Hashtable");
+Clazz.defineMethod (c$, "getProperty",
+function () {
+return this.properties;
+});
+Clazz.defineMethod (c$, "getChainCode",
+function () {
+return this.chainCode;
+});
+Clazz.defineMethod (c$, "setChainCode",
+function (chainCode) {
+this.chainCode = chainCode;
+}, "~S");
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.datamodel.PDBEntry, "Type", Enum);
+Clazz.defineEnumConstant (c$, "PDB", 0, []);
+Clazz.defineEnumConstant (c$, "FILE", 1, []);
+c$ = Clazz.p0p ();
+});
diff --git a/bin/jalview/datamodel/Provenance.js b/bin/jalview/datamodel/Provenance.js
index 04f873e..c0180ea 100644
--- a/bin/jalview/datamodel/Provenance.js
+++ b/bin/jalview/datamodel/Provenance.js
@@ -1,25 +1,25 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.util.Vector"], "jalview.datamodel.Provenance", ["jalview.datamodel.ProvenanceEntry"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.entries = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "Provenance");
-Clazz.prepareFields (c$, function () {
-this.entries = new java.util.Vector ();
-});
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.defineMethod (c$, "getEntries",
-function () {
-var ret = new Array (this.entries.size ());
-for (var i = 0; i < this.entries.size (); i++) {
-ret[i] = this.entries.elementAt (i);
-}
-return ret;
-});
-Clazz.defineMethod (c$, "addEntry",
-function (user, action, date, id) {
-this.entries.addElement ( new jalview.datamodel.ProvenanceEntry (user, action, date, id));
-}, "~S,~S,java.util.Date,~S");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.Vector"], "jalview.datamodel.Provenance", ["jalview.datamodel.ProvenanceEntry"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.entries = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Provenance");
+Clazz.prepareFields (c$, function () {
+this.entries = new java.util.Vector ();
+});
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.defineMethod (c$, "getEntries",
+function () {
+var ret = new Array (this.entries.size ());
+for (var i = 0; i < this.entries.size (); i++) {
+ret[i] = this.entries.elementAt (i);
+}
+return ret;
+});
+Clazz.defineMethod (c$, "addEntry",
+function (user, action, date, id) {
+this.entries.addElement ( new jalview.datamodel.ProvenanceEntry (user, action, date, id));
+}, "~S,~S,java.util.Date,~S");
+});
diff --git a/bin/jalview/datamodel/ProvenanceEntry.js b/bin/jalview/datamodel/ProvenanceEntry.js
index 5077d90..1283717 100644
--- a/bin/jalview/datamodel/ProvenanceEntry.js
+++ b/bin/jalview/datamodel/ProvenanceEntry.js
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this.user = null;
-this.action = null;
-this.id = null;
-this.date = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "ProvenanceEntry");
-Clazz.makeConstructor (c$,
-function (u, a, d, i) {
-this.user = u;
-this.action = a;
-this.date = d;
-this.id = i;
-}, "~S,~S,java.util.Date,~S");
-Clazz.defineMethod (c$, "getUser",
-function () {
-return this.user;
-});
-Clazz.defineMethod (c$, "getAction",
-function () {
-return this.action;
-});
-Clazz.defineMethod (c$, "getDate",
-function () {
-return this.date;
-});
-Clazz.defineMethod (c$, "getID",
-function () {
-return this.id;
-});
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.user = null;
+this.action = null;
+this.id = null;
+this.date = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "ProvenanceEntry");
+Clazz.makeConstructor (c$,
+function (u, a, d, i) {
+this.user = u;
+this.action = a;
+this.date = d;
+this.id = i;
+}, "~S,~S,java.util.Date,~S");
+Clazz.defineMethod (c$, "getUser",
+function () {
+return this.user;
+});
+Clazz.defineMethod (c$, "getAction",
+function () {
+return this.action;
+});
+Clazz.defineMethod (c$, "getDate",
+function () {
+return this.date;
+});
+Clazz.defineMethod (c$, "getID",
+function () {
+return this.id;
+});
diff --git a/bin/jalview/datamodel/RnaViewerModel.js b/bin/jalview/datamodel/RnaViewerModel.js
index 2e64a80..612cdda 100644
--- a/bin/jalview/datamodel/RnaViewerModel.js
+++ b/bin/jalview/datamodel/RnaViewerModel.js
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this.viewId = null;
-this.title = null;
-this.x = 0;
-this.y = 0;
-this.width = 0;
-this.height = 0;
-this.dividerLocation = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "RnaViewerModel");
-Clazz.makeConstructor (c$,
-function (viewId, title, xpos, ypos, width, height, dividerLocation) {
-this.viewId = viewId;
-this.title = title;
-this.x = xpos;
-this.y = ypos;
-this.width = width;
-this.height = height;
-this.dividerLocation = dividerLocation;
-}, "~S,~S,~N,~N,~N,~N,~N");
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.viewId = null;
+this.title = null;
+this.x = 0;
+this.y = 0;
+this.width = 0;
+this.height = 0;
+this.dividerLocation = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "RnaViewerModel");
+Clazz.makeConstructor (c$,
+function (viewId, title, xpos, ypos, width, height, dividerLocation) {
+this.viewId = viewId;
+this.title = title;
+this.x = xpos;
+this.y = ypos;
+this.width = width;
+this.height = height;
+this.dividerLocation = dividerLocation;
+}, "~S,~S,~N,~N,~N,~N,~N");
diff --git a/bin/jalview/datamodel/SearchResults.js b/bin/jalview/datamodel/SearchResults.js
index 74170de..e82bfa5 100644
--- a/bin/jalview/datamodel/SearchResults.js
+++ b/bin/jalview/datamodel/SearchResults.js
@@ -1,137 +1,137 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.util.ArrayList"], "jalview.datamodel.SearchResults", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.matches = null;
-if (!Clazz.isClassDefined ("jalview.datamodel.SearchResults.Match")) {
-jalview.datamodel.SearchResults.$SearchResults$Match$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "SearchResults");
-Clazz.prepareFields (c$, function () {
-this.matches = new java.util.ArrayList ();
-});
-Clazz.defineMethod (c$, "addResult",
-function (seq, start, end) {
-this.matches.add (Clazz.innerTypeInstance (jalview.datamodel.SearchResults.Match, this, null, seq, start, end));
-}, "jalview.datamodel.SequenceI,~N,~N");
-Clazz.defineMethod (c$, "involvesSequence",
-function (sequence) {
-var ds = sequence.getDatasetSequence ();
-for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
-if (m.sequence != null && (m.sequence === sequence || m.sequence === ds)) {
-return true;
-}}
-return false;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getResults",
-function (sequence, start, end) {
-if (this.matches.isEmpty ()) {
-return null;
-}var result = null;
-var tmp = null;
-var resultLength;
-var matchStart = 0;
-var matchEnd = 0;
-var mfound;
-for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
-mfound = false;
-if (m.sequence === sequence) {
-mfound = true;
-matchStart = sequence.findIndex (m.start) - 1;
-matchEnd = sequence.findIndex (m.end) - 1;
-} else if (m.sequence === sequence.getDatasetSequence ()) {
-mfound = true;
-matchStart = sequence.findIndex (m.start) - 1;
-matchEnd = sequence.findIndex (m.end) - 1;
-}if (mfound) {
-if (matchStart <= end && matchEnd >= start) {
-if (matchStart < start) {
-matchStart = start;
-}if (matchEnd > end) {
-matchEnd = end;
-}if (result == null) {
-result = Clazz.newIntArray (-1, [matchStart, matchEnd]);
-} else {
-resultLength = result.length;
-tmp = Clazz.newIntArray (resultLength + 2, 0);
-System.arraycopy (result, 0, tmp, 0, resultLength);
-result = tmp;
-result[resultLength] = matchStart;
-result[resultLength + 1] = matchEnd;
-}} else {
-}}}
-return result;
-}, "jalview.datamodel.SequenceI,~N,~N");
-Clazz.defineMethod (c$, "getSize",
-function () {
-return this.matches.size ();
-});
-Clazz.defineMethod (c$, "getResultSequence",
-function (index) {
-return this.matches.get (index).sequence;
-}, "~N");
-Clazz.defineMethod (c$, "getResultStart",
-function (i) {
-return this.matches.get (i).start;
-}, "~N");
-Clazz.defineMethod (c$, "getResultEnd",
-function (i) {
-return this.matches.get (i).end;
-}, "~N");
-Clazz.defineMethod (c$, "isEmpty",
-function () {
-return this.matches.isEmpty ();
-});
-Clazz.defineMethod (c$, "getResults",
-function () {
-return this.matches;
-});
-Clazz.overrideMethod (c$, "toString",
-function () {
-var result = new StringBuilder (256);
-for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
-result.append (m.toString ());
-}
-return result.toString ();
-});
-c$.$SearchResults$Match$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.sequence = null;
-this.start = 0;
-this.end = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel.SearchResults, "Match");
-Clazz.makeConstructor (c$,
-function (a, b, c) {
-this.sequence = a;
-this.start = b;
-this.end = c;
-}, "jalview.datamodel.SequenceI,~N,~N");
-Clazz.defineMethod (c$, "getSequence",
-function () {
-return this.sequence;
-});
-Clazz.defineMethod (c$, "getStart",
-function () {
-return this.start;
-});
-Clazz.defineMethod (c$, "getEnd",
-function () {
-return this.end;
-});
-Clazz.overrideMethod (c$, "toString",
-function () {
-var a = this.sequence.getSequence ();
-var b = Math.max (this.start - 1, 0);
-var c = Math.min (this.end, a.length + 1);
-return String.valueOf (java.util.Arrays.copyOfRange (a, b, c));
-});
-Clazz.defineMethod (c$, "setSequence",
-function (a) {
-this.sequence = a;
-}, "jalview.datamodel.SequenceI");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.ArrayList"], "jalview.datamodel.SearchResults", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.matches = null;
+if (!Clazz.isClassDefined ("jalview.datamodel.SearchResults.Match")) {
+jalview.datamodel.SearchResults.$SearchResults$Match$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SearchResults");
+Clazz.prepareFields (c$, function () {
+this.matches = new java.util.ArrayList ();
+});
+Clazz.defineMethod (c$, "addResult",
+function (seq, start, end) {
+this.matches.add (Clazz.innerTypeInstance (jalview.datamodel.SearchResults.Match, this, null, seq, start, end));
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "involvesSequence",
+function (sequence) {
+var ds = sequence.getDatasetSequence ();
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+if (m.sequence != null && (m.sequence === sequence || m.sequence === ds)) {
+return true;
+}}
+return false;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getResults",
+function (sequence, start, end) {
+if (this.matches.isEmpty ()) {
+return null;
+}var result = null;
+var tmp = null;
+var resultLength;
+var matchStart = 0;
+var matchEnd = 0;
+var mfound;
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mfound = false;
+if (m.sequence === sequence) {
+mfound = true;
+matchStart = sequence.findIndex (m.start) - 1;
+matchEnd = sequence.findIndex (m.end) - 1;
+} else if (m.sequence === sequence.getDatasetSequence ()) {
+mfound = true;
+matchStart = sequence.findIndex (m.start) - 1;
+matchEnd = sequence.findIndex (m.end) - 1;
+}if (mfound) {
+if (matchStart <= end && matchEnd >= start) {
+if (matchStart < start) {
+matchStart = start;
+}if (matchEnd > end) {
+matchEnd = end;
+}if (result == null) {
+result = Clazz.newIntArray (-1, [matchStart, matchEnd]);
+} else {
+resultLength = result.length;
+tmp = Clazz.newIntArray (resultLength + 2, 0);
+System.arraycopy (result, 0, tmp, 0, resultLength);
+result = tmp;
+result[resultLength] = matchStart;
+result[resultLength + 1] = matchEnd;
+}} else {
+}}}
+return result;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "getSize",
+function () {
+return this.matches.size ();
+});
+Clazz.defineMethod (c$, "getResultSequence",
+function (index) {
+return this.matches.get (index).sequence;
+}, "~N");
+Clazz.defineMethod (c$, "getResultStart",
+function (i) {
+return this.matches.get (i).start;
+}, "~N");
+Clazz.defineMethod (c$, "getResultEnd",
+function (i) {
+return this.matches.get (i).end;
+}, "~N");
+Clazz.defineMethod (c$, "isEmpty",
+function () {
+return this.matches.isEmpty ();
+});
+Clazz.defineMethod (c$, "getResults",
+function () {
+return this.matches;
+});
+Clazz.overrideMethod (c$, "toString",
+function () {
+var result = new StringBuilder (256);
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+result.append (m.toString ());
+}
+return result.toString ();
+});
+c$.$SearchResults$Match$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.sequence = null;
+this.start = 0;
+this.end = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.SearchResults, "Match");
+Clazz.makeConstructor (c$,
+function (a, b, c) {
+this.sequence = a;
+this.start = b;
+this.end = c;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "getSequence",
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "getStart",
+function () {
+return this.start;
+});
+Clazz.defineMethod (c$, "getEnd",
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "toString",
+function () {
+var a = this.sequence.getSequence ();
+var b = Math.max (this.start - 1, 0);
+var c = Math.min (this.end, a.length + 1);
+return String.valueOf (java.util.Arrays.copyOfRange (a, b, c));
+});
+Clazz.defineMethod (c$, "setSequence",
+function (a) {
+this.sequence = a;
+}, "jalview.datamodel.SequenceI");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/datamodel/SecondaryStructureAnnotation.js b/bin/jalview/datamodel/SecondaryStructureAnnotation.js
index 6a35ad3..2d1eb58 100644
--- a/bin/jalview/datamodel/SecondaryStructureAnnotation.js
+++ b/bin/jalview/datamodel/SecondaryStructureAnnotation.js
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.AlignmentAnnotation"], "jalview.datamodel.SecondaryStructureAnnotation", ["jalview.datamodel.Annotation"], function () {
-c$ = Clazz.declareType (jalview.datamodel, "SecondaryStructureAnnotation", jalview.datamodel.AlignmentAnnotation);
-Clazz.makeConstructor (c$,
-function (rna) {
-Clazz.superConstructor (this, jalview.datamodel.SecondaryStructureAnnotation, ["Secondary Structure", "Un truc trop cool", jalview.datamodel.SecondaryStructureAnnotation.getAnnotation (rna)]);
-jalview.datamodel.SecondaryStructureAnnotation._rna = rna;
-}, "fr.orsay.lri.varna.models.rna.RNA");
-Clazz.defineMethod (c$, "getRNA",
-function () {
-return jalview.datamodel.SecondaryStructureAnnotation._rna;
-});
-c$.getAnnotation = Clazz.defineMethod (c$, "getAnnotation",
-function (rna) {
-var ann = new Array (rna.getSize ());
-for (var i = 0; i < ann.length; i++) {
-ann[i] = new jalview.datamodel.Annotation (jalview.datamodel.SecondaryStructureAnnotation._rna.getStructDBN (true), "", ' ', 0);
-;}
-return ann;
-}, "fr.orsay.lri.varna.models.rna.RNA");
-Clazz.defineStatics (c$,
-"_rna", null);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AlignmentAnnotation"], "jalview.datamodel.SecondaryStructureAnnotation", ["jalview.datamodel.Annotation"], function () {
+c$ = Clazz.declareType (jalview.datamodel, "SecondaryStructureAnnotation", jalview.datamodel.AlignmentAnnotation);
+Clazz.makeConstructor (c$,
+function (rna) {
+Clazz.superConstructor (this, jalview.datamodel.SecondaryStructureAnnotation, ["Secondary Structure", "Un truc trop cool", jalview.datamodel.SecondaryStructureAnnotation.getAnnotation (rna)]);
+jalview.datamodel.SecondaryStructureAnnotation._rna = rna;
+}, "fr.orsay.lri.varna.models.rna.RNA");
+Clazz.defineMethod (c$, "getRNA",
+function () {
+return jalview.datamodel.SecondaryStructureAnnotation._rna;
+});
+c$.getAnnotation = Clazz.defineMethod (c$, "getAnnotation",
+function (rna) {
+var ann = new Array (rna.getSize ());
+for (var i = 0; i < ann.length; i++) {
+ann[i] = new jalview.datamodel.Annotation (jalview.datamodel.SecondaryStructureAnnotation._rna.getStructDBN (true), "", ' ', 0);
+;}
+return ann;
+}, "fr.orsay.lri.varna.models.rna.RNA");
+Clazz.defineStatics (c$,
+"_rna", null);
+});
diff --git a/bin/jalview/datamodel/SeqCigar.class b/bin/jalview/datamodel/SeqCigar.class
index 5f54f078404e89243ed9f3d90cc7c461a31f51c6..8bb4e15df3af4395cdaa2bf4673c6e8aef3e4d58 100644
GIT binary patch
delta 53
zcmezB|Ji?ok__YD&B`*@7!}nRxc@WAFmSRnJZ5K5WrP3*1`!9wKMb0ToMN1tW#n#h
F0sxc<3_$<@
delta 55
zcmezD|J8qkk__Yj&B`*@7?m{`c>gm seq_string.length) {
-_e = seq_string.length;
-}this.start = seq.findPosition (_s) - seq.getStart ();
-this.end = seq.findPosition (_e) - seq.getStart ();
-var l_ungapped = this.end - this.start;
-var ds = seq.getDatasetSequence ();
-if (ds == null) {
-var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (seq_string));
-l_ungapped = ungapped.length;
-if (l_ungapped == seq.getLength ()) {
-ds = seq;
-} else {
-ds = new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);
-}}if (ds.getStart () < seq.getStart ()) {
-var offset = seq.getStart () - ds.getStart ();
-if (initialDeletion) {
-this.addDeleted (_s + offset);
-this.start = 0;
-this.end += offset;
-} else {
-this.start += offset;
-this.end += offset;
-}}if (l_ungapped != (_e - _s)) {
-hasgaps = true;
-}this.refseq = ds;
-this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);
-if (this.end > ds.getLength ()) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));
-}return hasgaps;
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,~B,~N,~N");
-Clazz.makeConstructor (c$,
-function (seq, operation, range) {
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
-if (seq == null) {
-throw new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));
-}if (operation.length != range.length) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));
-}if (operation != null) {
-this.operation = Clazz.newCharArray (operation.length + this._inc_length, '\0');
-this.range = Clazz.newIntArray (operation.length + this._inc_length, 0);
-if (this._setSeq (seq, false, 0, 0)) {
-throw new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
-}for (var i = this.length, j = 0; j < operation.length; i++, j++) {
-var op = operation[j];
-if (op != 'M' && op != 'I' && op != 'D') {
-throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation", Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));
-}this.operation[i] = op;
-this.range[i] = range[j];
-}
-this.length += operation.length;
-} else {
-this.operation = null;
-this.range = null;
-this.length = 0;
-if (this._setSeq (seq, false, 0, 0)) {
-throw new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
-}}}, "jalview.datamodel.SequenceI,~A,~A");
-Clazz.defineMethod (c$, "addMatch",
-function (range) {
-this.addOperation ('M', range);
-}, "~N");
-c$.addSequenceOps = Clazz.defineMethod (c$, "addSequenceOps",
-function (cigar, seq, startpos, endpos, initialDeletions) {
-var op = '\u0000';
-var range = 0;
-var p = 0;
-var res = seq.getLength ();
-if (!initialDeletions) {
-p = startpos;
-}while (p <= endpos) {
-var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;
-if ((startpos <= p) && (p <= endpos)) {
-if (isGap) {
-if (range > 0 && op != 'I') {
-cigar.addOperation (op, range);
-range = 0;
-}op = 'I';
-range++;
-} else {
-if (range > 0 && op != 'M') {
-cigar.addOperation (op, range);
-range = 0;
-}op = 'M';
-range++;
-}} else {
-if (!isGap) {
-if (range > 0 && op != 'D') {
-cigar.addOperation (op, range);
-range = 0;
-}op = 'D';
-range++;
-} else {
-}}p++;
-}
-if (range > 0) {
-cigar.addOperation (op, range);
-}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");
-Clazz.makeConstructor (c$,
-function (seq) {
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
-if (seq == null) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
-}this._setSeq (seq, false, 0, 0);
-jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);
-}, "jalview.datamodel.SequenceI");
-Clazz.makeConstructor (c$,
-function (seq, start, end) {
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
-if (seq == null) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
-}this._setSeq (seq, false, start, end + 1);
-jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);
-}, "jalview.datamodel.SequenceI,~N,~N");
-c$.parseCigar = Clazz.defineMethod (c$, "parseCigar",
-function (seq, cigarString) {
-var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);
-return new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);
-}, "jalview.datamodel.SequenceI,~S");
-c$.createAlignmentSequences = Clazz.defineMethod (c$, "createAlignmentSequences",
-function (alseqs, gapCharacter, colsel, segments) {
-var seqs = new Array (alseqs.length);
-var g_seqs = new Array (alseqs.length);
-var alseqs_string = new Array (alseqs.length);
-var gs_regions = new Array (alseqs.length);
-for (var i = 0; i < alseqs.length; i++) {
-alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);
-gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);
-if (gs_regions[i] == null) {
-throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations", Clazz.newArray (-1, [Integer.$valueOf (i).toString ()])));
-}g_seqs[i] = new StringBuffer ((gs_regions[i])[0]);
-}
-var shifts = new jalview.util.ShiftList ();
-for (var i = 0; i < alseqs.length; i++) {
-var gs_region = ((gs_regions[i])[2]);
-if (gs_region != null) {
-for (var hr = 0; hr < gs_region.length; hr++) {
-var region = gs_region[hr];
-var insert = Clazz.newCharArray (region[1] - region[0] + 1, '\0');
-for (var s = 0; s < insert.length; s++) {
-insert[s] = gapCharacter;
-}
-var inspos = shifts.shift (region[2]);
-for (var s = 0; s < alseqs.length; s++) {
-if (s != i) {
-if (g_seqs[s].length () <= inspos) {
-for (var l = inspos - g_seqs[s].length (); l > 0; l--) {
-g_seqs[s].append (gapCharacter);
-}
-}g_seqs[s].insert (inspos, insert);
-} else {
-g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));
-}}
-shifts.addShift (region[2], insert.length);
-if (segments == null) {
-colsel.hideColumns (inspos, inspos + insert.length - 1);
-}}
-}}
-for (var i = 0; i < alseqs.length; i++) {
-var bounds = ((gs_regions[i])[1]);
-var ref = alseqs[i].getRefSeq ();
-seqs[i] = new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));
-seqs[i].setDatasetSequence (ref);
-seqs[i].setDescription (ref.getDescription ());
-}
-if (segments != null) {
-for (var i = 0; i < segments.length; i += 3) {
-colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);
-}
-}return seqs;
-}, "~A,~S,jalview.datamodel.ColumnSelection,~A");
-Clazz.defineMethod (c$, "setGroupMembership",
-function (group) {
-if (this.selGroups == null) {
-this.selGroups = new java.util.Hashtable ();
-}this.selGroups.put (group, Clazz.newIntArray (0, 0));
-}, "~O");
-Clazz.defineMethod (c$, "removeGroupMembership",
-function (group) {
-if (this.selGroups != null && this.selGroups.containsKey (group)) {
-this.selGroups.remove (group);
-return true;
-}return false;
-}, "~O");
-Clazz.defineMethod (c$, "clearMemberships",
-function () {
-if (this.selGroups != null) {
-this.selGroups.clear ();
-}this.selGroups = null;
-});
-Clazz.defineMethod (c$, "getAllMemberships",
-function () {
-if (this.selGroups == null) {
-return null;
-}var mmbs = new Array (this.selGroups.size ());
-var en = this.selGroups.keys ();
-for (var i = 0; en.hasMoreElements (); i++) {
-mmbs[i] = en.nextElement ();
-}
-return mmbs;
-});
-Clazz.defineMethod (c$, "isMemberOf",
-function (sgr) {
-return (this.selGroups != null) && this.selGroups.get (sgr) != null;
-}, "~O");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.SeqCigar", ["jalview.analysis.AlignSeq", "$.SeqsetUtils", "jalview.datamodel.Sequence", "jalview.util.Comparison", "$.MessageManager", "$.ShiftList", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.start = 0;
+this.end = 0;
+this.refseq = null;
+this.seqProps = null;
+this.selGroups = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SeqCigar", jalview.datamodel.CigarSimple);
+Clazz.defineMethod (c$, "getRefSeq",
+function () {
+return this.refseq;
+});
+Clazz.defineMethod (c$, "getStart",
+function () {
+return this.start;
+});
+Clazz.defineMethod (c$, "getEnd",
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "getSequenceString",
+function (GapChar) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar)[0];
+}, "~S");
+Clazz.defineMethod (c$, "getSeq",
+function (GapChar) {
+var seq;
+if (this.refseq == null || this.length == 0) {
+return null;
+}var edit_result = this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar);
+if (edit_result == null) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));
+}var bounds = edit_result[1];
+seq = new jalview.datamodel.Sequence (this.refseq.getName (), edit_result[0], this.refseq.getStart () + this.start + bounds[0], this.refseq.getStart () + this.start + ((bounds[2] == 0) ? -1 : bounds[2]));
+seq.setDescription (this.refseq.getDescription ());
+var sstart = seq.getStart ();
+var send = seq.getEnd ();
+if (this.seqProps != null) {
+jalview.analysis.SeqsetUtils.SeqCharacterUnhash (seq, this.seqProps);
+}seq.setDatasetSequence (this.refseq);
+seq.setStart (sstart);
+seq.setEnd (send);
+return seq;
+}, "~S");
+Clazz.defineMethod (c$, "_setSeq",
+($fz = function (seq, initialDeletion, _s, _e) {
+var hasgaps = false;
+if (seq == null) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_set_seq_null"));
+}if (_s < 0) {
+throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_s", Clazz.newArray (-1, [Integer.$valueOf (_s).toString ()])));
+}var seq_string = seq.getSequenceAsString ();
+if (_e == 0 || _e < _s || _e > seq_string.length) {
+_e = seq_string.length;
+}this.start = seq.findPosition (_s) - seq.getStart ();
+this.end = seq.findPosition (_e) - seq.getStart ();
+var l_ungapped = this.end - this.start;
+var ds = seq.getDatasetSequence ();
+if (ds == null) {
+var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (seq_string));
+l_ungapped = ungapped.length;
+if (l_ungapped == seq.getLength ()) {
+ds = seq;
+} else {
+ds = new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);
+}}if (ds.getStart () < seq.getStart ()) {
+var offset = seq.getStart () - ds.getStart ();
+if (initialDeletion) {
+this.addDeleted (_s + offset);
+this.start = 0;
+this.end += offset;
+} else {
+this.start += offset;
+this.end += offset;
+}}if (l_ungapped != (_e - _s)) {
+hasgaps = true;
+}this.refseq = ds;
+this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);
+if (this.end > ds.getLength ()) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));
+}return hasgaps;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,~B,~N,~N");
+Clazz.makeConstructor (c$,
+function (seq, operation, range) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));
+}if (operation.length != range.length) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));
+}if (operation != null) {
+this.operation = Clazz.newCharArray (operation.length + this._inc_length, '\0');
+this.range = Clazz.newIntArray (operation.length + this._inc_length, 0);
+if (this._setSeq (seq, false, 0, 0)) {
+throw new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}for (var i = this.length, j = 0; j < operation.length; i++, j++) {
+var op = operation[j];
+if (op != 'M' && op != 'I' && op != 'D') {
+throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation", Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));
+}this.operation[i] = op;
+this.range[i] = range[j];
+}
+this.length += operation.length;
+} else {
+this.operation = null;
+this.range = null;
+this.length = 0;
+if (this._setSeq (seq, false, 0, 0)) {
+throw new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}}}, "jalview.datamodel.SequenceI,~A,~A");
+Clazz.defineMethod (c$, "addMatch",
+function (range) {
+this.addOperation ('M', range);
+}, "~N");
+c$.addSequenceOps = Clazz.defineMethod (c$, "addSequenceOps",
+function (cigar, seq, startpos, endpos, initialDeletions) {
+var op = '\u0000';
+var range = 0;
+var p = 0;
+var res = seq.getLength ();
+if (!initialDeletions) {
+p = startpos;
+}while (p <= endpos) {
+var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;
+if ((startpos <= p) && (p <= endpos)) {
+if (isGap) {
+if (range > 0 && op != 'I') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'I';
+range++;
+} else {
+if (range > 0 && op != 'M') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'M';
+range++;
+}} else {
+if (!isGap) {
+if (range > 0 && op != 'D') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'D';
+range++;
+} else {
+}}p++;
+}
+if (range > 0) {
+cigar.addOperation (op, range);
+}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");
+Clazz.makeConstructor (c$,
+function (seq) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, 0, 0);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);
+}, "jalview.datamodel.SequenceI");
+Clazz.makeConstructor (c$,
+function (seq, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, start, end + 1);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);
+}, "jalview.datamodel.SequenceI,~N,~N");
+c$.parseCigar = Clazz.defineMethod (c$, "parseCigar",
+function (seq, cigarString) {
+var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);
+return new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);
+}, "jalview.datamodel.SequenceI,~S");
+c$.createAlignmentSequences = Clazz.defineMethod (c$, "createAlignmentSequences",
+function (alseqs, gapCharacter, colsel, segments) {
+var seqs = new Array (alseqs.length);
+var g_seqs = new Array (alseqs.length);
+var alseqs_string = new Array (alseqs.length);
+var gs_regions = new Array (alseqs.length);
+for (var i = 0; i < alseqs.length; i++) {
+alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);
+gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);
+if (gs_regions[i] == null) {
+throw new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations", Clazz.newArray (-1, [Integer.$valueOf (i).toString ()])));
+}g_seqs[i] = new StringBuffer ((gs_regions[i])[0]);
+}
+var shifts = new jalview.util.ShiftList ();
+for (var i = 0; i < alseqs.length; i++) {
+var gs_region = ((gs_regions[i])[2]);
+if (gs_region != null) {
+for (var hr = 0; hr < gs_region.length; hr++) {
+var region = gs_region[hr];
+var insert = Clazz.newCharArray (region[1] - region[0] + 1, '\0');
+for (var s = 0; s < insert.length; s++) {
+insert[s] = gapCharacter;
+}
+var inspos = shifts.shift (region[2]);
+for (var s = 0; s < alseqs.length; s++) {
+if (s != i) {
+if (g_seqs[s].length () <= inspos) {
+for (var l = inspos - g_seqs[s].length (); l > 0; l--) {
+g_seqs[s].append (gapCharacter);
+}
+}g_seqs[s].insert (inspos, insert);
+} else {
+g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));
+}}
+shifts.addShift (region[2], insert.length);
+if (segments == null) {
+colsel.hideColumns (inspos, inspos + insert.length - 1);
+}}
+}}
+for (var i = 0; i < alseqs.length; i++) {
+var bounds = ((gs_regions[i])[1]);
+var ref = alseqs[i].getRefSeq ();
+seqs[i] = new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));
+seqs[i].setDatasetSequence (ref);
+seqs[i].setDescription (ref.getDescription ());
+}
+if (segments != null) {
+for (var i = 0; i < segments.length; i += 3) {
+colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);
+}
+}return seqs;
+}, "~A,~S,jalview.datamodel.ColumnSelection,~A");
+Clazz.defineMethod (c$, "setGroupMembership",
+function (group) {
+if (this.selGroups == null) {
+this.selGroups = new java.util.Hashtable ();
+}this.selGroups.put (group, Clazz.newIntArray (0, 0));
+}, "~O");
+Clazz.defineMethod (c$, "removeGroupMembership",
+function (group) {
+if (this.selGroups != null && this.selGroups.containsKey (group)) {
+this.selGroups.remove (group);
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "clearMemberships",
+function () {
+if (this.selGroups != null) {
+this.selGroups.clear ();
+}this.selGroups = null;
+});
+Clazz.defineMethod (c$, "getAllMemberships",
+function () {
+if (this.selGroups == null) {
+return null;
+}var mmbs = new Array (this.selGroups.size ());
+var en = this.selGroups.keys ();
+for (var i = 0; en.hasMoreElements (); i++) {
+mmbs[i] = en.nextElement ();
+}
+return mmbs;
+});
+Clazz.defineMethod (c$, "isMemberOf",
+function (sgr) {
+return (this.selGroups != null) && this.selGroups.get (sgr) != null;
+}, "~O");
+});
diff --git a/bin/jalview/datamodel/Sequence.class b/bin/jalview/datamodel/Sequence.class
index 87bb9e379925b9147fc7678a239259659936b600..f406e42514a27dec0e1194ca8c7257d8b40d7033 100644
GIT binary patch
delta 43
xcmZ26g>m^5#tmI2jDDNDP0ScY#Ti)tGsrNou`@8TGtOWH0tN=r&DTu>MF0nx3KswX
delta 44
ycmZ2Jg>l6c#tmI2jQ*RuP0Sd@BpBHKGsrNou`@8TGtOWH0tN;lrp?z(14RH2?g|+I
diff --git a/bin/jalview/datamodel/Sequence.js b/bin/jalview/datamodel/Sequence.js
index 6a15091..06c8329 100644
--- a/bin/jalview/datamodel/Sequence.js
+++ b/bin/jalview/datamodel/Sequence.js
@@ -1,658 +1,658 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.ASequence", "$.SequenceI", "jalview.jsdev.RegExp"], "jalview.datamodel.Sequence", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.StringUtils", "java.lang.StringBuffer", "java.util.ArrayList", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.datasetSequence = null;
-this.name = null;
-this.sequence = null;
-this.description = null;
-this.start = 0;
-this.end = 0;
-this.pdbIds = null;
-this.vamsasId = null;
-this.dbrefs = null;
-this.rna = null;
-this.annotation = null;
-this.index = -1;
-this.sequenceFeatures = null;
-this.limitrx = null;
-this.endrx = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "Sequence", jalview.datamodel.ASequence, jalview.datamodel.SequenceI);
-Clazz.prepareFields (c$, function () {
-this.limitrx = jalview.jsdev.RegExp.newRegex (["[/][0-9]{1,}[-][0-9]{1,}$"]);
-this.endrx = jalview.jsdev.RegExp.newRegex (["[0-9]{1,}$"]);
-});
-Clazz.makeConstructor (c$,
-function (name, sequence, start, end) {
-Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
-this.initSeqAndName (name, sequence.toCharArray (), start, end);
-}, "~S,~S,~N,~N");
-Clazz.makeConstructor (c$,
-function (name, sequence, start, end) {
-Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
-this.initSeqAndName (name, sequence, start, end);
-}, "~S,~A,~N,~N");
-Clazz.defineMethod (c$, "initSeqAndName",
-function (name2, sequence2, start2, end2) {
-this.name = name2;
-this.sequence = sequence2;
-this.start = start2;
-this.end = end2;
-this.parseId ();
-this.checkValidRange ();
-}, "~S,~A,~N,~N");
-Clazz.defineMethod (c$, "parseId",
-function () {
-if (this.name == null) {
-System.err.println ("POSSIBLE IMPLEMENTATION ERROR: null sequence name passed to constructor.");
-this.name = "";
-}if (this.limitrx.search (this.name)) {
-this.name = this.limitrx.left ();
-this.endrx.search (this.limitrx.stringMatched ());
-this.setStart (Integer.parseInt (this.limitrx.stringMatched ().substring (1, this.endrx.matchedFrom () - 1)));
-this.setEnd (Integer.parseInt (this.endrx.stringMatched ()));
-}});
-Clazz.defineMethod (c$, "checkValidRange",
-function () {
-{
-var endRes = 0;
-for (var j = 0; j < this.sequence.length; j++) {
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {
-endRes++;
-}}
-if (endRes > 0) {
-endRes += this.start - 1;
-}if (this.end < endRes) {
-this.end = endRes;
-}}});
-Clazz.makeConstructor (c$,
-function (name, sequence) {
-this.construct (name, sequence, 1, -1);
-}, "~S,~S");
-Clazz.makeConstructor (c$,
-function (seq) {
-this.construct (seq, seq.getAnnotation ());
-}, "jalview.datamodel.SequenceI");
-Clazz.makeConstructor (c$,
-function (seq, alAnnotation) {
-Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
-this.initSeqFrom (seq, alAnnotation);
-}, "jalview.datamodel.SequenceI,~A");
-Clazz.defineMethod (c$, "initSeqFrom",
-function (seq, alAnnotation) {
-this.initSeqAndName (seq.getName (), seq.getSequence (), seq.getStart (), seq.getEnd ());
-this.description = seq.getDescription ();
-if (seq.getSequenceFeatures () != null) {
-var sf = seq.getSequenceFeatures ();
-for (var i = 0; i < sf.length; i++) {
-this.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf[i]));
-}
-}this.setDatasetSequence (seq.getDatasetSequence ());
-if (this.datasetSequence == null && seq.getDBRef () != null) {
-var dbr = seq.getDBRef ();
-for (var i = 0; i < dbr.length; i++) {
-this.addDBRef ( new jalview.datamodel.DBRefEntry (dbr[i]));
-}
-}if (seq.getAnnotation () != null) {
-var sqann = seq.getAnnotation ();
-for (var i = 0; i < sqann.length; i++) {
-if (sqann[i] == null) {
-continue;
-}var found = (alAnnotation == null);
-if (!found) {
-for (var apos = 0; !found && apos < alAnnotation.length; apos++) {
-found = (alAnnotation[apos] === sqann[i]);
-}
-}if (found) {
-var newann = new jalview.datamodel.AlignmentAnnotation (sqann[i]);
-this.addAlignmentAnnotation (newann);
-}}
-}if (seq.getPDBId () != null) {
-var ids = seq.getPDBId ();
-var e = ids.elements ();
-while (e.hasMoreElements ()) {
-this.addPDBId ( new jalview.datamodel.PDBEntry (e.nextElement ()));
-}
-}}, "jalview.datamodel.SequenceI,~A");
-Clazz.defineMethod (c$, "setSequenceFeatures",
-function (features) {
-this.sequenceFeatures = features;
-}, "~A");
-Clazz.overrideMethod (c$, "addSequenceFeature",
-function (sf) {
-if (this.sequenceFeatures == null) {
-this.sequenceFeatures = new Array (0);
-}for (var i = 0; i < this.sequenceFeatures.length; i++) {
-if (this.sequenceFeatures[i].equals (sf)) {
-return;
-}}
-var temp = new Array (this.sequenceFeatures.length + 1);
-System.arraycopy (this.sequenceFeatures, 0, temp, 0, this.sequenceFeatures.length);
-temp[this.sequenceFeatures.length] = sf;
-this.sequenceFeatures = temp;
-}, "jalview.datamodel.SequenceFeature");
-Clazz.overrideMethod (c$, "deleteFeature",
-function (sf) {
-if (this.sequenceFeatures == null) {
-return;
-}var index = 0;
-for (index = 0; index < this.sequenceFeatures.length; index++) {
-if (this.sequenceFeatures[index].equals (sf)) {
-break;
-}}
-if (index == this.sequenceFeatures.length) {
-return;
-}var sfLength = this.sequenceFeatures.length;
-if (sfLength < 2) {
-this.sequenceFeatures = null;
-} else {
-var temp = new Array (sfLength - 1);
-System.arraycopy (this.sequenceFeatures, 0, temp, 0, index);
-if (index < sfLength) {
-System.arraycopy (this.sequenceFeatures, index + 1, temp, index, this.sequenceFeatures.length - index - 1);
-}this.sequenceFeatures = temp;
-}}, "jalview.datamodel.SequenceFeature");
-Clazz.defineMethod (c$, "getSequenceFeatures",
-function () {
-var features = this.sequenceFeatures;
-var seq = this;
-var count = 0;
-while (features == null && seq.getDatasetSequence () != null && count++ < 10) {
-seq = seq.getDatasetSequence ();
-features = (seq).sequenceFeatures;
-}
-return features;
-});
-Clazz.overrideMethod (c$, "addPDBId",
-function (entry) {
-if (this.pdbIds == null) {
-this.pdbIds = new java.util.Vector ();
-}if (this.pdbIds.contains (entry)) {
-jalview.datamodel.Sequence.updatePDBEntry (this.pdbIds.get (this.pdbIds.indexOf (entry)), entry);
-} else {
-this.pdbIds.addElement (entry);
-}}, "jalview.datamodel.PDBEntry");
-c$.updatePDBEntry = Clazz.defineMethod (c$, "updatePDBEntry",
-($fz = function (oldEntry, newEntry) {
-if (newEntry.getFile () != null) {
-oldEntry.setFile (newEntry.getFile ());
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.PDBEntry,jalview.datamodel.PDBEntry");
-Clazz.defineMethod (c$, "setPDBId",
-function (id) {
-this.pdbIds = id;
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "getPDBId",
-function () {
-return this.pdbIds;
-});
-Clazz.overrideMethod (c$, "getDisplayId",
-function (jvsuffix) {
-var result = new StringBuffer (this.name);
-if (jvsuffix) {
-result.append ("/" + this.start + "-" + this.end);
-}return result.toString ();
-}, "~B");
-Clazz.overrideMethod (c$, "setName",
-function (name) {
-this.name = name;
-this.parseId ();
-}, "~S");
-Clazz.defineMethod (c$, "getName",
-function () {
-return this.name;
-});
-Clazz.overrideMethod (c$, "setStart",
-function (start) {
-this.start = start;
-}, "~N");
-Clazz.defineMethod (c$, "getStart",
-function () {
-return this.start;
-});
-Clazz.overrideMethod (c$, "setEnd",
-function (end) {
-this.end = end;
-}, "~N");
-Clazz.defineMethod (c$, "getEnd",
-function () {
-return this.end;
-});
-Clazz.overrideMethod (c$, "getLength",
-function () {
-return this.sequence.length;
-});
-Clazz.defineMethod (c$, "setSequence",
-function (seq) {
-this.sequence = seq.toCharArray ();
-this.checkValidRange ();
-}, "~S");
-Clazz.defineMethod (c$, "getSequenceAsString",
-function () {
-return String.instantialize (this.sequence);
-});
-Clazz.defineMethod (c$, "getSequenceAsString",
-function (start, end) {
-return String.instantialize (this.getSequence (start, end));
-}, "~N,~N");
-Clazz.defineMethod (c$, "getSequence",
-function () {
-return this.sequence;
-});
-Clazz.defineMethod (c$, "getSequence",
-function (start, end) {
-if (start < 0) {
-start = 0;
-}if (start >= this.sequence.length) {
-return Clazz.newCharArray (0, '\0');
-}if (end >= this.sequence.length) {
-end = this.sequence.length;
-}var reply = Clazz.newCharArray (end - start, '\0');
-System.arraycopy (this.sequence, start, reply, 0, end - start);
-return reply;
-}, "~N,~N");
-Clazz.overrideMethod (c$, "getSubSequence",
-function (start, end) {
-if (start < 0) {
-start = 0;
-}var seq = this.getSequence (start, end);
-if (seq.length == 0) {
-return null;
-}var nstart = this.findPosition (start);
-var nend = this.findPosition (end) - 1;
-var nseq = new jalview.datamodel.Sequence (this.getName (), seq, nstart, nend);
-nseq.setDescription (this.description);
-if (this.datasetSequence != null) {
-nseq.setDatasetSequence (this.datasetSequence);
-} else {
-nseq.setDatasetSequence (this);
-}return nseq;
-}, "~N,~N");
-Clazz.overrideMethod (c$, "getCharAt",
-function (i) {
-if (i < this.sequence.length) {
-return this.sequence[i];
-} else {
-return ' ';
-}}, "~N");
-Clazz.defineMethod (c$, "setDescription",
-function (desc) {
-this.description = desc;
-}, "~S");
-Clazz.defineMethod (c$, "getDescription",
-function () {
-return this.description;
-});
-Clazz.overrideMethod (c$, "findIndex",
-function (pos) {
-var j = this.start;
-var i = 0;
-while ((i < this.sequence.length) && (j <= this.end) && (j <= pos)) {
-if (!jalview.util.Comparison.isGap (this.sequence[i])) {
-j++;
-}i++;
-}
-if ((j == this.end) && (j < pos)) {
-return this.end + 1;
-} else {
-return i;
-}}, "~N");
-Clazz.overrideMethod (c$, "findPosition",
-function (i) {
-var j = 0;
-var pos = this.start;
-var seqlen = this.sequence.length;
-while ((j < i) && (j < seqlen)) {
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {
-pos++;
-}j++;
-}
-return pos;
-}, "~N");
-Clazz.overrideMethod (c$, "gapMap",
-function () {
-var seq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (this.sequence));
-var map = Clazz.newIntArray (seq.length, 0);
-var j = 0;
-var p = 0;
-while (j < this.sequence.length) {
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {
-map[p++] = j;
-}j++;
-}
-return map;
-});
-Clazz.overrideMethod (c$, "findPositionMap",
-function () {
-var map = Clazz.newIntArray (this.sequence.length, 0);
-var j = 0;
-var pos = this.start;
-var seqlen = this.sequence.length;
-while ((j < seqlen)) {
-map[j] = pos;
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {
-pos++;
-}j++;
-}
-return map;
-});
-Clazz.overrideMethod (c$, "getInsertions",
-function () {
-var map = new java.util.ArrayList ();
-var lastj = -1;
-var j = 0;
-var pos = this.start;
-var seqlen = this.sequence.length;
-while ((j < seqlen)) {
-if (jalview.util.Comparison.isGap (this.sequence[j])) {
-if (lastj == -1) {
-lastj = j;
-}} else {
-if (lastj != -1) {
-map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));
-lastj = -1;
-}}j++;
-}
-if (lastj != -1) {
-map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));
-lastj = -1;
-}return map;
-});
-Clazz.overrideMethod (c$, "deleteChars",
-function (i, j) {
-var newstart = this.start;
-var newend = this.end;
-if (i >= this.sequence.length || i < 0) {
-return;
-}var tmp = jalview.util.StringUtils.deleteChars (this.sequence, i, j);
-var createNewDs = false;
-var eindex = -1;
-var sindex = -1;
-var ecalc = false;
-var scalc = false;
-for (var s = i; s < j; s++) {
-if (jalview.schemes.ResidueProperties.aaIndex[this.sequence[s].charCodeAt (0)] != 23) {
-if (createNewDs) {
-newend--;
-} else {
-if (!scalc) {
-sindex = this.findIndex (this.start) - 1;
-scalc = true;
-}if (sindex == s) {
-newstart = this.findPosition (j);
-break;
-} else {
-if (!ecalc) {
-eindex = this.findIndex (this.end) - 1;
-ecalc = true;
-}if (eindex < j) {
-newend = this.findPosition (i - 1);
-break;
-} else {
-createNewDs = true;
-newend--;
-}}}}}
-if (createNewDs && this.datasetSequence != null) {
-var ds = new jalview.datamodel.Sequence (this.datasetSequence);
-ds.deleteChars (i, j);
-this.datasetSequence = ds;
-}this.start = newstart;
-this.end = newend;
-this.sequence = tmp;
-}, "~N,~N");
-Clazz.defineMethod (c$, "insertCharAt",
-function (i, length, c) {
-var tmp = Clazz.newCharArray (this.sequence.length + length, '\0');
-if (i >= this.sequence.length) {
-System.arraycopy (this.sequence, 0, tmp, 0, this.sequence.length);
-i = this.sequence.length;
-} else {
-System.arraycopy (this.sequence, 0, tmp, 0, i);
-}var index = i;
-while (length > 0) {
-tmp[index++] = c;
-length--;
-}
-if (i < this.sequence.length) {
-System.arraycopy (this.sequence, i, tmp, index, this.sequence.length - i);
-}this.sequence = tmp;
-}, "~N,~N,~S");
-Clazz.defineMethod (c$, "insertCharAt",
-function (i, c) {
-this.insertCharAt (i, 1, c);
-}, "~N,~S");
-Clazz.overrideMethod (c$, "getVamsasId",
-function () {
-return this.vamsasId;
-});
-Clazz.overrideMethod (c$, "setVamsasId",
-function (id) {
-this.vamsasId = id;
-}, "~S");
-Clazz.defineMethod (c$, "setDBRef",
-function (dbref) {
-this.dbrefs = dbref;
-}, "~A");
-Clazz.defineMethod (c$, "getDBRef",
-function () {
-if (this.dbrefs == null && this.datasetSequence != null && this !== this.datasetSequence) {
-return this.datasetSequence.getDBRef ();
-}return this.dbrefs;
-});
-Clazz.overrideMethod (c$, "addDBRef",
-function (entry) {
-if (this.dbrefs == null) {
-this.dbrefs = new Array (0);
-}var i;
-var iSize = this.dbrefs.length;
-for (i = 0; i < iSize; i++) {
-if (this.dbrefs[i].equalRef (entry)) {
-if (entry.getMap () != null) {
-if (this.dbrefs[i].getMap () == null) {
-this.dbrefs[i] = entry;
-}}return;
-}}
-var temp = new Array (iSize + 1);
-System.arraycopy (this.dbrefs, 0, temp, 0, iSize);
-temp[temp.length - 1] = entry;
-this.dbrefs = temp;
-}, "jalview.datamodel.DBRefEntry");
-Clazz.defineMethod (c$, "setDatasetSequence",
-function (seq) {
-this.datasetSequence = seq;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getDatasetSequence",
-function () {
-return this.datasetSequence;
-});
-Clazz.defineMethod (c$, "getAnnotation",
-function () {
-return this.annotation == null ? null : this.annotation.toArray ( new Array (this.annotation.size ()));
-});
-Clazz.overrideMethod (c$, "hasAnnotation",
-function (ann) {
-return this.annotation == null ? false : this.annotation.contains (ann);
-}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "addAlignmentAnnotation",
-function (annotation) {
-if (this.annotation == null) {
-this.annotation = new java.util.Vector ();
-}if (!this.annotation.contains (annotation)) {
-this.annotation.addElement (annotation);
-}annotation.setSequenceRef (this);
-}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.overrideMethod (c$, "removeAlignmentAnnotation",
-function (annotation) {
-if (this.annotation != null) {
-this.annotation.removeElement (annotation);
-if (this.annotation.size () == 0) {
-this.annotation = null;
-}}}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "isValidDatasetSequence",
-($fz = function () {
-if (this.datasetSequence != null) {
-return false;
-}for (var i = 0; i < this.sequence.length; i++) {
-if (jalview.util.Comparison.isGap (this.sequence[i])) {
-return false;
-}}
-return true;
-}, $fz.isPrivate = true, $fz));
-Clazz.overrideMethod (c$, "deriveSequence",
-function () {
-var seq = new jalview.datamodel.Sequence (this);
-if (this.datasetSequence != null) {
-seq.setDatasetSequence (this.datasetSequence);
-} else {
-if (this.isValidDatasetSequence ()) {
-seq.setDatasetSequence (this);
-} else {
-var ds = seq;
-ds.setSequence (jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (this.sequence)));
-this.setDatasetSequence (ds);
-ds.setSequenceFeatures (this.getSequenceFeatures ());
-seq = this;
-}}return seq;
-});
-Clazz.overrideMethod (c$, "createDatasetSequence",
-function () {
-if (this.datasetSequence == null) {
-this.datasetSequence = new jalview.datamodel.Sequence (this.getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, this.getSequenceAsString ()), this.getStart (), this.getEnd ());
-this.datasetSequence.setSequenceFeatures (this.getSequenceFeatures ());
-this.datasetSequence.setDescription (this.getDescription ());
-this.setSequenceFeatures (null);
-this.datasetSequence.setDBRef (this.getDBRef ());
-this.setDBRef (null);
-this.datasetSequence.setPDBId (this.getPDBId ());
-this.setPDBId (null);
-this.datasetSequence.updatePDBIds ();
-if (this.annotation != null) {
-for (var aa, $aa = this.annotation.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
-var _aa = new jalview.datamodel.AlignmentAnnotation (aa);
-_aa.sequenceRef = this.datasetSequence;
-_aa.adjustForAlignment ();
-this.datasetSequence.addAlignmentAnnotation (_aa);
-}
-}}return this.datasetSequence;
-});
-Clazz.overrideMethod (c$, "setAlignmentAnnotation",
-function (annotations) {
-if (this.annotation != null) {
-this.annotation.removeAllElements ();
-}if (annotations != null) {
-for (var i = 0; i < annotations.length; i++) {
-if (annotations[i] != null) {
-this.addAlignmentAnnotation (annotations[i]);
-}}
-}}, "~A");
-Clazz.defineMethod (c$, "getAnnotation",
-function (label) {
-if (this.annotation == null || this.annotation.size () == 0) {
-return null;
-}var subset = new java.util.Vector ();
-var e = this.annotation.elements ();
-while (e.hasMoreElements ()) {
-var ann = e.nextElement ();
-if (ann.label != null && ann.label.equals (label)) {
-subset.addElement (ann);
-}}
-if (subset.size () == 0) {
-return null;
-}var anns = new Array (subset.size ());
-var i = 0;
-e = subset.elements ();
-while (e.hasMoreElements ()) {
-anns[i++] = e.nextElement ();
-}
-subset.removeAllElements ();
-return anns;
-}, "~S");
-Clazz.defineMethod (c$, "updatePDBIds",
-function () {
-if (this.datasetSequence != null) {
-return this.datasetSequence.updatePDBIds ();
-}if (this.dbrefs == null || this.dbrefs.length == 0) {
-return false;
-}var newpdb = new java.util.Vector ();
-for (var i = 0; i < this.dbrefs.length; i++) {
-if (jalview.datamodel.DBRefSource.PDB.equals (this.dbrefs[i].getSource ())) {
-var pdbe = new jalview.datamodel.PDBEntry ();
-pdbe.setId (this.dbrefs[i].getAccessionId ());
-if (this.pdbIds == null || this.pdbIds.size () == 0) {
-newpdb.addElement (pdbe);
-} else {
-var en = this.pdbIds.elements ();
-var matched = false;
-while (!matched && en.hasMoreElements ()) {
-var anentry = en.nextElement ();
-if (anentry.getId ().equals (pdbe.getId ())) {
-matched = true;
-}}
-if (!matched) {
-newpdb.addElement (pdbe);
-}}}}
-if (newpdb.size () > 0) {
-var en = newpdb.elements ();
-while (en.hasMoreElements ()) {
-this.addPDBId (en.nextElement ());
-}
-return true;
-}return false;
-});
-Clazz.defineMethod (c$, "transferAnnotation",
-function (entry, mp) {
-if (this.datasetSequence != null) {
-this.datasetSequence.transferAnnotation (entry, mp);
-return;
-}if (entry.getDatasetSequence () != null) {
-this.transferAnnotation (entry.getDatasetSequence (), mp);
-return;
-}if (entry.getSequenceFeatures () != null) {
-var sfs = entry.getSequenceFeatures ();
-for (var si = 0; si < sfs.length; si++) {
-var sf = (mp != null) ? mp.locateFeature (sfs[si]) : Clazz.newArray (-1, [ new jalview.datamodel.SequenceFeature (sfs[si])]);
-if (sf != null && sf.length > 0) {
-for (var sfi = 0; sfi < sf.length; sfi++) {
-this.addSequenceFeature (sf[sfi]);
-}
-}}
-}if (entry.getPDBId () != null) {
-var e = entry.getPDBId ().elements ();
-while (e.hasMoreElements ()) {
-var pdb = e.nextElement ();
-this.addPDBId (pdb);
-}
-}var entryRefs = entry.getDBRef ();
-if (entryRefs != null) {
-for (var r = 0; r < entryRefs.length; r++) {
-var newref = new jalview.datamodel.DBRefEntry (entryRefs[r]);
-if (newref.getMap () != null && mp != null) {
-}this.addDBRef (newref);
-}
-}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
-Clazz.overrideMethod (c$, "getIndex",
-function () {
-return this.index;
-});
-Clazz.overrideMethod (c$, "setIndex",
-function (value) {
-this.index = value;
-}, "~N");
-Clazz.overrideMethod (c$, "setRNA",
-function (r) {
-this.rna = r;
-}, "jalview.jsdev.api.VarnaRNA");
-Clazz.overrideMethod (c$, "getRNA",
-function () {
-return this.rna;
-});
-Clazz.overrideMethod (c$, "getAlignmentAnnotations",
-function (calcId, label) {
-var result = new java.util.ArrayList ();
-if (this.annotation != null) {
-for (var ann, $ann = this.annotation.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
-if (ann.calcId != null && ann.calcId.equals (calcId) && ann.label != null && ann.label.equals (label)) {
-result.add (ann);
-}}
-}return result;
-}, "~S,~S");
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.ASequence", "$.SequenceI", "jalview.jsdev.RegExp"], "jalview.datamodel.Sequence", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.StringUtils", "java.lang.StringBuffer", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.datasetSequence = null;
+this.name = null;
+this.sequence = null;
+this.description = null;
+this.start = 0;
+this.end = 0;
+this.pdbIds = null;
+this.vamsasId = null;
+this.dbrefs = null;
+this.rna = null;
+this.annotation = null;
+this.index = -1;
+this.sequenceFeatures = null;
+this.limitrx = null;
+this.endrx = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Sequence", jalview.datamodel.ASequence, jalview.datamodel.SequenceI);
+Clazz.prepareFields (c$, function () {
+this.limitrx = jalview.jsdev.RegExp.newRegex (["[/][0-9]{1,}[-][0-9]{1,}$"]);
+this.endrx = jalview.jsdev.RegExp.newRegex (["[0-9]{1,}$"]);
+});
+Clazz.makeConstructor (c$,
+function (name, sequence, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqAndName (name, sequence.toCharArray (), start, end);
+}, "~S,~S,~N,~N");
+Clazz.makeConstructor (c$,
+function (name, sequence, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqAndName (name, sequence, start, end);
+}, "~S,~A,~N,~N");
+Clazz.defineMethod (c$, "initSeqAndName",
+function (name2, sequence2, start2, end2) {
+this.name = name2;
+this.sequence = sequence2;
+this.start = start2;
+this.end = end2;
+this.parseId ();
+this.checkValidRange ();
+}, "~S,~A,~N,~N");
+Clazz.defineMethod (c$, "parseId",
+function () {
+if (this.name == null) {
+System.err.println ("POSSIBLE IMPLEMENTATION ERROR: null sequence name passed to constructor.");
+this.name = "";
+}if (this.limitrx.search (this.name)) {
+this.name = this.limitrx.left ();
+this.endrx.search (this.limitrx.stringMatched ());
+this.setStart (Integer.parseInt (this.limitrx.stringMatched ().substring (1, this.endrx.matchedFrom () - 1)));
+this.setEnd (Integer.parseInt (this.endrx.stringMatched ()));
+}});
+Clazz.defineMethod (c$, "checkValidRange",
+function () {
+{
+var endRes = 0;
+for (var j = 0; j < this.sequence.length; j++) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+endRes++;
+}}
+if (endRes > 0) {
+endRes += this.start - 1;
+}if (this.end < endRes) {
+this.end = endRes;
+}}});
+Clazz.makeConstructor (c$,
+function (name, sequence) {
+this.construct (name, sequence, 1, -1);
+}, "~S,~S");
+Clazz.makeConstructor (c$,
+function (seq) {
+this.construct (seq, seq.getAnnotation ());
+}, "jalview.datamodel.SequenceI");
+Clazz.makeConstructor (c$,
+function (seq, alAnnotation) {
+Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqFrom (seq, alAnnotation);
+}, "jalview.datamodel.SequenceI,~A");
+Clazz.defineMethod (c$, "initSeqFrom",
+function (seq, alAnnotation) {
+this.initSeqAndName (seq.getName (), seq.getSequence (), seq.getStart (), seq.getEnd ());
+this.description = seq.getDescription ();
+if (seq.getSequenceFeatures () != null) {
+var sf = seq.getSequenceFeatures ();
+for (var i = 0; i < sf.length; i++) {
+this.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf[i]));
+}
+}this.setDatasetSequence (seq.getDatasetSequence ());
+if (this.datasetSequence == null && seq.getDBRef () != null) {
+var dbr = seq.getDBRef ();
+for (var i = 0; i < dbr.length; i++) {
+this.addDBRef ( new jalview.datamodel.DBRefEntry (dbr[i]));
+}
+}if (seq.getAnnotation () != null) {
+var sqann = seq.getAnnotation ();
+for (var i = 0; i < sqann.length; i++) {
+if (sqann[i] == null) {
+continue;
+}var found = (alAnnotation == null);
+if (!found) {
+for (var apos = 0; !found && apos < alAnnotation.length; apos++) {
+found = (alAnnotation[apos] === sqann[i]);
+}
+}if (found) {
+var newann = new jalview.datamodel.AlignmentAnnotation (sqann[i]);
+this.addAlignmentAnnotation (newann);
+}}
+}if (seq.getPDBId () != null) {
+var ids = seq.getPDBId ();
+var e = ids.elements ();
+while (e.hasMoreElements ()) {
+this.addPDBId ( new jalview.datamodel.PDBEntry (e.nextElement ()));
+}
+}}, "jalview.datamodel.SequenceI,~A");
+Clazz.defineMethod (c$, "setSequenceFeatures",
+function (features) {
+this.sequenceFeatures = features;
+}, "~A");
+Clazz.overrideMethod (c$, "addSequenceFeature",
+function (sf) {
+if (this.sequenceFeatures == null) {
+this.sequenceFeatures = new Array (0);
+}for (var i = 0; i < this.sequenceFeatures.length; i++) {
+if (this.sequenceFeatures[i].equals (sf)) {
+return;
+}}
+var temp = new Array (this.sequenceFeatures.length + 1);
+System.arraycopy (this.sequenceFeatures, 0, temp, 0, this.sequenceFeatures.length);
+temp[this.sequenceFeatures.length] = sf;
+this.sequenceFeatures = temp;
+}, "jalview.datamodel.SequenceFeature");
+Clazz.overrideMethod (c$, "deleteFeature",
+function (sf) {
+if (this.sequenceFeatures == null) {
+return;
+}var index = 0;
+for (index = 0; index < this.sequenceFeatures.length; index++) {
+if (this.sequenceFeatures[index].equals (sf)) {
+break;
+}}
+if (index == this.sequenceFeatures.length) {
+return;
+}var sfLength = this.sequenceFeatures.length;
+if (sfLength < 2) {
+this.sequenceFeatures = null;
+} else {
+var temp = new Array (sfLength - 1);
+System.arraycopy (this.sequenceFeatures, 0, temp, 0, index);
+if (index < sfLength) {
+System.arraycopy (this.sequenceFeatures, index + 1, temp, index, this.sequenceFeatures.length - index - 1);
+}this.sequenceFeatures = temp;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "getSequenceFeatures",
+function () {
+var features = this.sequenceFeatures;
+var seq = this;
+var count = 0;
+while (features == null && seq.getDatasetSequence () != null && count++ < 10) {
+seq = seq.getDatasetSequence ();
+features = (seq).sequenceFeatures;
+}
+return features;
+});
+Clazz.overrideMethod (c$, "addPDBId",
+function (entry) {
+if (this.pdbIds == null) {
+this.pdbIds = new java.util.Vector ();
+}if (this.pdbIds.contains (entry)) {
+jalview.datamodel.Sequence.updatePDBEntry (this.pdbIds.get (this.pdbIds.indexOf (entry)), entry);
+} else {
+this.pdbIds.addElement (entry);
+}}, "jalview.datamodel.PDBEntry");
+c$.updatePDBEntry = Clazz.defineMethod (c$, "updatePDBEntry",
+($fz = function (oldEntry, newEntry) {
+if (newEntry.getFile () != null) {
+oldEntry.setFile (newEntry.getFile ());
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.PDBEntry,jalview.datamodel.PDBEntry");
+Clazz.defineMethod (c$, "setPDBId",
+function (id) {
+this.pdbIds = id;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getPDBId",
+function () {
+return this.pdbIds;
+});
+Clazz.overrideMethod (c$, "getDisplayId",
+function (jvsuffix) {
+var result = new StringBuffer (this.name);
+if (jvsuffix) {
+result.append ("/" + this.start + "-" + this.end);
+}return result.toString ();
+}, "~B");
+Clazz.overrideMethod (c$, "setName",
+function (name) {
+this.name = name;
+this.parseId ();
+}, "~S");
+Clazz.defineMethod (c$, "getName",
+function () {
+return this.name;
+});
+Clazz.overrideMethod (c$, "setStart",
+function (start) {
+this.start = start;
+}, "~N");
+Clazz.defineMethod (c$, "getStart",
+function () {
+return this.start;
+});
+Clazz.overrideMethod (c$, "setEnd",
+function (end) {
+this.end = end;
+}, "~N");
+Clazz.defineMethod (c$, "getEnd",
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "getLength",
+function () {
+return this.sequence.length;
+});
+Clazz.defineMethod (c$, "setSequence",
+function (seq) {
+this.sequence = seq.toCharArray ();
+this.checkValidRange ();
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceAsString",
+function () {
+return String.instantialize (this.sequence);
+});
+Clazz.defineMethod (c$, "getSequenceAsString",
+function (start, end) {
+return String.instantialize (this.getSequence (start, end));
+}, "~N,~N");
+Clazz.defineMethod (c$, "getSequence",
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "getSequence",
+function (start, end) {
+if (start < 0) {
+start = 0;
+}if (start >= this.sequence.length) {
+return Clazz.newCharArray (0, '\0');
+}if (end >= this.sequence.length) {
+end = this.sequence.length;
+}var reply = Clazz.newCharArray (end - start, '\0');
+System.arraycopy (this.sequence, start, reply, 0, end - start);
+return reply;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getSubSequence",
+function (start, end) {
+if (start < 0) {
+start = 0;
+}var seq = this.getSequence (start, end);
+if (seq.length == 0) {
+return null;
+}var nstart = this.findPosition (start);
+var nend = this.findPosition (end) - 1;
+var nseq = new jalview.datamodel.Sequence (this.getName (), seq, nstart, nend);
+nseq.setDescription (this.description);
+if (this.datasetSequence != null) {
+nseq.setDatasetSequence (this.datasetSequence);
+} else {
+nseq.setDatasetSequence (this);
+}return nseq;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getCharAt",
+function (i) {
+if (i < this.sequence.length) {
+return this.sequence[i];
+} else {
+return ' ';
+}}, "~N");
+Clazz.defineMethod (c$, "setDescription",
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz.defineMethod (c$, "getDescription",
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "findIndex",
+function (pos) {
+var j = this.start;
+var i = 0;
+while ((i < this.sequence.length) && (j <= this.end) && (j <= pos)) {
+if (!jalview.util.Comparison.isGap (this.sequence[i])) {
+j++;
+}i++;
+}
+if ((j == this.end) && (j < pos)) {
+return this.end + 1;
+} else {
+return i;
+}}, "~N");
+Clazz.overrideMethod (c$, "findPosition",
+function (i) {
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < i) && (j < seqlen)) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+pos++;
+}j++;
+}
+return pos;
+}, "~N");
+Clazz.overrideMethod (c$, "gapMap",
+function () {
+var seq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (this.sequence));
+var map = Clazz.newIntArray (seq.length, 0);
+var j = 0;
+var p = 0;
+while (j < this.sequence.length) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+map[p++] = j;
+}j++;
+}
+return map;
+});
+Clazz.overrideMethod (c$, "findPositionMap",
+function () {
+var map = Clazz.newIntArray (this.sequence.length, 0);
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < seqlen)) {
+map[j] = pos;
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+pos++;
+}j++;
+}
+return map;
+});
+Clazz.overrideMethod (c$, "getInsertions",
+function () {
+var map = new java.util.ArrayList ();
+var lastj = -1;
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < seqlen)) {
+if (jalview.util.Comparison.isGap (this.sequence[j])) {
+if (lastj == -1) {
+lastj = j;
+}} else {
+if (lastj != -1) {
+map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));
+lastj = -1;
+}}j++;
+}
+if (lastj != -1) {
+map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));
+lastj = -1;
+}return map;
+});
+Clazz.overrideMethod (c$, "deleteChars",
+function (i, j) {
+var newstart = this.start;
+var newend = this.end;
+if (i >= this.sequence.length || i < 0) {
+return;
+}var tmp = jalview.util.StringUtils.deleteChars (this.sequence, i, j);
+var createNewDs = false;
+var eindex = -1;
+var sindex = -1;
+var ecalc = false;
+var scalc = false;
+for (var s = i; s < j; s++) {
+if (jalview.schemes.ResidueProperties.aaIndex[this.sequence[s].charCodeAt (0)] != 23) {
+if (createNewDs) {
+newend--;
+} else {
+if (!scalc) {
+sindex = this.findIndex (this.start) - 1;
+scalc = true;
+}if (sindex == s) {
+newstart = this.findPosition (j);
+break;
+} else {
+if (!ecalc) {
+eindex = this.findIndex (this.end) - 1;
+ecalc = true;
+}if (eindex < j) {
+newend = this.findPosition (i - 1);
+break;
+} else {
+createNewDs = true;
+newend--;
+}}}}}
+if (createNewDs && this.datasetSequence != null) {
+var ds = new jalview.datamodel.Sequence (this.datasetSequence);
+ds.deleteChars (i, j);
+this.datasetSequence = ds;
+}this.start = newstart;
+this.end = newend;
+this.sequence = tmp;
+}, "~N,~N");
+Clazz.defineMethod (c$, "insertCharAt",
+function (i, length, c) {
+var tmp = Clazz.newCharArray (this.sequence.length + length, '\0');
+if (i >= this.sequence.length) {
+System.arraycopy (this.sequence, 0, tmp, 0, this.sequence.length);
+i = this.sequence.length;
+} else {
+System.arraycopy (this.sequence, 0, tmp, 0, i);
+}var index = i;
+while (length > 0) {
+tmp[index++] = c;
+length--;
+}
+if (i < this.sequence.length) {
+System.arraycopy (this.sequence, i, tmp, index, this.sequence.length - i);
+}this.sequence = tmp;
+}, "~N,~N,~S");
+Clazz.defineMethod (c$, "insertCharAt",
+function (i, c) {
+this.insertCharAt (i, 1, c);
+}, "~N,~S");
+Clazz.overrideMethod (c$, "getVamsasId",
+function () {
+return this.vamsasId;
+});
+Clazz.overrideMethod (c$, "setVamsasId",
+function (id) {
+this.vamsasId = id;
+}, "~S");
+Clazz.defineMethod (c$, "setDBRef",
+function (dbref) {
+this.dbrefs = dbref;
+}, "~A");
+Clazz.defineMethod (c$, "getDBRef",
+function () {
+if (this.dbrefs == null && this.datasetSequence != null && this !== this.datasetSequence) {
+return this.datasetSequence.getDBRef ();
+}return this.dbrefs;
+});
+Clazz.overrideMethod (c$, "addDBRef",
+function (entry) {
+if (this.dbrefs == null) {
+this.dbrefs = new Array (0);
+}var i;
+var iSize = this.dbrefs.length;
+for (i = 0; i < iSize; i++) {
+if (this.dbrefs[i].equalRef (entry)) {
+if (entry.getMap () != null) {
+if (this.dbrefs[i].getMap () == null) {
+this.dbrefs[i] = entry;
+}}return;
+}}
+var temp = new Array (iSize + 1);
+System.arraycopy (this.dbrefs, 0, temp, 0, iSize);
+temp[temp.length - 1] = entry;
+this.dbrefs = temp;
+}, "jalview.datamodel.DBRefEntry");
+Clazz.defineMethod (c$, "setDatasetSequence",
+function (seq) {
+this.datasetSequence = seq;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getDatasetSequence",
+function () {
+return this.datasetSequence;
+});
+Clazz.defineMethod (c$, "getAnnotation",
+function () {
+return this.annotation == null ? null : this.annotation.toArray ( new Array (this.annotation.size ()));
+});
+Clazz.overrideMethod (c$, "hasAnnotation",
+function (ann) {
+return this.annotation == null ? false : this.annotation.contains (ann);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "addAlignmentAnnotation",
+function (annotation) {
+if (this.annotation == null) {
+this.annotation = new java.util.Vector ();
+}if (!this.annotation.contains (annotation)) {
+this.annotation.addElement (annotation);
+}annotation.setSequenceRef (this);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "removeAlignmentAnnotation",
+function (annotation) {
+if (this.annotation != null) {
+this.annotation.removeElement (annotation);
+if (this.annotation.size () == 0) {
+this.annotation = null;
+}}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "isValidDatasetSequence",
+($fz = function () {
+if (this.datasetSequence != null) {
+return false;
+}for (var i = 0; i < this.sequence.length; i++) {
+if (jalview.util.Comparison.isGap (this.sequence[i])) {
+return false;
+}}
+return true;
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "deriveSequence",
+function () {
+var seq = new jalview.datamodel.Sequence (this);
+if (this.datasetSequence != null) {
+seq.setDatasetSequence (this.datasetSequence);
+} else {
+if (this.isValidDatasetSequence ()) {
+seq.setDatasetSequence (this);
+} else {
+var ds = seq;
+ds.setSequence (jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, String.instantialize (this.sequence)));
+this.setDatasetSequence (ds);
+ds.setSequenceFeatures (this.getSequenceFeatures ());
+seq = this;
+}}return seq;
+});
+Clazz.overrideMethod (c$, "createDatasetSequence",
+function () {
+if (this.datasetSequence == null) {
+this.datasetSequence = new jalview.datamodel.Sequence (this.getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, this.getSequenceAsString ()), this.getStart (), this.getEnd ());
+this.datasetSequence.setSequenceFeatures (this.getSequenceFeatures ());
+this.datasetSequence.setDescription (this.getDescription ());
+this.setSequenceFeatures (null);
+this.datasetSequence.setDBRef (this.getDBRef ());
+this.setDBRef (null);
+this.datasetSequence.setPDBId (this.getPDBId ());
+this.setPDBId (null);
+this.datasetSequence.updatePDBIds ();
+if (this.annotation != null) {
+for (var aa, $aa = this.annotation.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+var _aa = new jalview.datamodel.AlignmentAnnotation (aa);
+_aa.sequenceRef = this.datasetSequence;
+_aa.adjustForAlignment ();
+this.datasetSequence.addAlignmentAnnotation (_aa);
+}
+}}return this.datasetSequence;
+});
+Clazz.overrideMethod (c$, "setAlignmentAnnotation",
+function (annotations) {
+if (this.annotation != null) {
+this.annotation.removeAllElements ();
+}if (annotations != null) {
+for (var i = 0; i < annotations.length; i++) {
+if (annotations[i] != null) {
+this.addAlignmentAnnotation (annotations[i]);
+}}
+}}, "~A");
+Clazz.defineMethod (c$, "getAnnotation",
+function (label) {
+if (this.annotation == null || this.annotation.size () == 0) {
+return null;
+}var subset = new java.util.Vector ();
+var e = this.annotation.elements ();
+while (e.hasMoreElements ()) {
+var ann = e.nextElement ();
+if (ann.label != null && ann.label.equals (label)) {
+subset.addElement (ann);
+}}
+if (subset.size () == 0) {
+return null;
+}var anns = new Array (subset.size ());
+var i = 0;
+e = subset.elements ();
+while (e.hasMoreElements ()) {
+anns[i++] = e.nextElement ();
+}
+subset.removeAllElements ();
+return anns;
+}, "~S");
+Clazz.defineMethod (c$, "updatePDBIds",
+function () {
+if (this.datasetSequence != null) {
+return this.datasetSequence.updatePDBIds ();
+}if (this.dbrefs == null || this.dbrefs.length == 0) {
+return false;
+}var newpdb = new java.util.Vector ();
+for (var i = 0; i < this.dbrefs.length; i++) {
+if (jalview.datamodel.DBRefSource.PDB.equals (this.dbrefs[i].getSource ())) {
+var pdbe = new jalview.datamodel.PDBEntry ();
+pdbe.setId (this.dbrefs[i].getAccessionId ());
+if (this.pdbIds == null || this.pdbIds.size () == 0) {
+newpdb.addElement (pdbe);
+} else {
+var en = this.pdbIds.elements ();
+var matched = false;
+while (!matched && en.hasMoreElements ()) {
+var anentry = en.nextElement ();
+if (anentry.getId ().equals (pdbe.getId ())) {
+matched = true;
+}}
+if (!matched) {
+newpdb.addElement (pdbe);
+}}}}
+if (newpdb.size () > 0) {
+var en = newpdb.elements ();
+while (en.hasMoreElements ()) {
+this.addPDBId (en.nextElement ());
+}
+return true;
+}return false;
+});
+Clazz.defineMethod (c$, "transferAnnotation",
+function (entry, mp) {
+if (this.datasetSequence != null) {
+this.datasetSequence.transferAnnotation (entry, mp);
+return;
+}if (entry.getDatasetSequence () != null) {
+this.transferAnnotation (entry.getDatasetSequence (), mp);
+return;
+}if (entry.getSequenceFeatures () != null) {
+var sfs = entry.getSequenceFeatures ();
+for (var si = 0; si < sfs.length; si++) {
+var sf = (mp != null) ? mp.locateFeature (sfs[si]) : Clazz.newArray (-1, [ new jalview.datamodel.SequenceFeature (sfs[si])]);
+if (sf != null && sf.length > 0) {
+for (var sfi = 0; sfi < sf.length; sfi++) {
+this.addSequenceFeature (sf[sfi]);
+}
+}}
+}if (entry.getPDBId () != null) {
+var e = entry.getPDBId ().elements ();
+while (e.hasMoreElements ()) {
+var pdb = e.nextElement ();
+this.addPDBId (pdb);
+}
+}var entryRefs = entry.getDBRef ();
+if (entryRefs != null) {
+for (var r = 0; r < entryRefs.length; r++) {
+var newref = new jalview.datamodel.DBRefEntry (entryRefs[r]);
+if (newref.getMap () != null && mp != null) {
+}this.addDBRef (newref);
+}
+}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
+Clazz.overrideMethod (c$, "getIndex",
+function () {
+return this.index;
+});
+Clazz.overrideMethod (c$, "setIndex",
+function (value) {
+this.index = value;
+}, "~N");
+Clazz.overrideMethod (c$, "setRNA",
+function (r) {
+this.rna = r;
+}, "jalview.jsdev.api.VarnaRNA");
+Clazz.overrideMethod (c$, "getRNA",
+function () {
+return this.rna;
+});
+Clazz.overrideMethod (c$, "getAlignmentAnnotations",
+function (calcId, label) {
+var result = new java.util.ArrayList ();
+if (this.annotation != null) {
+for (var ann, $ann = this.annotation.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+if (ann.calcId != null && ann.calcId.equals (calcId) && ann.label != null && ann.label.equals (label)) {
+result.add (ann);
+}}
+}return result;
+}, "~S,~S");
+});
diff --git a/bin/jalview/datamodel/SequenceCollectionI.js b/bin/jalview/datamodel/SequenceCollectionI.js
index b0849db..6f0107b 100644
--- a/bin/jalview/datamodel/SequenceCollectionI.js
+++ b/bin/jalview/datamodel/SequenceCollectionI.js
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.declareInterface (jalview.datamodel, "SequenceCollectionI");
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.declareInterface (jalview.datamodel, "SequenceCollectionI");
diff --git a/bin/jalview/datamodel/SequenceDummy.js b/bin/jalview/datamodel/SequenceDummy.js
index 38b0a3c..d5a179c 100644
--- a/bin/jalview/datamodel/SequenceDummy.js
+++ b/bin/jalview/datamodel/SequenceDummy.js
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.Sequence", "$.SequenceI"], "jalview.datamodel.SequenceDummy", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.dummy = true;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "SequenceDummy", jalview.datamodel.Sequence, jalview.datamodel.SequenceI);
-Clazz.makeConstructor (c$,
-function (sequenceId) {
-Clazz.superConstructor (this, jalview.datamodel.SequenceDummy, [sequenceId, "THISAPLACEHOLDER"]);
-}, "~S");
-Clazz.defineMethod (c$, "become",
-function (mseq) {
-this.initSeqFrom (mseq, null);
-this.dummy = false;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "isDummy",
-function () {
-return this.dummy;
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.Sequence", "$.SequenceI"], "jalview.datamodel.SequenceDummy", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dummy = true;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceDummy", jalview.datamodel.Sequence, jalview.datamodel.SequenceI);
+Clazz.makeConstructor (c$,
+function (sequenceId) {
+Clazz.superConstructor (this, jalview.datamodel.SequenceDummy, [sequenceId, "THISAPLACEHOLDER"]);
+}, "~S");
+Clazz.defineMethod (c$, "become",
+function (mseq) {
+this.initSeqFrom (mseq, null);
+this.dummy = false;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "isDummy",
+function () {
+return this.dummy;
+});
+});
diff --git a/bin/jalview/datamodel/SequenceFeature.js b/bin/jalview/datamodel/SequenceFeature.js
index f8ce548..d2f14a8 100644
--- a/bin/jalview/datamodel/SequenceFeature.js
+++ b/bin/jalview/datamodel/SequenceFeature.js
@@ -1,170 +1,170 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.SequenceFeature", ["java.util.Hashtable", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.begin = 0;
-this.end = 0;
-this.score = 0;
-this.type = null;
-this.description = null;
-this.otherDetails = null;
-this.links = null;
-this.featureGroup = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "SequenceFeature");
-Clazz.makeConstructor (c$,
-function () {
-});
-Clazz.makeConstructor (c$,
-function (cpy) {
-if (cpy != null) {
-this.begin = cpy.begin;
-this.end = cpy.end;
-this.score = cpy.score;
-if (cpy.type != null) {
-this.type = String.instantialize (cpy.type);
-}if (cpy.description != null) {
-this.description = String.instantialize (cpy.description);
-}if (cpy.featureGroup != null) {
-this.featureGroup = String.instantialize (cpy.featureGroup);
-}if (cpy.otherDetails != null) {
-try {
-this.otherDetails = cpy.otherDetails.clone ();
-} catch (e) {
-if (Clazz.exceptionOf (e, Exception)) {
-} else {
-throw e;
-}
-}
-}if (cpy.links != null && cpy.links.size () > 0) {
-this.links = new java.util.Vector ();
-for (var i = 0, iSize = cpy.links.size (); i < iSize; i++) {
-this.links.addElement (cpy.links.elementAt (i));
-}
-}}}, "jalview.datamodel.SequenceFeature");
-Clazz.makeConstructor (c$,
-function (type, desc, status, begin, end, featureGroup) {
-this.type = type;
-this.description = desc;
-this.setValue ("status", status);
-this.begin = begin;
-this.end = end;
-this.featureGroup = featureGroup;
-}, "~S,~S,~S,~N,~N,~S");
-Clazz.makeConstructor (c$,
-function (type, desc, begin, end, score, featureGroup) {
-this.type = type;
-this.description = desc;
-this.begin = begin;
-this.end = end;
-this.score = score;
-this.featureGroup = featureGroup;
-}, "~S,~S,~N,~N,~N,~S");
-Clazz.defineMethod (c$, "equals",
-function (sf) {
-if (this.begin != sf.begin || this.end != sf.end || this.score != sf.score) {
-return false;
-}if (!(this.type + this.description + this.featureGroup).equals (sf.type + sf.description + sf.featureGroup)) {
-return false;
-}return true;
-}, "jalview.datamodel.SequenceFeature");
-Clazz.defineMethod (c$, "getBegin",
-function () {
-return this.begin;
-});
-Clazz.defineMethod (c$, "setBegin",
-function (start) {
-this.begin = start;
-}, "~N");
-Clazz.defineMethod (c$, "getEnd",
-function () {
-return this.end;
-});
-Clazz.defineMethod (c$, "setEnd",
-function (end) {
-this.end = end;
-}, "~N");
-Clazz.defineMethod (c$, "getType",
-function () {
-return this.type;
-});
-Clazz.defineMethod (c$, "setType",
-function (type) {
-this.type = type;
-}, "~S");
-Clazz.defineMethod (c$, "getDescription",
-function () {
-return this.description;
-});
-Clazz.defineMethod (c$, "setDescription",
-function (desc) {
-this.description = desc;
-}, "~S");
-Clazz.defineMethod (c$, "getFeatureGroup",
-function () {
-return this.featureGroup;
-});
-Clazz.defineMethod (c$, "setFeatureGroup",
-function (featureGroup) {
-this.featureGroup = featureGroup;
-}, "~S");
-Clazz.defineMethod (c$, "addLink",
-function (labelLink) {
-if (this.links == null) {
-this.links = new java.util.Vector ();
-}this.links.insertElementAt (labelLink, 0);
-}, "~S");
-Clazz.defineMethod (c$, "getScore",
-function () {
-return this.score;
-});
-Clazz.defineMethod (c$, "setScore",
-function (value) {
-this.score = value;
-}, "~N");
-Clazz.defineMethod (c$, "getValue",
-function (key) {
-if (this.otherDetails == null) {
-return null;
-} else {
-return this.otherDetails.get (key);
-}}, "~S");
-Clazz.defineMethod (c$, "setValue",
-function (key, value) {
-if (value != null) {
-if (this.otherDetails == null) {
-this.otherDetails = new java.util.Hashtable ();
-}this.otherDetails.put (key, value);
-}}, "~S,~O");
-Clazz.defineMethod (c$, "setStatus",
-function (status) {
-this.setValue ("status", status);
-}, "~S");
-Clazz.defineMethod (c$, "getStatus",
-function () {
-if (this.otherDetails != null) {
-var stat = this.otherDetails.get ("status");
-if (stat != null) {
-return String.instantialize (stat);
-}}return null;
-});
-Clazz.defineMethod (c$, "setPosition",
-function (pos) {
-this.begin = pos;
-this.end = pos;
-}, "~N");
-Clazz.defineMethod (c$, "getPosition",
-function () {
-return this.begin;
-});
-Clazz.defineMethod (c$, "getStrand",
-function () {
-var str;
-if (this.otherDetails == null || (str = this.otherDetails.get ("STRAND").toString ()) == null) {
-return 0;
-}if (str.equals ("-")) {
-return -1;
-}if (str.equals ("+")) {
-return 1;
-}return 0;
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.SequenceFeature", ["java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.begin = 0;
+this.end = 0;
+this.score = 0;
+this.type = null;
+this.description = null;
+this.otherDetails = null;
+this.links = null;
+this.featureGroup = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceFeature");
+Clazz.makeConstructor (c$,
+function () {
+});
+Clazz.makeConstructor (c$,
+function (cpy) {
+if (cpy != null) {
+this.begin = cpy.begin;
+this.end = cpy.end;
+this.score = cpy.score;
+if (cpy.type != null) {
+this.type = String.instantialize (cpy.type);
+}if (cpy.description != null) {
+this.description = String.instantialize (cpy.description);
+}if (cpy.featureGroup != null) {
+this.featureGroup = String.instantialize (cpy.featureGroup);
+}if (cpy.otherDetails != null) {
+try {
+this.otherDetails = cpy.otherDetails.clone ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+}if (cpy.links != null && cpy.links.size () > 0) {
+this.links = new java.util.Vector ();
+for (var i = 0, iSize = cpy.links.size (); i < iSize; i++) {
+this.links.addElement (cpy.links.elementAt (i));
+}
+}}}, "jalview.datamodel.SequenceFeature");
+Clazz.makeConstructor (c$,
+function (type, desc, status, begin, end, featureGroup) {
+this.type = type;
+this.description = desc;
+this.setValue ("status", status);
+this.begin = begin;
+this.end = end;
+this.featureGroup = featureGroup;
+}, "~S,~S,~S,~N,~N,~S");
+Clazz.makeConstructor (c$,
+function (type, desc, begin, end, score, featureGroup) {
+this.type = type;
+this.description = desc;
+this.begin = begin;
+this.end = end;
+this.score = score;
+this.featureGroup = featureGroup;
+}, "~S,~S,~N,~N,~N,~S");
+Clazz.defineMethod (c$, "equals",
+function (sf) {
+if (this.begin != sf.begin || this.end != sf.end || this.score != sf.score) {
+return false;
+}if (!(this.type + this.description + this.featureGroup).equals (sf.type + sf.description + sf.featureGroup)) {
+return false;
+}return true;
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "getBegin",
+function () {
+return this.begin;
+});
+Clazz.defineMethod (c$, "setBegin",
+function (start) {
+this.begin = start;
+}, "~N");
+Clazz.defineMethod (c$, "getEnd",
+function () {
+return this.end;
+});
+Clazz.defineMethod (c$, "setEnd",
+function (end) {
+this.end = end;
+}, "~N");
+Clazz.defineMethod (c$, "getType",
+function () {
+return this.type;
+});
+Clazz.defineMethod (c$, "setType",
+function (type) {
+this.type = type;
+}, "~S");
+Clazz.defineMethod (c$, "getDescription",
+function () {
+return this.description;
+});
+Clazz.defineMethod (c$, "setDescription",
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz.defineMethod (c$, "getFeatureGroup",
+function () {
+return this.featureGroup;
+});
+Clazz.defineMethod (c$, "setFeatureGroup",
+function (featureGroup) {
+this.featureGroup = featureGroup;
+}, "~S");
+Clazz.defineMethod (c$, "addLink",
+function (labelLink) {
+if (this.links == null) {
+this.links = new java.util.Vector ();
+}this.links.insertElementAt (labelLink, 0);
+}, "~S");
+Clazz.defineMethod (c$, "getScore",
+function () {
+return this.score;
+});
+Clazz.defineMethod (c$, "setScore",
+function (value) {
+this.score = value;
+}, "~N");
+Clazz.defineMethod (c$, "getValue",
+function (key) {
+if (this.otherDetails == null) {
+return null;
+} else {
+return this.otherDetails.get (key);
+}}, "~S");
+Clazz.defineMethod (c$, "setValue",
+function (key, value) {
+if (value != null) {
+if (this.otherDetails == null) {
+this.otherDetails = new java.util.Hashtable ();
+}this.otherDetails.put (key, value);
+}}, "~S,~O");
+Clazz.defineMethod (c$, "setStatus",
+function (status) {
+this.setValue ("status", status);
+}, "~S");
+Clazz.defineMethod (c$, "getStatus",
+function () {
+if (this.otherDetails != null) {
+var stat = this.otherDetails.get ("status");
+if (stat != null) {
+return String.instantialize (stat);
+}}return null;
+});
+Clazz.defineMethod (c$, "setPosition",
+function (pos) {
+this.begin = pos;
+this.end = pos;
+}, "~N");
+Clazz.defineMethod (c$, "getPosition",
+function () {
+return this.begin;
+});
+Clazz.defineMethod (c$, "getStrand",
+function () {
+var str;
+if (this.otherDetails == null || (str = this.otherDetails.get ("STRAND").toString ()) == null) {
+return 0;
+}if (str.equals ("-")) {
+return -1;
+}if (str.equals ("+")) {
+return 1;
+}return 0;
+});
+});
diff --git a/bin/jalview/datamodel/SequenceGroup.class b/bin/jalview/datamodel/SequenceGroup.class
index f773fbca897d7e7630387a3859477bd45ad4b6a1..d962521a442198b9231e39355af8f30dd594a530 100644
GIT binary patch
delta 119
zcmZ3#jBx`H6&W(lnp|u+g_V_oSx99wuTd&9f8%|+kV_*?dWZKMQl*-KbeshuOZboKf2JXoQ=9*%^7+9Uy
z8JCGOFfsNs#xXE5m@+Uh8gDK&S7(&sW?<#{&5+~D$mGfhlrLl~g39Y`-eRG^$OV!2
M1 0) {
-eres += seq.getStart () - 1;
-}return eres;
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "getSequences",
-function () {
-return this.sequences;
-});
-Clazz.defineMethod (c$, "getSequences",
-function (hiddenReps) {
-if (hiddenReps == null) {
-return this.sequences;
-} else {
-var allSequences = new java.util.ArrayList ();
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-allSequences.add (seq);
-if (hiddenReps.containsKey (seq)) {
-var hsg = hiddenReps.get (seq);
-for (var seq2, $seq2 = hsg.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {
-if (seq2 !== seq && !allSequences.contains (seq2)) {
-allSequences.add (seq2);
-}}
-}}
-return allSequences;
-}}, "java.util.Map");
-Clazz.defineMethod (c$, "getSequencesAsArray",
-function (map) {
-var tmp = this.getSequences (map);
-if (tmp == null) {
-return null;
-}return tmp.toArray ( new Array (tmp.size ()));
-}, "java.util.Map");
-Clazz.defineMethod (c$, "adjustForRemoveLeft",
-function (col) {
-if (this.startRes >= col) {
-this.startRes = this.startRes - col;
-}if (this.endRes >= col) {
-this.endRes = this.endRes - col;
-if (this.startRes > this.endRes) {
-this.startRes = 0;
-}} else {
-return false;
-}return true;
-}, "~N");
-Clazz.defineMethod (c$, "adjustForRemoveRight",
-function (col) {
-if (this.startRes > col) {
-return false;
-}if (this.endRes >= col) {
-this.endRes = col;
-}return true;
-}, "~N");
-Clazz.defineMethod (c$, "getName",
-function () {
-return this.groupName;
-});
-Clazz.defineMethod (c$, "getDescription",
-function () {
-return this.description;
-});
-Clazz.defineMethod (c$, "setName",
-function (name) {
-this.groupName = name;
-}, "~S");
-Clazz.defineMethod (c$, "setDescription",
-function (desc) {
-this.description = desc;
-}, "~S");
-Clazz.defineMethod (c$, "getConservation",
-function () {
-return this.conserve;
-});
-Clazz.defineMethod (c$, "setConservation",
-function (c) {
-this.conserve = c;
-}, "jalview.analysis.Conservation");
-Clazz.defineMethod (c$, "addSequence",
-function (s, recalc) {
-{
-if (s != null && !this.sequences.contains (s)) {
-this.sequences.add (s);
-}if (recalc) {
-this.recalcConservation ();
-}}}, "jalview.datamodel.SequenceI,~B");
-Clazz.defineMethod (c$, "getConsPercGaps",
-function () {
-return this.consPercGaps;
-});
-Clazz.defineMethod (c$, "setConsPercGaps",
-function (consPercGaps) {
-this.consPercGaps = consPercGaps;
-}, "~N");
-Clazz.defineMethod (c$, "recalcConservation",
-function () {
-if (this.cs == null && this.consensus == null && this.conservation == null) {
-return;
-}try {
-var cnsns = jalview.analysis.AAFrequency.calculate (this.sequences, this.startRes, this.endRes + 1, this.showSequenceLogo);
-if (this.consensus != null) {
-this._updateConsensusRow (cnsns, this.sequences.size ());
-}if (this.cs != null) {
-this.cs.setConsensus (cnsns);
-}if ((this.conservation != null) || (this.cs != null && this.cs.conservationApplied ())) {
-var c = new jalview.analysis.Conservation (this.groupName, jalview.schemes.ResidueProperties.propHash, 3, this.sequences, this.startRes, this.endRes + 1);
-c.calculate ();
-c.verdict (false, this.consPercGaps);
-if (this.conservation != null) {
-this._updateConservationRow (c);
-}if (this.cs != null) {
-if (this.cs.conservationApplied ()) {
-this.cs.setConservation (c);
-}}}if (this.cs != null) {
-this.cs.alignmentChanged (this.context != null ? this.context : this, null);
-}} catch (err) {
-if (Clazz.exceptionOf (err, OutOfMemoryError)) {
-System.out.println ("Out of memory loading groups: " + err);
-} else {
-throw err;
-}
-}
-});
-Clazz.defineMethod (c$, "_updateConservationRow",
-($fz = function (c) {
-if (this.conservation == null) {
-this.getConservation ();
-}this.conservation.label = "Conservation for " + this.getName ();
-this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
-var aWidth = (this.conservation.annotations != null) ? (this.endRes < this.conservation.annotations.length ? this.conservation.annotations.length : this.endRes + 1) : this.endRes + 1;
-this.conservation.annotations = null;
-this.conservation.annotations = new Array (aWidth);
-c.completeAnnotations (this.conservation, null, this.startRes, this.endRes + 1);
-}, $fz.isPrivate = true, $fz), "jalview.analysis.Conservation");
-Clazz.defineMethod (c$, "_updateConsensusRow",
-($fz = function (cnsns, nseq) {
-if (this.consensus == null) {
-this.getConsensus ();
-}this.consensus.label = "Consensus for " + this.getName ();
-this.consensus.description = "Percent Identity";
-this.consensusData = cnsns;
-var aWidth = (this.consensus.annotations != null) ? (this.endRes < this.consensus.annotations.length ? this.consensus.annotations.length : this.endRes + 1) : this.endRes + 1;
-this.consensus.annotations = null;
-this.consensus.annotations = new Array (aWidth);
-jalview.analysis.AAFrequency.completeConsensus (this.consensus, cnsns, this.startRes, this.endRes + 1, this.ignoreGapsInConsensus, this.showSequenceLogo, nseq);
-}, $fz.isPrivate = true, $fz), "~A,~N");
-Clazz.defineMethod (c$, "addOrRemove",
-function (s, recalc) {
-{
-if (this.sequences.contains (s)) {
-this.deleteSequence (s, recalc);
-} else {
-this.addSequence (s, recalc);
-}}}, "jalview.datamodel.SequenceI,~B");
-Clazz.defineMethod (c$, "deleteSequence",
-function (s, recalc) {
-{
-this.sequences.remove (s);
-if (recalc) {
-this.recalcConservation ();
-}}}, "jalview.datamodel.SequenceI,~B");
-Clazz.overrideMethod (c$, "getStartRes",
-function () {
-return this.startRes;
-});
-Clazz.overrideMethod (c$, "getEndRes",
-function () {
-return this.endRes;
-});
-Clazz.defineMethod (c$, "setStartRes",
-function (i) {
-this.startRes = i;
-}, "~N");
-Clazz.defineMethod (c$, "setEndRes",
-function (i) {
-this.endRes = i;
-}, "~N");
-Clazz.defineMethod (c$, "getSize",
-function () {
-return this.sequences.size ();
-});
-Clazz.defineMethod (c$, "getSequenceAt",
-function (i) {
-return this.sequences.get (i);
-}, "~N");
-Clazz.defineMethod (c$, "setColourText",
-function (state) {
-this.colourText = state;
-}, "~B");
-Clazz.defineMethod (c$, "getColourText",
-function () {
-return this.colourText;
-});
-Clazz.defineMethod (c$, "setDisplayText",
-function (state) {
-this.displayText = state;
-}, "~B");
-Clazz.defineMethod (c$, "getDisplayText",
-function () {
-return this.displayText;
-});
-Clazz.defineMethod (c$, "setDisplayBoxes",
-function (state) {
-this.displayBoxes = state;
-}, "~B");
-Clazz.defineMethod (c$, "getDisplayBoxes",
-function () {
-return this.displayBoxes;
-});
-Clazz.overrideMethod (c$, "getWidth",
-function () {
-{
-var first = true;
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-if (first || seq.getLength () > this.width) {
-this.width = seq.getLength ();
-first = false;
-}}
-return this.width;
-}});
-Clazz.defineMethod (c$, "setOutlineColour",
-function (c) {
-this.outlineColour = c;
-}, "java.awt.Color");
-Clazz.defineMethod (c$, "getOutlineColour",
-function () {
-return this.outlineColour;
-});
-Clazz.defineMethod (c$, "getSequencesInOrder",
-function (al) {
-return this.getSequencesInOrder (al, true);
-}, "jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "getSequencesInOrder",
-function (al, trim) {
-{
-var sSize = this.sequences.size ();
-var alHeight = al.getHeight ();
-var seqs = new Array ((trim) ? sSize : alHeight);
-var index = 0;
-for (var i = 0; i < alHeight && index < sSize; i++) {
-if (this.sequences.contains (al.getSequenceAt (i))) {
-seqs[(trim) ? index : i] = al.getSequenceAt (i);
-index++;
-}}
-if (index == 0) {
-return null;
-}if (!trim) {
-return seqs;
-}if (index < seqs.length) {
-var dummy = seqs;
-seqs = new Array (index);
-while (--index >= 0) {
-seqs[index] = dummy[index];
-dummy[index] = null;
-}
-}return seqs;
-}}, "jalview.datamodel.AlignmentI,~B");
-Clazz.defineMethod (c$, "getIdColour",
-function () {
-return this.idColour;
-});
-Clazz.defineMethod (c$, "setIdColour",
-function (idColour) {
-this.idColour = idColour;
-}, "java.awt.Color");
-Clazz.overrideMethod (c$, "getSeqrep",
-function () {
-return this.seqrep;
-});
-Clazz.overrideMethod (c$, "setSeqrep",
-function (seqrep) {
-this.seqrep = seqrep;
-}, "jalview.datamodel.SequenceI");
-Clazz.overrideMethod (c$, "hasSeqrep",
-function () {
-return this.seqrep != null;
-});
-Clazz.defineMethod (c$, "setHidereps",
-function (visibility) {
-this.hidereps = visibility;
-}, "~B");
-Clazz.defineMethod (c$, "isHidereps",
-function () {
-return this.hidereps;
-});
-Clazz.defineMethod (c$, "setHideCols",
-function (visibility) {
-this.hidecols = visibility;
-}, "~B");
-Clazz.defineMethod (c$, "isHideCols",
-function () {
-return this.hidecols;
-});
-Clazz.defineMethod (c$, "intersect",
-function (alignment, map) {
-var sgroup = new jalview.datamodel.SequenceGroup (this);
-var insect = this.getSequencesInOrder (alignment);
-sgroup.sequences = new java.util.ArrayList ();
-for (var s = 0; insect != null && s < insect.length; s++) {
-if (map == null || map.containsKey (insect[s])) {
-sgroup.sequences.add (insect[s]);
-}}
-return sgroup;
-}, "jalview.datamodel.AlignmentI,java.util.Map");
-Clazz.defineMethod (c$, "getShowNonconserved",
-function () {
-return this.showNonconserved;
-});
-Clazz.defineMethod (c$, "setShowNonconserved",
-function (displayNonconserved) {
-this.showNonconserved = displayNonconserved;
-}, "~B");
-Clazz.defineMethod (c$, "setConsensus",
-function (aan) {
-if (this.consensus == null) {
-this.consensus = aan;
-}}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "getConsensus",
-function () {
-var aWidth = this.getWidth ();
-if (aWidth < 0) {
-return null;
-}if (this.consensus == null) {
-this.consensus = new jalview.datamodel.AlignmentAnnotation ("", "", new Array (1), 0, 100, 1);
-this.consensus.hasText = true;
-this.consensus.autoCalculated = true;
-this.consensus.groupRef = this;
-this.consensus.label = "Consensus for " + this.getName ();
-this.consensus.description = "Percent Identity";
-}return this.consensus;
-});
-Clazz.defineMethod (c$, "setConservationRow",
-function (aan) {
-if (this.conservation == null) {
-this.conservation = aan;
-}}, "jalview.datamodel.AlignmentAnnotation");
-Clazz.defineMethod (c$, "getConservationRow",
-function () {
-if (this.conservation == null) {
-this.conservation = new jalview.datamodel.AlignmentAnnotation ("", "", new Array (1), 0, 11, 1);
-}this.conservation.hasText = true;
-this.conservation.autoCalculated = true;
-this.conservation.groupRef = this;
-this.conservation.label = "Conservation for " + this.getName ();
-this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
-return this.conservation;
-});
-Clazz.defineMethod (c$, "hasAnnotationRows",
-function () {
-return this.consensus != null || this.conservation != null;
-});
-Clazz.defineMethod (c$, "getConsensusSeq",
-function () {
-this.getConsensus ();
-var seqs = new StringBuffer ();
-for (var i = 0; i < this.consensus.annotations.length; i++) {
-if (this.consensus.annotations[i] != null) {
-if (this.consensus.annotations[i].description.charAt (0) == '[') {
-seqs.append (this.consensus.annotations[i].description.charAt (1));
-} else {
-seqs.append (this.consensus.annotations[i].displayCharacter);
-}}}
-var sq = new jalview.datamodel.Sequence ("Group" + this.getName () + " Consensus", seqs.toString ());
-sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensus) ? " without gaps" : ""));
-return sq;
-});
-Clazz.defineMethod (c$, "setIgnoreGapsConsensus",
-function (state) {
-if (this.ignoreGapsInConsensus != state && this.consensus != null) {
-this.ignoreGapsInConsensus = state;
-this.recalcConservation ();
-}this.ignoreGapsInConsensus = state;
-}, "~B");
-Clazz.defineMethod (c$, "getIgnoreGapsConsensus",
-function () {
-return this.ignoreGapsInConsensus;
-});
-Clazz.defineMethod (c$, "setshowSequenceLogo",
-function (showSequenceLogo) {
-if (this.showSequenceLogo != showSequenceLogo && this.consensus != null) {
-this.showSequenceLogo = showSequenceLogo;
-this.recalcConservation ();
-}this.showSequenceLogo = showSequenceLogo;
-}, "~B");
-Clazz.defineMethod (c$, "setShowConsensusHistogram",
-function (showConsHist) {
-if (this.showConsensusHistogram != showConsHist && this.consensus != null) {
-this.showConsensusHistogram = showConsHist;
-this.recalcConservation ();
-}this.showConsensusHistogram = showConsHist;
-}, "~B");
-Clazz.defineMethod (c$, "isShowConsensusHistogram",
-function () {
-return this.showConsensusHistogram;
-});
-Clazz.defineMethod (c$, "setNormaliseSequenceLogo",
-function (norm) {
-this.normaliseSequenceLogo = norm;
-}, "~B");
-Clazz.defineMethod (c$, "isNormaliseSequenceLogo",
-function () {
-return this.normaliseSequenceLogo;
-});
-Clazz.overrideMethod (c$, "getAlignmentAnnotation",
-function () {
-var annot = new java.util.ArrayList ();
-{
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
-var aa = seq.getAnnotation ();
-if (aa != null) {
-for (var al, $al = 0, $$al = aa; $al < $$al.length && ((al = $$al[$al]) || true); $al++) {
-if (al.groupRef === this) {
-annot.add (al);
-}}
-}}
-if (this.consensus != null) {
-annot.add (this.consensus);
-}if (this.conservation != null) {
-annot.add (this.conservation);
-}}return annot.toArray ( new Array (0));
-});
-Clazz.overrideMethod (c$, "findAnnotation",
-function (calcId) {
-var aa = new java.util.ArrayList ();
-for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
-if (a.getCalcId () === calcId) {
-aa.add (a);
-}}
-return aa;
-}, "~S");
-Clazz.overrideMethod (c$, "findAnnotations",
-function (seq, calcId, label) {
-var aa = new java.util.ArrayList ();
-for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
-if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
-aa.add (ann);
-}}
-return aa;
-}, "jalview.datamodel.SequenceI,~S,~S");
-Clazz.defineMethod (c$, "hasAnnotation",
-function (calcId) {
-if (calcId != null && !"".equals (calcId)) {
-for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
-if (a.getCalcId () === calcId) {
-return true;
-}}
-}return false;
-}, "~S");
-Clazz.defineMethod (c$, "clear",
-function () {
-{
-this.sequences.clear ();
-}});
-Clazz.defineMethod (c$, "setContext",
-function (context) {
-this.context = context;
-}, "jalview.datamodel.AnnotatedCollectionI");
-Clazz.overrideMethod (c$, "getContext",
-function () {
-return this.context;
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AnnotatedCollectionI", "java.awt.Color", "java.util.ArrayList"], "jalview.datamodel.SequenceGroup", ["jalview.analysis.AAFrequency", "$.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.groupName = null;
+this.description = null;
+this.conserve = null;
+this.aaFrequency = null;
+this.displayBoxes = true;
+this.displayText = true;
+this.colourText = false;
+this.showNonconserved = false;
+this.sequences = null;
+this.seqrep = null;
+this.width = -1;
+this.cs = null;
+this.startRes = 0;
+this.endRes = 0;
+this.outlineColour = null;
+this.idColour = null;
+this.thresholdTextColour = 0;
+this.textColour = null;
+this.textColour2 = null;
+this.ignoreGapsInConsensus = true;
+this.showSequenceLogo = false;
+this.normaliseSequenceLogo = false;
+this.consPercGaps = 25;
+this.consensusData = null;
+this.hidereps = false;
+this.hidecols = false;
+this.consensus = null;
+this.conservation = null;
+this.showConsensusHistogram = false;
+this.context = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceGroup", null, jalview.datamodel.AnnotatedCollectionI);
+Clazz.prepareFields (c$, function () {
+this.sequences = new java.util.ArrayList ();
+this.outlineColour = java.awt.Color.black;
+this.textColour = java.awt.Color.black;
+this.textColour2 = java.awt.Color.white;
+});
+Clazz.defineMethod (c$, "isShowSequenceLogo",
+function () {
+return this.showSequenceLogo;
+});
+Clazz.makeConstructor (c$,
+function () {
+this.groupName = "JGroup:" + this.hashCode ();
+});
+Clazz.makeConstructor (c$,
+function (sequences, groupName, scheme, displayBoxes, displayText, colourText, start, end) {
+this.sequences = sequences;
+this.groupName = groupName;
+this.displayBoxes = displayBoxes;
+this.displayText = displayText;
+this.colourText = colourText;
+this.cs = scheme;
+this.startRes = start;
+this.endRes = end;
+this.recalcConservation ();
+}, "java.util.List,~S,jalview.schemes.ColourSchemeI,~B,~B,~B,~N,~N");
+Clazz.makeConstructor (c$,
+function (seqsel) {
+if (seqsel != null) {
+this.sequences = new java.util.ArrayList ();
+this.sequences.addAll (seqsel.sequences);
+if (seqsel.groupName != null) {
+this.groupName = String.instantialize (seqsel.groupName);
+}this.displayBoxes = seqsel.displayBoxes;
+this.displayText = seqsel.displayText;
+this.colourText = seqsel.colourText;
+this.startRes = seqsel.startRes;
+this.endRes = seqsel.endRes;
+this.cs = seqsel.cs;
+if (seqsel.description != null) {
+this.description = String.instantialize (seqsel.description);
+}this.hidecols = seqsel.hidecols;
+this.hidereps = seqsel.hidereps;
+this.idColour = seqsel.idColour;
+this.outlineColour = seqsel.outlineColour;
+this.seqrep = seqsel.seqrep;
+this.textColour = seqsel.textColour;
+this.textColour2 = seqsel.textColour2;
+this.thresholdTextColour = seqsel.thresholdTextColour;
+this.width = seqsel.width;
+this.ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus;
+if (seqsel.conserve != null) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "getSelectionAsNewSequences",
+function (align) {
+var iSize = this.sequences.size ();
+var seqs = new Array (iSize);
+var inorder = this.getSequencesInOrder (align);
+for (var i = 0, ipos = 0; i < inorder.length; i++) {
+var seq = inorder[i];
+seqs[ipos] = seq.getSubSequence (this.startRes, this.endRes + 1);
+if (seqs[ipos] != null) {
+seqs[ipos].setDescription (seq.getDescription ());
+seqs[ipos].setDBRef (seq.getDBRef ());
+seqs[ipos].setSequenceFeatures (seq.getSequenceFeatures ());
+if (seq.getDatasetSequence () != null) {
+seqs[ipos].setDatasetSequence (seq.getDatasetSequence ());
+}if (seq.getAnnotation () != null) {
+var alann = align.getAlignmentAnnotation ();
+for (var a = 0; a < seq.getAnnotation ().length; a++) {
+var tocopy = seq.getAnnotation ()[a];
+if (alann != null) {
+var found = false;
+for (var pos = 0; pos < alann.length; pos++) {
+if (alann[pos] === tocopy) {
+found = true;
+break;
+}}
+if (!found) {
+continue;
+}}var newannot = new jalview.datamodel.AlignmentAnnotation (seq.getAnnotation ()[a]);
+newannot.restrict (this.startRes, this.endRes);
+newannot.setSequenceRef (seqs[ipos]);
+newannot.adjustForAlignment ();
+seqs[ipos].addAlignmentAnnotation (newannot);
+}
+}ipos++;
+} else {
+iSize--;
+}}
+if (iSize != inorder.length) {
+var nseqs = new Array (iSize);
+System.arraycopy (seqs, 0, nseqs, 0, iSize);
+seqs = nseqs;
+}return seqs;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "findEndRes",
+function (seq) {
+var eres = 0;
+var ch;
+for (var j = 0; j < this.endRes + 1 && j < seq.getLength (); j++) {
+ch = seq.getCharAt (j);
+if (!jalview.util.Comparison.isGap ((ch))) {
+eres++;
+}}
+if (eres > 0) {
+eres += seq.getStart () - 1;
+}return eres;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getSequences",
+function () {
+return this.sequences;
+});
+Clazz.defineMethod (c$, "getSequences",
+function (hiddenReps) {
+if (hiddenReps == null) {
+return this.sequences;
+} else {
+var allSequences = new java.util.ArrayList ();
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+allSequences.add (seq);
+if (hiddenReps.containsKey (seq)) {
+var hsg = hiddenReps.get (seq);
+for (var seq2, $seq2 = hsg.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {
+if (seq2 !== seq && !allSequences.contains (seq2)) {
+allSequences.add (seq2);
+}}
+}}
+return allSequences;
+}}, "java.util.Map");
+Clazz.defineMethod (c$, "getSequencesAsArray",
+function (map) {
+var tmp = this.getSequences (map);
+if (tmp == null) {
+return null;
+}return tmp.toArray ( new Array (tmp.size ()));
+}, "java.util.Map");
+Clazz.defineMethod (c$, "adjustForRemoveLeft",
+function (col) {
+if (this.startRes >= col) {
+this.startRes = this.startRes - col;
+}if (this.endRes >= col) {
+this.endRes = this.endRes - col;
+if (this.startRes > this.endRes) {
+this.startRes = 0;
+}} else {
+return false;
+}return true;
+}, "~N");
+Clazz.defineMethod (c$, "adjustForRemoveRight",
+function (col) {
+if (this.startRes > col) {
+return false;
+}if (this.endRes >= col) {
+this.endRes = col;
+}return true;
+}, "~N");
+Clazz.defineMethod (c$, "getName",
+function () {
+return this.groupName;
+});
+Clazz.defineMethod (c$, "getDescription",
+function () {
+return this.description;
+});
+Clazz.defineMethod (c$, "setName",
+function (name) {
+this.groupName = name;
+}, "~S");
+Clazz.defineMethod (c$, "setDescription",
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz.defineMethod (c$, "getConservation",
+function () {
+return this.conserve;
+});
+Clazz.defineMethod (c$, "setConservation",
+function (c) {
+this.conserve = c;
+}, "jalview.analysis.Conservation");
+Clazz.defineMethod (c$, "addSequence",
+function (s, recalc) {
+{
+if (s != null && !this.sequences.contains (s)) {
+this.sequences.add (s);
+}if (recalc) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz.defineMethod (c$, "getConsPercGaps",
+function () {
+return this.consPercGaps;
+});
+Clazz.defineMethod (c$, "setConsPercGaps",
+function (consPercGaps) {
+this.consPercGaps = consPercGaps;
+}, "~N");
+Clazz.defineMethod (c$, "recalcConservation",
+function () {
+if (this.cs == null && this.consensus == null && this.conservation == null) {
+return;
+}try {
+var cnsns = jalview.analysis.AAFrequency.calculate (this.sequences, this.startRes, this.endRes + 1, this.showSequenceLogo);
+if (this.consensus != null) {
+this._updateConsensusRow (cnsns, this.sequences.size ());
+}if (this.cs != null) {
+this.cs.setConsensus (cnsns);
+}if ((this.conservation != null) || (this.cs != null && this.cs.conservationApplied ())) {
+var c = new jalview.analysis.Conservation (this.groupName, jalview.schemes.ResidueProperties.propHash, 3, this.sequences, this.startRes, this.endRes + 1);
+c.calculate ();
+c.verdict (false, this.consPercGaps);
+if (this.conservation != null) {
+this._updateConservationRow (c);
+}if (this.cs != null) {
+if (this.cs.conservationApplied ()) {
+this.cs.setConservation (c);
+}}}if (this.cs != null) {
+this.cs.alignmentChanged (this.context != null ? this.context : this, null);
+}} catch (err) {
+if (Clazz.exceptionOf (err, OutOfMemoryError)) {
+System.out.println ("Out of memory loading groups: " + err);
+} else {
+throw err;
+}
+}
+});
+Clazz.defineMethod (c$, "_updateConservationRow",
+($fz = function (c) {
+if (this.conservation == null) {
+this.getConservation ();
+}this.conservation.label = "Conservation for " + this.getName ();
+this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
+var aWidth = (this.conservation.annotations != null) ? (this.endRes < this.conservation.annotations.length ? this.conservation.annotations.length : this.endRes + 1) : this.endRes + 1;
+this.conservation.annotations = null;
+this.conservation.annotations = new Array (aWidth);
+c.completeAnnotations (this.conservation, null, this.startRes, this.endRes + 1);
+}, $fz.isPrivate = true, $fz), "jalview.analysis.Conservation");
+Clazz.defineMethod (c$, "_updateConsensusRow",
+($fz = function (cnsns, nseq) {
+if (this.consensus == null) {
+this.getConsensus ();
+}this.consensus.label = "Consensus for " + this.getName ();
+this.consensus.description = "Percent Identity";
+this.consensusData = cnsns;
+var aWidth = (this.consensus.annotations != null) ? (this.endRes < this.consensus.annotations.length ? this.consensus.annotations.length : this.endRes + 1) : this.endRes + 1;
+this.consensus.annotations = null;
+this.consensus.annotations = new Array (aWidth);
+jalview.analysis.AAFrequency.completeConsensus (this.consensus, cnsns, this.startRes, this.endRes + 1, this.ignoreGapsInConsensus, this.showSequenceLogo, nseq);
+}, $fz.isPrivate = true, $fz), "~A,~N");
+Clazz.defineMethod (c$, "addOrRemove",
+function (s, recalc) {
+{
+if (this.sequences.contains (s)) {
+this.deleteSequence (s, recalc);
+} else {
+this.addSequence (s, recalc);
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz.defineMethod (c$, "deleteSequence",
+function (s, recalc) {
+{
+this.sequences.remove (s);
+if (recalc) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz.overrideMethod (c$, "getStartRes",
+function () {
+return this.startRes;
+});
+Clazz.overrideMethod (c$, "getEndRes",
+function () {
+return this.endRes;
+});
+Clazz.defineMethod (c$, "setStartRes",
+function (i) {
+this.startRes = i;
+}, "~N");
+Clazz.defineMethod (c$, "setEndRes",
+function (i) {
+this.endRes = i;
+}, "~N");
+Clazz.defineMethod (c$, "getSize",
+function () {
+return this.sequences.size ();
+});
+Clazz.defineMethod (c$, "getSequenceAt",
+function (i) {
+return this.sequences.get (i);
+}, "~N");
+Clazz.defineMethod (c$, "setColourText",
+function (state) {
+this.colourText = state;
+}, "~B");
+Clazz.defineMethod (c$, "getColourText",
+function () {
+return this.colourText;
+});
+Clazz.defineMethod (c$, "setDisplayText",
+function (state) {
+this.displayText = state;
+}, "~B");
+Clazz.defineMethod (c$, "getDisplayText",
+function () {
+return this.displayText;
+});
+Clazz.defineMethod (c$, "setDisplayBoxes",
+function (state) {
+this.displayBoxes = state;
+}, "~B");
+Clazz.defineMethod (c$, "getDisplayBoxes",
+function () {
+return this.displayBoxes;
+});
+Clazz.overrideMethod (c$, "getWidth",
+function () {
+{
+var first = true;
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (first || seq.getLength () > this.width) {
+this.width = seq.getLength ();
+first = false;
+}}
+return this.width;
+}});
+Clazz.defineMethod (c$, "setOutlineColour",
+function (c) {
+this.outlineColour = c;
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "getOutlineColour",
+function () {
+return this.outlineColour;
+});
+Clazz.defineMethod (c$, "getSequencesInOrder",
+function (al) {
+return this.getSequencesInOrder (al, true);
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getSequencesInOrder",
+function (al, trim) {
+{
+var sSize = this.sequences.size ();
+var alHeight = al.getHeight ();
+var seqs = new Array ((trim) ? sSize : alHeight);
+var index = 0;
+for (var i = 0; i < alHeight && index < sSize; i++) {
+if (this.sequences.contains (al.getSequenceAt (i))) {
+seqs[(trim) ? index : i] = al.getSequenceAt (i);
+index++;
+}}
+if (index == 0) {
+return null;
+}if (!trim) {
+return seqs;
+}if (index < seqs.length) {
+var dummy = seqs;
+seqs = new Array (index);
+while (--index >= 0) {
+seqs[index] = dummy[index];
+dummy[index] = null;
+}
+}return seqs;
+}}, "jalview.datamodel.AlignmentI,~B");
+Clazz.defineMethod (c$, "getIdColour",
+function () {
+return this.idColour;
+});
+Clazz.defineMethod (c$, "setIdColour",
+function (idColour) {
+this.idColour = idColour;
+}, "java.awt.Color");
+Clazz.overrideMethod (c$, "getSeqrep",
+function () {
+return this.seqrep;
+});
+Clazz.overrideMethod (c$, "setSeqrep",
+function (seqrep) {
+this.seqrep = seqrep;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "hasSeqrep",
+function () {
+return this.seqrep != null;
+});
+Clazz.defineMethod (c$, "setHidereps",
+function (visibility) {
+this.hidereps = visibility;
+}, "~B");
+Clazz.defineMethod (c$, "isHidereps",
+function () {
+return this.hidereps;
+});
+Clazz.defineMethod (c$, "setHideCols",
+function (visibility) {
+this.hidecols = visibility;
+}, "~B");
+Clazz.defineMethod (c$, "isHideCols",
+function () {
+return this.hidecols;
+});
+Clazz.defineMethod (c$, "intersect",
+function (alignment, map) {
+var sgroup = new jalview.datamodel.SequenceGroup (this);
+var insect = this.getSequencesInOrder (alignment);
+sgroup.sequences = new java.util.ArrayList ();
+for (var s = 0; insect != null && s < insect.length; s++) {
+if (map == null || map.containsKey (insect[s])) {
+sgroup.sequences.add (insect[s]);
+}}
+return sgroup;
+}, "jalview.datamodel.AlignmentI,java.util.Map");
+Clazz.defineMethod (c$, "getShowNonconserved",
+function () {
+return this.showNonconserved;
+});
+Clazz.defineMethod (c$, "setShowNonconserved",
+function (displayNonconserved) {
+this.showNonconserved = displayNonconserved;
+}, "~B");
+Clazz.defineMethod (c$, "setConsensus",
+function (aan) {
+if (this.consensus == null) {
+this.consensus = aan;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "getConsensus",
+function () {
+var aWidth = this.getWidth ();
+if (aWidth < 0) {
+return null;
+}if (this.consensus == null) {
+this.consensus = new jalview.datamodel.AlignmentAnnotation ("", "", new Array (1), 0, 100, 1);
+this.consensus.hasText = true;
+this.consensus.autoCalculated = true;
+this.consensus.groupRef = this;
+this.consensus.label = "Consensus for " + this.getName ();
+this.consensus.description = "Percent Identity";
+}return this.consensus;
+});
+Clazz.defineMethod (c$, "setConservationRow",
+function (aan) {
+if (this.conservation == null) {
+this.conservation = aan;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "getConservationRow",
+function () {
+if (this.conservation == null) {
+this.conservation = new jalview.datamodel.AlignmentAnnotation ("", "", new Array (1), 0, 11, 1);
+}this.conservation.hasText = true;
+this.conservation.autoCalculated = true;
+this.conservation.groupRef = this;
+this.conservation.label = "Conservation for " + this.getName ();
+this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
+return this.conservation;
+});
+Clazz.defineMethod (c$, "hasAnnotationRows",
+function () {
+return this.consensus != null || this.conservation != null;
+});
+Clazz.defineMethod (c$, "getConsensusSeq",
+function () {
+this.getConsensus ();
+var seqs = new StringBuffer ();
+for (var i = 0; i < this.consensus.annotations.length; i++) {
+if (this.consensus.annotations[i] != null) {
+if (this.consensus.annotations[i].description.charAt (0) == '[') {
+seqs.append (this.consensus.annotations[i].description.charAt (1));
+} else {
+seqs.append (this.consensus.annotations[i].displayCharacter);
+}}}
+var sq = new jalview.datamodel.Sequence ("Group" + this.getName () + " Consensus", seqs.toString ());
+sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensus) ? " without gaps" : ""));
+return sq;
+});
+Clazz.defineMethod (c$, "setIgnoreGapsConsensus",
+function (state) {
+if (this.ignoreGapsInConsensus != state && this.consensus != null) {
+this.ignoreGapsInConsensus = state;
+this.recalcConservation ();
+}this.ignoreGapsInConsensus = state;
+}, "~B");
+Clazz.defineMethod (c$, "getIgnoreGapsConsensus",
+function () {
+return this.ignoreGapsInConsensus;
+});
+Clazz.defineMethod (c$, "setshowSequenceLogo",
+function (showSequenceLogo) {
+if (this.showSequenceLogo != showSequenceLogo && this.consensus != null) {
+this.showSequenceLogo = showSequenceLogo;
+this.recalcConservation ();
+}this.showSequenceLogo = showSequenceLogo;
+}, "~B");
+Clazz.defineMethod (c$, "setShowConsensusHistogram",
+function (showConsHist) {
+if (this.showConsensusHistogram != showConsHist && this.consensus != null) {
+this.showConsensusHistogram = showConsHist;
+this.recalcConservation ();
+}this.showConsensusHistogram = showConsHist;
+}, "~B");
+Clazz.defineMethod (c$, "isShowConsensusHistogram",
+function () {
+return this.showConsensusHistogram;
+});
+Clazz.defineMethod (c$, "setNormaliseSequenceLogo",
+function (norm) {
+this.normaliseSequenceLogo = norm;
+}, "~B");
+Clazz.defineMethod (c$, "isNormaliseSequenceLogo",
+function () {
+return this.normaliseSequenceLogo;
+});
+Clazz.overrideMethod (c$, "getAlignmentAnnotation",
+function () {
+var annot = new java.util.ArrayList ();
+{
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var aa = seq.getAnnotation ();
+if (aa != null) {
+for (var al, $al = 0, $$al = aa; $al < $$al.length && ((al = $$al[$al]) || true); $al++) {
+if (al.groupRef === this) {
+annot.add (al);
+}}
+}}
+if (this.consensus != null) {
+annot.add (this.consensus);
+}if (this.conservation != null) {
+annot.add (this.conservation);
+}}return annot.toArray ( new Array (0));
+});
+Clazz.overrideMethod (c$, "findAnnotation",
+function (calcId) {
+var aa = new java.util.ArrayList ();
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId) {
+aa.add (a);
+}}
+return aa;
+}, "~S");
+Clazz.overrideMethod (c$, "findAnnotations",
+function (seq, calcId, label) {
+var aa = new java.util.ArrayList ();
+for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
+aa.add (ann);
+}}
+return aa;
+}, "jalview.datamodel.SequenceI,~S,~S");
+Clazz.defineMethod (c$, "hasAnnotation",
+function (calcId) {
+if (calcId != null && !"".equals (calcId)) {
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId) {
+return true;
+}}
+}return false;
+}, "~S");
+Clazz.defineMethod (c$, "clear",
+function () {
+{
+this.sequences.clear ();
+}});
+Clazz.defineMethod (c$, "setContext",
+function (context) {
+this.context = context;
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz.overrideMethod (c$, "getContext",
+function () {
+return this.context;
+});
+});
diff --git a/bin/jalview/datamodel/SequenceI.js b/bin/jalview/datamodel/SequenceI.js
index 242d5a5..dcf0724 100644
--- a/bin/jalview/datamodel/SequenceI.js
+++ b/bin/jalview/datamodel/SequenceI.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.SequenceI", null, function () {
-Clazz.declareInterface (jalview.datamodel, "SequenceI", jalview.datamodel.ASequenceI);
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.SequenceI", null, function () {
+Clazz.declareInterface (jalview.datamodel, "SequenceI", jalview.datamodel.ASequenceI);
+});
diff --git a/bin/jalview/datamodel/SequenceNode.js b/bin/jalview/datamodel/SequenceNode.js
index 54cb491..2069471 100644
--- a/bin/jalview/datamodel/SequenceNode.js
+++ b/bin/jalview/datamodel/SequenceNode.js
@@ -1,64 +1,64 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["jalview.datamodel.BinaryNode", "java.awt.Color"], "jalview.datamodel.SequenceNode", null, function () {
-c$ = Clazz.decorateAsClass (function () {
-this.dist = 0;
-this.count = 0;
-this.height = 0;
-this.ycount = 0;
-this.color = null;
-this.dummy = false;
-this.placeholder = false;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "SequenceNode", jalview.datamodel.BinaryNode);
-Clazz.prepareFields (c$, function () {
-this.color = java.awt.Color.black;
-});
-Clazz.makeConstructor (c$,
-function (val, parent, dist, name) {
-Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
-this.dist = dist;
-}, "~O,jalview.datamodel.SequenceNode,~N,~S");
-Clazz.makeConstructor (c$,
-function (val, parent, name, dist, bootstrap, dummy) {
-Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
-this.dist = dist;
-this.bootstrap = bootstrap;
-this.dummy = dummy;
-}, "~O,jalview.datamodel.SequenceNode,~S,~N,~N,~B");
-Clazz.defineMethod (c$, "isDummy",
-function () {
-return this.dummy;
-});
-Clazz.defineMethod (c$, "isPlaceholder",
-function () {
-return this.placeholder;
-});
-Clazz.defineMethod (c$, "setDummy",
-function (newstate) {
-var oldstate = this.dummy;
-this.dummy = newstate;
-return oldstate;
-}, "~B");
-Clazz.defineMethod (c$, "setPlaceholder",
-function (Placeholder) {
-this.placeholder = Placeholder;
-}, "~B");
-Clazz.defineMethod (c$, "AscendTree",
-function () {
-var c = this;
-do {
-c = c.parent ();
-} while ((c != null) && c.dummy);
-return c;
-});
-Clazz.defineMethod (c$, "isSequenceLabel",
-function () {
-if (this.name != null && this.name.length > 0) {
-for (var c = 0, s = this.name.length; c < s; c++) {
-var q = this.name.charAt (c);
-if ('0' <= q && q <= '9') continue;
-return true;
-}
-}return false;
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.BinaryNode", "java.awt.Color"], "jalview.datamodel.SequenceNode", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dist = 0;
+this.count = 0;
+this.height = 0;
+this.ycount = 0;
+this.color = null;
+this.dummy = false;
+this.placeholder = false;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceNode", jalview.datamodel.BinaryNode);
+Clazz.prepareFields (c$, function () {
+this.color = java.awt.Color.black;
+});
+Clazz.makeConstructor (c$,
+function (val, parent, dist, name) {
+Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
+this.dist = dist;
+}, "~O,jalview.datamodel.SequenceNode,~N,~S");
+Clazz.makeConstructor (c$,
+function (val, parent, name, dist, bootstrap, dummy) {
+Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
+this.dist = dist;
+this.bootstrap = bootstrap;
+this.dummy = dummy;
+}, "~O,jalview.datamodel.SequenceNode,~S,~N,~N,~B");
+Clazz.defineMethod (c$, "isDummy",
+function () {
+return this.dummy;
+});
+Clazz.defineMethod (c$, "isPlaceholder",
+function () {
+return this.placeholder;
+});
+Clazz.defineMethod (c$, "setDummy",
+function (newstate) {
+var oldstate = this.dummy;
+this.dummy = newstate;
+return oldstate;
+}, "~B");
+Clazz.defineMethod (c$, "setPlaceholder",
+function (Placeholder) {
+this.placeholder = Placeholder;
+}, "~B");
+Clazz.defineMethod (c$, "AscendTree",
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && c.dummy);
+return c;
+});
+Clazz.defineMethod (c$, "isSequenceLabel",
+function () {
+if (this.name != null && this.name.length > 0) {
+for (var c = 0, s = this.name.length; c < s; c++) {
+var q = this.name.charAt (c);
+if ('0' <= q && q <= '9') continue;
+return true;
+}
+}return false;
+});
+});
diff --git a/bin/jalview/datamodel/SequencePoint.js b/bin/jalview/datamodel/SequencePoint.js
index 0616692..549eae1 100644
--- a/bin/jalview/datamodel/SequencePoint.js
+++ b/bin/jalview/datamodel/SequencePoint.js
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this.isPlaceholder = false;
-this.sequence = null;
-this.coord = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "SequencePoint");
-Clazz.makeConstructor (c$,
-function (sequence, coord) {
-this.sequence = sequence;
-this.coord = coord;
-}, "jalview.datamodel.SequenceI,~A");
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.isPlaceholder = false;
+this.sequence = null;
+this.coord = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequencePoint");
+Clazz.makeConstructor (c$,
+function (sequence, coord) {
+this.sequence = sequence;
+this.coord = coord;
+}, "jalview.datamodel.SequenceI,~A");
diff --git a/bin/jalview/datamodel/StructureViewerModel.js b/bin/jalview/datamodel/StructureViewerModel.js
index e21d3fc..cc11e43 100644
--- a/bin/jalview/datamodel/StructureViewerModel.js
+++ b/bin/jalview/datamodel/StructureViewerModel.js
@@ -1,156 +1,156 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (["java.util.HashMap"], "jalview.datamodel.StructureViewerModel", ["java.util.ArrayList"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.x = 0;
-this.y = 0;
-this.width = 0;
-this.height = 0;
-this.alignWithPanel = false;
-this.colourWithAlignPanel = false;
-this.colourByViewer = false;
-this.stateData = "";
-this.viewId = null;
-this.type = null;
-this.fileData = null;
-if (!Clazz.isClassDefined ("jalview.datamodel.StructureViewerModel.StructureData")) {
-jalview.datamodel.StructureViewerModel.$StructureViewerModel$StructureData$ ();
-}
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "StructureViewerModel");
-Clazz.prepareFields (c$, function () {
-this.fileData = new java.util.HashMap ();
-});
-Clazz.makeConstructor (c$,
-function (x, y, width, height, alignWithPanel, colourWithAlignPanel, colourByViewer, viewId, type) {
-this.x = x;
-this.y = y;
-this.width = width;
-this.height = height;
-this.alignWithPanel = alignWithPanel;
-this.colourWithAlignPanel = colourWithAlignPanel;
-this.colourByViewer = colourByViewer;
-this.viewId = viewId;
-this.type = type;
-}, "~N,~N,~N,~N,~B,~B,~B,~S,~S");
-Clazz.defineMethod (c$, "getX",
-function () {
-return this.x;
-});
-Clazz.defineMethod (c$, "setX",
-function (x) {
-this.x = x;
-}, "~N");
-Clazz.defineMethod (c$, "getY",
-function () {
-return this.y;
-});
-Clazz.defineMethod (c$, "setY",
-function (y) {
-this.y = y;
-}, "~N");
-Clazz.defineMethod (c$, "getWidth",
-function () {
-return this.width;
-});
-Clazz.defineMethod (c$, "setWidth",
-function (width) {
-this.width = width;
-}, "~N");
-Clazz.defineMethod (c$, "getHeight",
-function () {
-return this.height;
-});
-Clazz.defineMethod (c$, "setHeight",
-function (height) {
-this.height = height;
-}, "~N");
-Clazz.defineMethod (c$, "isAlignWithPanel",
-function () {
-return this.alignWithPanel;
-});
-Clazz.defineMethod (c$, "setAlignWithPanel",
-function (alignWithPanel) {
-this.alignWithPanel = alignWithPanel;
-}, "~B");
-Clazz.defineMethod (c$, "isColourWithAlignPanel",
-function () {
-return this.colourWithAlignPanel;
-});
-Clazz.defineMethod (c$, "setColourWithAlignPanel",
-function (colourWithAlignPanel) {
-this.colourWithAlignPanel = colourWithAlignPanel;
-}, "~B");
-Clazz.defineMethod (c$, "isColourByViewer",
-function () {
-return this.colourByViewer;
-});
-Clazz.defineMethod (c$, "setColourByViewer",
-function (colourByViewer) {
-this.colourByViewer = colourByViewer;
-}, "~B");
-Clazz.defineMethod (c$, "getStateData",
-function () {
-return this.stateData;
-});
-Clazz.defineMethod (c$, "setStateData",
-function (stateData) {
-this.stateData = stateData;
-}, "~S");
-Clazz.defineMethod (c$, "getFileData",
-function () {
-return this.fileData;
-});
-Clazz.defineMethod (c$, "setFileData",
-function (fileData) {
-this.fileData = fileData;
-}, "java.util.Map");
-Clazz.defineMethod (c$, "getViewId",
-function () {
-return this.viewId;
-});
-Clazz.defineMethod (c$, "getType",
-function () {
-return this.type;
-});
-c$.$StructureViewerModel$StructureData$ = function () {
-Clazz.pu$h ();
-c$ = Clazz.decorateAsClass (function () {
-Clazz.prepareCallback (this, arguments);
-this.filePath = null;
-this.pdbId = null;
-this.seqList = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel.StructureViewerModel, "StructureData");
-Clazz.makeConstructor (c$,
-function (a, b) {
-this.filePath = a;
-this.pdbId = b;
-this.seqList = new java.util.ArrayList ();
-}, "~S,~S");
-Clazz.defineMethod (c$, "getFilePath",
-function () {
-return this.filePath;
-});
-Clazz.defineMethod (c$, "setFilePath",
-function (a) {
-this.filePath = a;
-}, "~S");
-Clazz.defineMethod (c$, "getPdbId",
-function () {
-return this.pdbId;
-});
-Clazz.defineMethod (c$, "setPdbId",
-function (a) {
-this.pdbId = a;
-}, "~S");
-Clazz.defineMethod (c$, "getSeqList",
-function () {
-return this.seqList;
-});
-Clazz.defineMethod (c$, "setSeqList",
-function (a) {
-this.seqList = a;
-}, "java.util.List");
-c$ = Clazz.p0p ();
-};
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.HashMap"], "jalview.datamodel.StructureViewerModel", ["java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.width = 0;
+this.height = 0;
+this.alignWithPanel = false;
+this.colourWithAlignPanel = false;
+this.colourByViewer = false;
+this.stateData = "";
+this.viewId = null;
+this.type = null;
+this.fileData = null;
+if (!Clazz.isClassDefined ("jalview.datamodel.StructureViewerModel.StructureData")) {
+jalview.datamodel.StructureViewerModel.$StructureViewerModel$StructureData$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "StructureViewerModel");
+Clazz.prepareFields (c$, function () {
+this.fileData = new java.util.HashMap ();
+});
+Clazz.makeConstructor (c$,
+function (x, y, width, height, alignWithPanel, colourWithAlignPanel, colourByViewer, viewId, type) {
+this.x = x;
+this.y = y;
+this.width = width;
+this.height = height;
+this.alignWithPanel = alignWithPanel;
+this.colourWithAlignPanel = colourWithAlignPanel;
+this.colourByViewer = colourByViewer;
+this.viewId = viewId;
+this.type = type;
+}, "~N,~N,~N,~N,~B,~B,~B,~S,~S");
+Clazz.defineMethod (c$, "getX",
+function () {
+return this.x;
+});
+Clazz.defineMethod (c$, "setX",
+function (x) {
+this.x = x;
+}, "~N");
+Clazz.defineMethod (c$, "getY",
+function () {
+return this.y;
+});
+Clazz.defineMethod (c$, "setY",
+function (y) {
+this.y = y;
+}, "~N");
+Clazz.defineMethod (c$, "getWidth",
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "setWidth",
+function (width) {
+this.width = width;
+}, "~N");
+Clazz.defineMethod (c$, "getHeight",
+function () {
+return this.height;
+});
+Clazz.defineMethod (c$, "setHeight",
+function (height) {
+this.height = height;
+}, "~N");
+Clazz.defineMethod (c$, "isAlignWithPanel",
+function () {
+return this.alignWithPanel;
+});
+Clazz.defineMethod (c$, "setAlignWithPanel",
+function (alignWithPanel) {
+this.alignWithPanel = alignWithPanel;
+}, "~B");
+Clazz.defineMethod (c$, "isColourWithAlignPanel",
+function () {
+return this.colourWithAlignPanel;
+});
+Clazz.defineMethod (c$, "setColourWithAlignPanel",
+function (colourWithAlignPanel) {
+this.colourWithAlignPanel = colourWithAlignPanel;
+}, "~B");
+Clazz.defineMethod (c$, "isColourByViewer",
+function () {
+return this.colourByViewer;
+});
+Clazz.defineMethod (c$, "setColourByViewer",
+function (colourByViewer) {
+this.colourByViewer = colourByViewer;
+}, "~B");
+Clazz.defineMethod (c$, "getStateData",
+function () {
+return this.stateData;
+});
+Clazz.defineMethod (c$, "setStateData",
+function (stateData) {
+this.stateData = stateData;
+}, "~S");
+Clazz.defineMethod (c$, "getFileData",
+function () {
+return this.fileData;
+});
+Clazz.defineMethod (c$, "setFileData",
+function (fileData) {
+this.fileData = fileData;
+}, "java.util.Map");
+Clazz.defineMethod (c$, "getViewId",
+function () {
+return this.viewId;
+});
+Clazz.defineMethod (c$, "getType",
+function () {
+return this.type;
+});
+c$.$StructureViewerModel$StructureData$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.filePath = null;
+this.pdbId = null;
+this.seqList = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.StructureViewerModel, "StructureData");
+Clazz.makeConstructor (c$,
+function (a, b) {
+this.filePath = a;
+this.pdbId = b;
+this.seqList = new java.util.ArrayList ();
+}, "~S,~S");
+Clazz.defineMethod (c$, "getFilePath",
+function () {
+return this.filePath;
+});
+Clazz.defineMethod (c$, "setFilePath",
+function (a) {
+this.filePath = a;
+}, "~S");
+Clazz.defineMethod (c$, "getPdbId",
+function () {
+return this.pdbId;
+});
+Clazz.defineMethod (c$, "setPdbId",
+function (a) {
+this.pdbId = a;
+}, "~S");
+Clazz.defineMethod (c$, "getSeqList",
+function () {
+return this.seqList;
+});
+Clazz.defineMethod (c$, "setSeqList",
+function (a) {
+this.seqList = a;
+}, "java.util.List");
+c$ = Clazz.p0p ();
+};
+});
diff --git a/bin/jalview/datamodel/UniprotEntry.js b/bin/jalview/datamodel/UniprotEntry.js
index 24b3ce2..5b80f48 100644
--- a/bin/jalview/datamodel/UniprotEntry.js
+++ b/bin/jalview/datamodel/UniprotEntry.js
@@ -1,58 +1,58 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this.sequence = null;
-this.name = null;
-this.accession = null;
-this.feature = null;
-this.dbrefs = null;
-this.protName = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "UniprotEntry");
-Clazz.defineMethod (c$, "setAccession",
-function (items) {
-this.accession = items;
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "setFeature",
-function (items) {
-this.feature = items;
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "getFeature",
-function () {
-return this.feature;
-});
-Clazz.defineMethod (c$, "getAccession",
-function () {
-return this.accession;
-});
-Clazz.defineMethod (c$, "setProtein",
-function (names) {
-this.protName = names;
-}, "jalview.datamodel.UniprotProteinName");
-Clazz.defineMethod (c$, "getProtein",
-function () {
-return this.protName;
-});
-Clazz.defineMethod (c$, "setName",
-function (na) {
-this.name = na;
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "getName",
-function () {
-return this.name;
-});
-Clazz.defineMethod (c$, "getUniprotSequence",
-function () {
-return this.sequence;
-});
-Clazz.defineMethod (c$, "setUniprotSequence",
-function (seq) {
-this.sequence = seq;
-}, "jalview.datamodel.UniprotSequence");
-Clazz.defineMethod (c$, "getDbReference",
-function () {
-return this.dbrefs;
-});
-Clazz.defineMethod (c$, "setDbReference",
-function (dbref) {
-this.dbrefs = dbref;
-}, "java.util.Vector");
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.sequence = null;
+this.name = null;
+this.accession = null;
+this.feature = null;
+this.dbrefs = null;
+this.protName = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotEntry");
+Clazz.defineMethod (c$, "setAccession",
+function (items) {
+this.accession = items;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "setFeature",
+function (items) {
+this.feature = items;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getFeature",
+function () {
+return this.feature;
+});
+Clazz.defineMethod (c$, "getAccession",
+function () {
+return this.accession;
+});
+Clazz.defineMethod (c$, "setProtein",
+function (names) {
+this.protName = names;
+}, "jalview.datamodel.UniprotProteinName");
+Clazz.defineMethod (c$, "getProtein",
+function () {
+return this.protName;
+});
+Clazz.defineMethod (c$, "setName",
+function (na) {
+this.name = na;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getName",
+function () {
+return this.name;
+});
+Clazz.defineMethod (c$, "getUniprotSequence",
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "setUniprotSequence",
+function (seq) {
+this.sequence = seq;
+}, "jalview.datamodel.UniprotSequence");
+Clazz.defineMethod (c$, "getDbReference",
+function () {
+return this.dbrefs;
+});
+Clazz.defineMethod (c$, "setDbReference",
+function (dbref) {
+this.dbrefs = dbref;
+}, "java.util.Vector");
diff --git a/bin/jalview/datamodel/UniprotFile.js b/bin/jalview/datamodel/UniprotFile.js
index f779f79..e0f80f8 100644
--- a/bin/jalview/datamodel/UniprotFile.js
+++ b/bin/jalview/datamodel/UniprotFile.js
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this._items = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "UniprotFile");
-Clazz.defineMethod (c$, "setUniprotEntries",
-function (items) {
-this._items = items;
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "getUniprotEntries",
-function () {
-return this._items;
-});
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this._items = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotFile");
+Clazz.defineMethod (c$, "setUniprotEntries",
+function (items) {
+this._items = items;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getUniprotEntries",
+function () {
+return this._items;
+});
diff --git a/bin/jalview/datamodel/UniprotProteinName.js b/bin/jalview/datamodel/UniprotProteinName.js
index fd4ce5b..931e26c 100644
--- a/bin/jalview/datamodel/UniprotProteinName.js
+++ b/bin/jalview/datamodel/UniprotProteinName.js
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("jalview.datamodel");
-c$ = Clazz.decorateAsClass (function () {
-this.names = null;
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "UniprotProteinName");
-Clazz.defineMethod (c$, "setName",
-function (names) {
-this.names = names;
-}, "java.util.Vector");
-Clazz.defineMethod (c$, "getName",
-function () {
-return this.names;
-});
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.names = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotProteinName");
+Clazz.defineMethod (c$, "setName",
+function (names) {
+this.names = names;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getName",
+function () {
+return this.names;
+});
diff --git a/bin/jalview/datamodel/UniprotSequence.js b/bin/jalview/datamodel/UniprotSequence.js
index 039f1db..d6ae549 100644
--- a/bin/jalview/datamodel/UniprotSequence.js
+++ b/bin/jalview/datamodel/UniprotSequence.js
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("jalview.datamodel");
-Clazz.load (null, "jalview.datamodel.UniprotSequence", ["java.lang.StringBuilder"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this._content = "";
-Clazz.instantialize (this, arguments);
-}, jalview.datamodel, "UniprotSequence");
-Clazz.defineMethod (c$, "setContent",
-function (seq) {
-if (seq != null) {
-var sb = new StringBuilder (seq.length);
-for (var i = 0; i < seq.length; i++) {
-if (seq.charAt (i) != ' ') {
-sb.append (seq.charAt (i));
-}}
-this._content = sb.toString ();
-}}, "~S");
-Clazz.defineMethod (c$, "getContent",
-function () {
-return this._content;
-});
-});
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.UniprotSequence", ["java.lang.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this._content = "";
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotSequence");
+Clazz.defineMethod (c$, "setContent",
+function (seq) {
+if (seq != null) {
+var sb = new StringBuilder (seq.length);
+for (var i = 0; i < seq.length; i++) {
+if (seq.charAt (i) != ' ') {
+sb.append (seq.charAt (i));
+}}
+this._content = sb.toString ();
+}}, "~S");
+Clazz.defineMethod (c$, "getContent",
+function () {
+return this._content;
+});
+});
diff --git a/bin/jalview/ext/jmol/JmolCommands.class b/bin/jalview/ext/jmol/JmolCommands.class
index 5debe8db5e968bb61304a3d53794be9890ac6665..36f4b3f4c1991dc1021435eecf267f58a50cb60d 100644
GIT binary patch
delta 53
zcmaE<@mynrEidEA&33$2Ec|^8B7Yh9*%<^F|1)SY@J#+7BsSSVh>MAVVe%@$Bqk-s
J&HO@9OaP|G4ZHvV
delta 51
zcmaE^@ls=hEidEg&33$2Ec_D~#Qrkyvoi=V{%25U;F%mKq`=I;z%+TKU=p)DBhzMH
Hp(rK*dCd$<
diff --git a/bin/jalview/ext/jmol/JmolCommands.js b/bin/jalview/ext/jmol/JmolCommands.js
index 495572c..b08a4e3 100644
--- a/bin/jalview/ext/jmol/JmolCommands.js
+++ b/bin/jalview/ext/jmol/JmolCommands.js
@@ -1,69 +1,69 @@
-Clazz.declarePackage ("jalview.ext.jmol");
-Clazz.load (null, "jalview.ext.jmol.JmolCommands", ["jalview.structure.StructureMappingcommandSet", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
-c$ = Clazz.declareType (jalview.ext.jmol, "JmolCommands");
-c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand",
-function (ssm, files, sequence, sr, fr, alignment) {
-var cset = new java.util.ArrayList ();
-for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
-var mapping = ssm.getMapping (files[pdbfnum]);
-var command = new StringBuffer ();
-var smc;
-var str = new java.util.ArrayList ();
-if (mapping == null || mapping.length < 1) {
-continue;
-}var lastPos = -1;
-for (var s = 0; s < sequence[pdbfnum].length; s++) {
-for (var sp, m = 0; m < mapping.length; m++) {
-if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
-var asp = alignment.getSequenceAt (sp);
-for (var r = 0; r < asp.getLength (); r++) {
-if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
-continue;
-}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
-if (pos < 1 || pos == lastPos) {
-continue;
-}lastPos = pos;
-var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
-if (fr != null) {
-col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
-}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
-if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
-command = jalview.ext.jmol.JmolCommands.condenseCommand (command, pos);
-continue;
-}command.append (";");
-if (command.length () > 51200) {
-str.add (command.toString ());
-command.setLength (0);
-}command.append ("select " + pos);
-command.append (newSelcom);
-}
-break;
-}}
-}
-{
-str.add (command.toString ());
-command.setLength (0);
-}cset.add ( new jalview.structure.StructureMappingcommandSet (jalview.ext.jmol.JmolCommands, files[pdbfnum], str.toArray ( new Array (str.size ()))));
-}
-return cset.toArray ( new Array (cset.size ()));
-}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
-c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand",
-function (command, pos) {
-var p = command.length ();
-var q = p;
-do {
-p -= 6;
-if (p < 1) {
-p = 0;
-};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
-var sb = new StringBuffer (command.substring (0, q + 7));
-command = command.$delete (0, q + 7);
-var start;
-if (command.indexOf ("-") > -1) {
-start = command.substring (0, command.indexOf ("-"));
-} else {
-start = command.substring (0, command.indexOf (":"));
-}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
-return sb;
-}, "StringBuffer,~N");
-});
+Clazz.declarePackage ("jalview.ext.jmol");
+Clazz.load (null, "jalview.ext.jmol.JmolCommands", ["jalview.structure.StructureMappingcommandSet", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.ext.jmol, "JmolCommands");
+c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand",
+function (ssm, files, sequence, sr, fr, alignment) {
+var cset = new java.util.ArrayList ();
+for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
+var mapping = ssm.getMapping (files[pdbfnum]);
+var command = new StringBuffer ();
+var smc;
+var str = new java.util.ArrayList ();
+if (mapping == null || mapping.length < 1) {
+continue;
+}var lastPos = -1;
+for (var s = 0; s < sequence[pdbfnum].length; s++) {
+for (var sp, m = 0; m < mapping.length; m++) {
+if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
+var asp = alignment.getSequenceAt (sp);
+for (var r = 0; r < asp.getLength (); r++) {
+if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
+continue;
+}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
+if (pos < 1 || pos == lastPos) {
+continue;
+}lastPos = pos;
+var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
+if (fr != null) {
+col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
+}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
+if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
+command = jalview.ext.jmol.JmolCommands.condenseCommand (command, pos);
+continue;
+}command.append (";");
+if (command.length () > 51200) {
+str.add (command.toString ());
+command.setLength (0);
+}command.append ("select " + pos);
+command.append (newSelcom);
+}
+break;
+}}
+}
+{
+str.add (command.toString ());
+command.setLength (0);
+}cset.add ( new jalview.structure.StructureMappingcommandSet (jalview.ext.jmol.JmolCommands, files[pdbfnum], str.toArray ( new Array (str.size ()))));
+}
+return cset.toArray ( new Array (cset.size ()));
+}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
+c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand",
+function (command, pos) {
+var p = command.length ();
+var q = p;
+do {
+p -= 6;
+if (p < 1) {
+p = 0;
+};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
+var sb = new StringBuffer (command.substring (0, q + 7));
+command = command.$delete (0, q + 7);
+var start;
+if (command.indexOf ("-") > -1) {
+start = command.substring (0, command.indexOf ("-"));
+} else {
+start = command.substring (0, command.indexOf (":"));
+}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
+return sb;
+}, "StringBuffer,~N");
+});
diff --git a/bin/jalview/ext/varna/JalviewVarnaBinding.js b/bin/jalview/ext/varna/JalviewVarnaBinding.js
index f8bdf18..61bd3e7 100644
--- a/bin/jalview/ext/varna/JalviewVarnaBinding.js
+++ b/bin/jalview/ext/varna/JalviewVarnaBinding.js
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.ext.varna");
-Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.structure.StructureListener", "jalview.structures.models.SequenceStructureBindingModel", "java.awt.event.ComponentListener"], "jalview.ext.varna.JalviewVarnaBinding", null, function () {
-c$ = Clazz.declareType (jalview.ext.varna, "JalviewVarnaBinding", jalview.structures.models.SequenceStructureBindingModel, [jalview.structure.StructureListener, java.awt.event.ComponentListener, jalview.api.StructureSelectionManagerProvider]);
-});
+Clazz.declarePackage ("jalview.ext.varna");
+Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.structure.StructureListener", "jalview.structures.models.SequenceStructureBindingModel", "java.awt.event.ComponentListener"], "jalview.ext.varna.JalviewVarnaBinding", null, function () {
+c$ = Clazz.declareType (jalview.ext.varna, "JalviewVarnaBinding", jalview.structures.models.SequenceStructureBindingModel, [jalview.structure.StructureListener, java.awt.event.ComponentListener, jalview.api.StructureSelectionManagerProvider]);
+});
diff --git a/bin/jalview/ext/varna/RnaModel.js b/bin/jalview/ext/varna/RnaModel.js
index 9916e8e..f125256 100644
--- a/bin/jalview/ext/varna/RnaModel.js
+++ b/bin/jalview/ext/varna/RnaModel.js
@@ -1,17 +1,17 @@
-Clazz.declarePackage ("jalview.ext.varna");
-c$ = Clazz.decorateAsClass (function () {
-this.title = null;
-this.ann = null;
-this.seq = null;
-this.gapped = false;
-this.rna = null;
-Clazz.instantialize (this, arguments);
-}, jalview.ext.varna, "RnaModel");
-Clazz.makeConstructor (c$,
-function (t, aa, s, r, g) {
-this.title = t;
-this.ann = aa;
-this.seq = s;
-this.rna = r;
-this.gapped = g;
-}, "~S,jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,fr.orsay.lri.varna.models.rna.RNA,~B");
+Clazz.declarePackage ("jalview.ext.varna");
+c$ = Clazz.decorateAsClass (function () {
+this.title = null;
+this.ann = null;
+this.seq = null;
+this.gapped = false;
+this.rna = null;
+Clazz.instantialize (this, arguments);
+}, jalview.ext.varna, "RnaModel");
+Clazz.makeConstructor (c$,
+function (t, aa, s, r, g) {
+this.title = t;
+this.ann = aa;
+this.seq = s;
+this.rna = r;
+this.gapped = g;
+}, "~S,jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,fr.orsay.lri.varna.models.rna.RNA,~B");
diff --git a/bin/jalview/ext/varna/VarnaCommands.class b/bin/jalview/ext/varna/VarnaCommands.class
index 7a0d88ffafdbe8ab137ff09f63003b25e2f799e2..27a2330ebde8b4427e67fa7ff0e1773236622921 100644
GIT binary patch
delta 46
zcmdn0x>$L
diff --git a/bin/jalview/ext/varna/VarnaCommands.js b/bin/jalview/ext/varna/VarnaCommands.js
index b609d09..6562f80 100644
--- a/bin/jalview/ext/varna/VarnaCommands.js
+++ b/bin/jalview/ext/varna/VarnaCommands.js
@@ -1,66 +1,66 @@
-Clazz.declarePackage ("jalview.ext.varna");
-Clazz.load (null, "jalview.ext.varna.VarnaCommands", ["jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
-c$ = Clazz.declareType (jalview.ext.varna, "VarnaCommands");
-c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand",
-function (ssm, files, sequence, sr, fr, alignment) {
-var str = new java.util.ArrayList ();
-var command = new StringBuffer ();
-for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
-var mapping = ssm.getMapping (files[pdbfnum]);
-if (mapping == null || mapping.length < 1) {
-continue;
-}var lastPos = -1;
-for (var s = 0; s < sequence[pdbfnum].length; s++) {
-for (var sp, m = 0; m < mapping.length; m++) {
-if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
-var asp = alignment.getSequenceAt (sp);
-for (var r = 0; r < asp.getLength (); r++) {
-if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
-continue;
-}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
-if (pos < 1 || pos == lastPos) {
-continue;
-}lastPos = pos;
-var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
-if (fr != null) {
-col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
-}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
-if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
-command = jalview.ext.varna.VarnaCommands.condenseCommand (command, pos);
-continue;
-}command.append (";");
-if (command.length () > 51200) {
-str.add (command.toString ());
-command.setLength (0);
-}command.append ("select " + pos);
-command.append (newSelcom);
-}
-break;
-}}
-}
-}
-{
-str.add (command.toString ());
-command.setLength (0);
-}return str.toArray ( new Array (str.size ()));
-}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
-c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand",
-function (command, pos) {
-var p = command.length ();
-var q = p;
-do {
-p -= 6;
-if (p < 1) {
-p = 0;
-};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
-var sb = new StringBuffer (command.substring (0, q + 7));
-command = command.$delete (0, q + 7);
-var start;
-if (command.indexOf ("-") > -1) {
-start = command.substring (0, command.indexOf ("-"));
-} else {
-start = command.substring (0, command.indexOf (":"));
-}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
-return sb;
-}, "StringBuffer,~N");
-});
+Clazz.declarePackage ("jalview.ext.varna");
+Clazz.load (null, "jalview.ext.varna.VarnaCommands", ["jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.ext.varna, "VarnaCommands");
+c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand",
+function (ssm, files, sequence, sr, fr, alignment) {
+var str = new java.util.ArrayList ();
+var command = new StringBuffer ();
+for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
+var mapping = ssm.getMapping (files[pdbfnum]);
+if (mapping == null || mapping.length < 1) {
+continue;
+}var lastPos = -1;
+for (var s = 0; s < sequence[pdbfnum].length; s++) {
+for (var sp, m = 0; m < mapping.length; m++) {
+if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
+var asp = alignment.getSequenceAt (sp);
+for (var r = 0; r < asp.getLength (); r++) {
+if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
+continue;
+}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
+if (pos < 1 || pos == lastPos) {
+continue;
+}lastPos = pos;
+var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
+if (fr != null) {
+col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
+}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
+if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
+command = jalview.ext.varna.VarnaCommands.condenseCommand (command, pos);
+continue;
+}command.append (";");
+if (command.length () > 51200) {
+str.add (command.toString ());
+command.setLength (0);
+}command.append ("select " + pos);
+command.append (newSelcom);
+}
+break;
+}}
+}
+}
+{
+str.add (command.toString ());
+command.setLength (0);
+}return str.toArray ( new Array (str.size ()));
+}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
+c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand",
+function (command, pos) {
+var p = command.length ();
+var q = p;
+do {
+p -= 6;
+if (p < 1) {
+p = 0;
+};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
+var sb = new StringBuffer (command.substring (0, q + 7));
+command = command.$delete (0, q + 7);
+var start;
+if (command.indexOf ("-") > -1) {
+start = command.substring (0, command.indexOf ("-"));
+} else {
+start = command.substring (0, command.indexOf (":"));
+}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
+return sb;
+}, "StringBuffer,~N");
+});
diff --git a/bin/jalview/io/AlignFile.js b/bin/jalview/io/AlignFile.js
index f3247de..142c507 100644
--- a/bin/jalview/io/AlignFile.js
+++ b/bin/jalview/io/AlignFile.js
@@ -1,158 +1,158 @@
-Clazz.declarePackage ("jalview.io");
-Clazz.load (["jalview.io.FileParse"], "jalview.io.AlignFile", ["jalview.datamodel.Sequence", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Error", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.noSeqs = 0;
-this.maxLength = 0;
-this.seqs = null;
-this.annotations = null;
-this.seqGroups = null;
-this.properties = null;
-this.start = 0;
-this.end = 0;
-this.jvSuffix = true;
-this.parseCalled = false;
-this.newickStrings = null;
-Clazz.instantialize (this, arguments);
-}, jalview.io, "AlignFile", jalview.io.FileParse);
-Clazz.makeConstructor (c$,
-function () {
-Clazz.superConstructor (this, jalview.io.AlignFile, []);
-this.initData ();
-});
-Clazz.makeConstructor (c$,
-function (inFile, type) {
-this.construct (true, inFile, type);
-}, "~S,~S");
-Clazz.makeConstructor (c$,
-function (parseImmediately, inFile, type) {
-Clazz.superConstructor (this, jalview.io.AlignFile, [inFile, type]);
-this.initData ();
-if (parseImmediately) {
-this.doParse ();
-}}, "~B,~S,~S");
-Clazz.makeConstructor (c$,
-function (source) {
-this.construct (true, source);
-}, "jalview.io.FileParse");
-Clazz.makeConstructor (c$,
-function (parseImmediately, source) {
-Clazz.superConstructor (this, jalview.io.AlignFile, [source]);
-this.initData ();
-if (parseImmediately) {
-this.doParse ();
-}}, "~B,jalview.io.FileParse");
-Clazz.defineMethod (c$, "doParse",
-function () {
-if (this.parseCalled) {
-throw new java.io.IOException ("Implementation error: Parser called twice for same data.\nNeed to call initData() again before parsing can be reattempted.");
-}this.parseCalled = true;
-this.parse ();
-for (var i = 0, c = this.seqs.size (); i < c; i++) {
-this.seqs.get (i).setIndex (i);
-}
-});
-Clazz.defineMethod (c$, "getSeqs",
-function () {
-return this.seqs;
-});
-Clazz.defineMethod (c$, "getSeqGroups",
-function () {
-return this.seqGroups;
-});
-Clazz.defineMethod (c$, "getSeqsAsArray",
-function () {
-var s = new Array (this.seqs.size ());
-for (var i = 0; i < this.seqs.size (); i++) {
-s[i] = this.seqs.elementAt (i);
-}
-return s;
-});
-Clazz.defineMethod (c$, "addAnnotations",
-function (al) {
-this.addProperties (al);
-for (var i = 0; i < this.annotations.size (); i++) {
-var an = this.annotations.elementAt (i);
-an.validateRangeAndDisplay ();
-al.addAnnotation (an);
-}
-}, "jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "addSeqGroups",
-function (al) {
-this.seqGroups = al.getGroups ();
-}, "jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "addProperties",
-function (al) {
-if (this.properties != null && this.properties.size () > 0) {
-var keys = this.properties.keys ();
-var vals = this.properties.elements ();
-while (keys.hasMoreElements ()) {
-al.setProperty (keys.nextElement (), vals.nextElement ());
-}
-}}, "jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "setAlignmentProperty",
-function (key, value) {
-if (key == null) {
-throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_cannot_have_null_alignment"));
-}if (value == null) {
-return;
-}if (this.properties == null) {
-this.properties = new java.util.Hashtable ();
-}this.properties.put (key, value);
-}, "~O,~O");
-Clazz.defineMethod (c$, "getAlignmentProperty",
-function (key) {
-if (this.properties != null && key != null) {
-return this.properties.get (key);
-}return null;
-}, "~O");
-Clazz.defineMethod (c$, "initData",
-function () {
-this.seqs = new java.util.Vector ();
-this.annotations = new java.util.Vector ();
-this.seqGroups = new java.util.ArrayList ();
-this.parseCalled = false;
-});
-Clazz.defineMethod (c$, "setSeqs",
-function (s) {
-this.seqs = new java.util.Vector ();
-for (var i = 0; i < s.length; i++) {
-this.seqs.addElement (s[i]);
-}
-}, "~A");
-Clazz.defineMethod (c$, "addJVSuffix",
-function (b) {
-this.jvSuffix = b;
-}, "~B");
-Clazz.defineMethod (c$, "parseId",
-function (id) {
-var seq = null;
-id = id.trim ();
-var space = id.indexOf (" ");
-if (space > -1) {
-seq = new jalview.datamodel.Sequence (id.substring (0, space), "");
-seq.setDescription (id.substring (space + 1));
-} else {
-seq = new jalview.datamodel.Sequence (id, "");
-}return seq;
-}, "~S");
-Clazz.defineMethod (c$, "printId",
-function (seq) {
-return seq.getDisplayId (this.jvSuffix);
-}, "jalview.datamodel.SequenceI");
-Clazz.defineMethod (c$, "addNewickTree",
-function (treeName, newickString) {
-if (this.newickStrings == null) {
-this.newickStrings = new java.util.Vector ();
-}this.newickStrings.addElement ( Clazz.newArray (-1, [treeName, newickString]));
-}, "~S,~S");
-Clazz.defineMethod (c$, "getTreeCount",
-function () {
-return this.newickStrings == null ? 0 : this.newickStrings.size ();
-});
-Clazz.defineMethod (c$, "addGroups",
-function (al) {
-for (var sg, $sg = this.getSeqGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
-al.addGroup (sg);
-}
-}, "jalview.datamodel.AlignmentI");
-});
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.FileParse"], "jalview.io.AlignFile", ["jalview.datamodel.Sequence", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Error", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.noSeqs = 0;
+this.maxLength = 0;
+this.seqs = null;
+this.annotations = null;
+this.seqGroups = null;
+this.properties = null;
+this.start = 0;
+this.end = 0;
+this.jvSuffix = true;
+this.parseCalled = false;
+this.newickStrings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AlignFile", jalview.io.FileParse);
+Clazz.makeConstructor (c$,
+function () {
+Clazz.superConstructor (this, jalview.io.AlignFile, []);
+this.initData ();
+});
+Clazz.makeConstructor (c$,
+function (inFile, type) {
+this.construct (true, inFile, type);
+}, "~S,~S");
+Clazz.makeConstructor (c$,
+function (parseImmediately, inFile, type) {
+Clazz.superConstructor (this, jalview.io.AlignFile, [inFile, type]);
+this.initData ();
+if (parseImmediately) {
+this.doParse ();
+}}, "~B,~S,~S");
+Clazz.makeConstructor (c$,
+function (source) {
+this.construct (true, source);
+}, "jalview.io.FileParse");
+Clazz.makeConstructor (c$,
+function (parseImmediately, source) {
+Clazz.superConstructor (this, jalview.io.AlignFile, [source]);
+this.initData ();
+if (parseImmediately) {
+this.doParse ();
+}}, "~B,jalview.io.FileParse");
+Clazz.defineMethod (c$, "doParse",
+function () {
+if (this.parseCalled) {
+throw new java.io.IOException ("Implementation error: Parser called twice for same data.\nNeed to call initData() again before parsing can be reattempted.");
+}this.parseCalled = true;
+this.parse ();
+for (var i = 0, c = this.seqs.size (); i < c; i++) {
+this.seqs.get (i).setIndex (i);
+}
+});
+Clazz.defineMethod (c$, "getSeqs",
+function () {
+return this.seqs;
+});
+Clazz.defineMethod (c$, "getSeqGroups",
+function () {
+return this.seqGroups;
+});
+Clazz.defineMethod (c$, "getSeqsAsArray",
+function () {
+var s = new Array (this.seqs.size ());
+for (var i = 0; i < this.seqs.size (); i++) {
+s[i] = this.seqs.elementAt (i);
+}
+return s;
+});
+Clazz.defineMethod (c$, "addAnnotations",
+function (al) {
+this.addProperties (al);
+for (var i = 0; i < this.annotations.size (); i++) {
+var an = this.annotations.elementAt (i);
+an.validateRangeAndDisplay ();
+al.addAnnotation (an);
+}
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "addSeqGroups",
+function (al) {
+this.seqGroups = al.getGroups ();
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "addProperties",
+function (al) {
+if (this.properties != null && this.properties.size () > 0) {
+var keys = this.properties.keys ();
+var vals = this.properties.elements ();
+while (keys.hasMoreElements ()) {
+al.setProperty (keys.nextElement (), vals.nextElement ());
+}
+}}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "setAlignmentProperty",
+function (key, value) {
+if (key == null) {
+throw new Error (jalview.util.MessageManager.getString ("error.implementation_error_cannot_have_null_alignment"));
+}if (value == null) {
+return;
+}if (this.properties == null) {
+this.properties = new java.util.Hashtable ();
+}this.properties.put (key, value);
+}, "~O,~O");
+Clazz.defineMethod (c$, "getAlignmentProperty",
+function (key) {
+if (this.properties != null && key != null) {
+return this.properties.get (key);
+}return null;
+}, "~O");
+Clazz.defineMethod (c$, "initData",
+function () {
+this.seqs = new java.util.Vector ();
+this.annotations = new java.util.Vector ();
+this.seqGroups = new java.util.ArrayList ();
+this.parseCalled = false;
+});
+Clazz.defineMethod (c$, "setSeqs",
+function (s) {
+this.seqs = new java.util.Vector ();
+for (var i = 0; i < s.length; i++) {
+this.seqs.addElement (s[i]);
+}
+}, "~A");
+Clazz.defineMethod (c$, "addJVSuffix",
+function (b) {
+this.jvSuffix = b;
+}, "~B");
+Clazz.defineMethod (c$, "parseId",
+function (id) {
+var seq = null;
+id = id.trim ();
+var space = id.indexOf (" ");
+if (space > -1) {
+seq = new jalview.datamodel.Sequence (id.substring (0, space), "");
+seq.setDescription (id.substring (space + 1));
+} else {
+seq = new jalview.datamodel.Sequence (id, "");
+}return seq;
+}, "~S");
+Clazz.defineMethod (c$, "printId",
+function (seq) {
+return seq.getDisplayId (this.jvSuffix);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "addNewickTree",
+function (treeName, newickString) {
+if (this.newickStrings == null) {
+this.newickStrings = new java.util.Vector ();
+}this.newickStrings.addElement ( Clazz.newArray (-1, [treeName, newickString]));
+}, "~S,~S");
+Clazz.defineMethod (c$, "getTreeCount",
+function () {
+return this.newickStrings == null ? 0 : this.newickStrings.size ();
+});
+Clazz.defineMethod (c$, "addGroups",
+function (al) {
+for (var sg, $sg = this.getSeqGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+al.addGroup (sg);
+}
+}, "jalview.datamodel.AlignmentI");
+});
diff --git a/bin/jalview/io/AlignmentProperties.js b/bin/jalview/io/AlignmentProperties.js
index 0092589..6030bea 100644
--- a/bin/jalview/io/AlignmentProperties.js
+++ b/bin/jalview/io/AlignmentProperties.js
@@ -1,78 +1,78 @@
-Clazz.declarePackage ("jalview.io");
-Clazz.load (null, "jalview.io.AlignmentProperties", ["java.lang.StringBuffer"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.alignment = null;
-Clazz.instantialize (this, arguments);
-}, jalview.io, "AlignmentProperties");
-Clazz.makeConstructor (c$,
-function (alignment) {
-this.alignment = alignment;
-}, "jalview.datamodel.AlignmentI");
-Clazz.defineMethod (c$, "writeProperties",
-function (sb, html) {
-var nl = html ? "
" : System.getProperty ("line.separator");
-var avg = 0;
-var min = 2147483647;
-var max = 0;
-for (var i = 0; i < this.alignment.getHeight (); i++) {
-var size = 1 + this.alignment.getSequenceAt (i).getEnd () - this.alignment.getSequenceAt (i).getStart ();
-avg += size;
-if (size > max) {
-max = size;
-}if (size < min) {
-min = size;
-}}
-avg = avg / this.alignment.getHeight ();
-sb.append (nl);
-sb.append ("Sequences: " + this.alignment.getHeight ());
-sb.append (nl);
-sb.append ("Minimum Sequence Length: " + min);
-sb.append (nl);
-sb.append ("Maximum Sequence Length: " + max);
-sb.append (nl);
-sb.append ("Average Length: " + Clazz.floatToInt (avg));
-if ((this.alignment).alignmentProperties != null) {
-sb.append (nl);
-sb.append (nl);
-if (html) {
-sb.append ("");
-}var props = (this.alignment).alignmentProperties;
-var en = props.keys ();
-while (en.hasMoreElements ()) {
-var key = en.nextElement ().toString ();
-var vals = props.get (key).toString ();
-if (html) {
-var val = new StringBuffer ();
-var pos = 0;
-var npos;
-do {
-npos = vals.indexOf ("\n", pos);
-if (npos == -1) {
-val.append (vals.substring (pos));
-} else {
-val.append (vals.substring (pos, npos));
-val.append ("
");
-}pos = npos + 1;
-} while (npos != -1);
-sb.append ("" + key + " | " + val + " |
");
-} else {
-sb.append (nl + key + "\t" + vals);
-}}
-if (html) {
-sb.append ("
");
-}}}, "StringBuffer,~B");
-Clazz.defineMethod (c$, "formatAsString",
-function () {
-return this.formatReport (false);
-});
-Clazz.defineMethod (c$, "formatReport",
-function (html) {
-var sb = new StringBuffer ();
-this.writeProperties (sb, html);
-return sb;
-}, "~B");
-Clazz.defineMethod (c$, "formatAsHtml",
-function () {
-return this.formatReport (true);
-});
-});
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.AlignmentProperties", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.alignment = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AlignmentProperties");
+Clazz.makeConstructor (c$,
+function (alignment) {
+this.alignment = alignment;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "writeProperties",
+function (sb, html) {
+var nl = html ? "
" : System.getProperty ("line.separator");
+var avg = 0;
+var min = 2147483647;
+var max = 0;
+for (var i = 0; i < this.alignment.getHeight (); i++) {
+var size = 1 + this.alignment.getSequenceAt (i).getEnd () - this.alignment.getSequenceAt (i).getStart ();
+avg += size;
+if (size > max) {
+max = size;
+}if (size < min) {
+min = size;
+}}
+avg = avg / this.alignment.getHeight ();
+sb.append (nl);
+sb.append ("Sequences: " + this.alignment.getHeight ());
+sb.append (nl);
+sb.append ("Minimum Sequence Length: " + min);
+sb.append (nl);
+sb.append ("Maximum Sequence Length: " + max);
+sb.append (nl);
+sb.append ("Average Length: " + Clazz.floatToInt (avg));
+if ((this.alignment).alignmentProperties != null) {
+sb.append (nl);
+sb.append (nl);
+if (html) {
+sb.append ("");
+}var props = (this.alignment).alignmentProperties;
+var en = props.keys ();
+while (en.hasMoreElements ()) {
+var key = en.nextElement ().toString ();
+var vals = props.get (key).toString ();
+if (html) {
+var val = new StringBuffer ();
+var pos = 0;
+var npos;
+do {
+npos = vals.indexOf ("\n", pos);
+if (npos == -1) {
+val.append (vals.substring (pos));
+} else {
+val.append (vals.substring (pos, npos));
+val.append ("
");
+}pos = npos + 1;
+} while (npos != -1);
+sb.append ("" + key + " | " + val + " |
");
+} else {
+sb.append (nl + key + "\t" + vals);
+}}
+if (html) {
+sb.append ("
");
+}}}, "StringBuffer,~B");
+Clazz.defineMethod (c$, "formatAsString",
+function () {
+return this.formatReport (false);
+});
+Clazz.defineMethod (c$, "formatReport",
+function (html) {
+var sb = new StringBuffer ();
+this.writeProperties (sb, html);
+return sb;
+}, "~B");
+Clazz.defineMethod (c$, "formatAsHtml",
+function () {
+return this.formatReport (true);
+});
+});
diff --git a/bin/jalview/io/AnnotationFile.class b/bin/jalview/io/AnnotationFile.class
index 4aea77ae865b6b714b9287cb808d4631545e91f6..fd5b7293d5a862b706a73e4abde4c304ee90c61a 100644
GIT binary patch
literal 36157
zcmchA34B$>_5YdW-uvFmO$bR|lE)eZ1rh>+81V(f00Dw5N>~go5RwN3LlTp)DehFQ
z)_o1Qp<>(>g#eU1Vi#O8WDDvx
z6+=v4zHDKnaaQHRTC>3Vs><3qm5nw09xb#-8?XUV)W@Y>l;NX1L1{d{p-qv7%Erp(
z`o;hqKm#1=-vNW=tDBl5%Un8;4ic2IIMRG{V|_!Uv3a$ig9hz`uj0Y`7V&fkxnz;e
zPx&tSDZo!dTuSlEhPvcZs*es9gi1jpTuLK5fTxiz9ZDI%15cm#X-Q3!pq}wP*oOeH
z1L;kX=IP#cdmAh$*wsvdURhU*_E=P>_F03vScgN{mh8^d<57r1M+(Z>x2~qPI@0K)
zaiF^?B~#~=mCl`CGJX1tStYZ|W=s#zSen4QaX3FsbZHVz2BlRtG(_q^F@;@CdLQ(T
zTW-cE_7MmyrGMUd&{uP$I-KXwRP3;s((>k-+F=t=9H6794-Ynj2Rpjc7#_29v4ycQ
zxaUll%4sxcxw+oMZh*$n1m3kdE;-}_J{!PQ%?ZB5hE)zaF1}?6wkfHtSzNa)lH9h~
zTc4Tm)S9N|f9ZImyO?H-yC*f)FK;M5;%85Z
z>Gyb-=F$m*p8TZ~>Uy*;W;wpTcKNcp@<=V@9fTqG>nx_?_%2J-?!!O>=0LDch%D+F
z$tjg_af@yJ*^2__)?zn78=dzTQnJAlC^Zp43?|hl_8V+BwS!Pw-4GLOha`1ig84Zc
zC}_{mp7}2TpVTF>1Qd4Oj{hG!=BFjJ)S((d{bCdN$sKp;B-SWC)~t1v%b<3afvb$n
znov5?@1uHXu>iCC$t*n@A;Ev9gfcpmr_$`wa#|rMbwy264LI4b6t+F8lnvX@0Rh)H
z7IX7eF0H0hKq5ub@r|Ia{W3az2j9Xd@=uh_D?5Ibcqok3?}jY}$8zPpJHuP+(y!=Tw1&EfweD;5MCXl-35>Gh6grYIFYIfTDi!sN0ErQ>Hz
zE%!6rD_y#ZuJ&|ZhYr|-n9fTG-xRu*);ZMDL60z(xwM|H1F6(BM~vkF2JO(hELsi(
z+(0)ubR)ngG*PV9r44j5L_?i1zB=mMs4jBoR%q$t%6xPih;IlhAfvzTU<$kw+dHUi
zUrilTS3bHMoeFsl_quc+Bgz4yreip!;yw;NASg32uQ;~`XcO0N0iF`I<7%+&=(w5s
z_-PwGM^N#0f2barQh
ziyJE&mKX*>`!XK)NtbrfQ=m~03ebk7&*L7?xb!Rqp!}PnX6VewBGx^>cjq6Bqu)rN5eOLE$XW1ed+RTk=}U!WelUde*7gOMAvdMB|7-4ypXDf;E+~ixAzN7C2St}}Qm&1Y*69crD{_W6@@G%S%n3+wi
zt*-?4x1#}BHBHkir!yf=WRiGSNLMIcWJ-0Usj9K2f$b2WQdq9AnWQa4(mnwj(La60
zeB%N6eFCH#7*{eg{_X+-J4Vq0aEeHCMK_TSp$y8OwWKl9w4}Zk7IN3(cM>xWyG6x5
zkpb9oPs`7f$#O-ICu!AIE{xRrL=KkX_lppH>xdp*%IP>f2o2E-f=Bd5J1iQ65%V*>
z9gBL4fF`o|Po69Ki36}j&|LM)8?nb;m&%pR!yu@kl>E=
z(PE$&n}D+KOo|~dM7}Eu#1Ie;93oF%%yGm}2!zDE%j%jVi$R5=
zP#g?TgeB}IF~SvxFlD8HSeh$q>Y9#1L>uw0OK4(I;)-!%yr;pL
z0ZXD-86Oa(Vv-{!8W%2U7sl5wgKJ#VRA1+c$)e1V{G>`)33|}@!4TnN#8FHRQ<)sb
zCy(5L9H6wsbZ$3;^;MT-Ui}Ny24V_ffYb3LLpOU%${jDwb2z#ET2=G5YLE!U#2q0@+iw)v4U&T
zAqQ5L)Yiu8Sgeaxu2{{L-KyYOHpcrk`NXMM*~}SpkDfW>=+c?9%1X;2d|)EFeltLG
z{i2%YF}$f~@N}Vl3gMQ~f-F%Gz4UlBO{}v6g{(!*42BGc6Ev~p#Y=kT^lxBKDRb@tbIbmuJp5qg(
zz)i{2vPsjYl}?|4&?^*E7?UyaW_+JTF*x}l%yp}$|Di5c(Nzw
zSV_pe44w^BN1qMV;2AQ66!sj1l0= |