diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index d4cfdf418..000000000
--- a/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/classes
-target
-src/core/nbactions.xml
-src/wmsservlet/src/main/webapp/WEB-INF/glassfish-web.xml
-/ext
-.settings
-.java-version
-nb-configuration.xml
-.checkstyle
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 1759f946e..000000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,368 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=disabled
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=ignore
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=ignore
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=ignore
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=ignore
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=ignore
-org.eclipse.jdt.core.compiler.source=1.6
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=18
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=100
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=false
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index ba8814909..000000000
--- a/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,110 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=false
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_serial_version_id=true
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_to_enhanced_for_loop=false
-cleanup.correct_indentation=true
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=false
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_blocks=true
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_parentheses_in_expressions=false
-cleanup.use_this_for_non_static_field_access=false
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=false
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup_profile=_shapiro1
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_OM
-formatter_settings_version=12
-org.eclipse.jdt.ui.javadoc=true
-org.eclipse.jdt.ui.text.custom_code_templates=/**\n * @return the ${bare_field_name}\n *//**\n * @param ${param} the ${bare_field_name} to set\n *//**\n * ${tags}\n *//* \n * <copyright>\n * Copyright ${year} BBN Technologies\n * </copyright>\n *//**\n * FIXME\: Enter the description of this type here\n *\n * @author ${user}\n *//**\n * \n *//**\n * ${tags}\n *//* (non-Javadoc)\n * ${see_to_overridden}\n *//**\n * ${tags}\n * ${see_to_target}\n */${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}\n\n\n\n// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();// ${todo} Auto-generated method stub\n${body_statement}${body_statement}\n// ${todo} Auto-generated constructor stubreturn ${field};${field} \= ${param};
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=false
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 87eb1f093..000000000
--- a/AUTHORS
+++ /dev/null
@@ -1,141 +0,0 @@
-$Source: /cvs/distapps/openmap/AUTHORS,v $
-$RCSfile: AUTHORS,v $
-$Revision: 1.21 $
-$Date: 2007/07/24 17:55:58 $
-$Author: dietrick $
-
-People and organizations that have contributed to OpenMap
----------------------------------------------------------
-
-OpenMap(tm)
- The OpenMap group at BBN Technologies mailto:openmap@bbn.com
- See the file LICENSE, OpenMap is a trademark of BBN Corporation
-
-Icon Collection
- Dean Jones mailto:dean@gallant.com
- Icons Copyright (C) 1998 by Dean S. Jones
- http://www.gallant.com/icons.htm
-
-RPF Browse
- The MITRE Corporation
- Portions of the RPF Layer are derived with permission from
- software provided by The MITRE Corporation. Those portions
- are licensed by MITRE under one or more agreements to use
- and, where authorized, sublicense the program, and are
- copyright 1993 by The MITRE Corporation.
- "Copyright (c) 1993 The MITRE Corporation. RPF Browse is
- used with the permission of The MITRE Corporation."
-
-Erhard "ESchemainda"
- Provided code fixing the SunPosition class to account for daylight
- savings time correctly.
-
-Alexander Sokolov
- Provided code fixing the DTEDFrameUtil class to correctly create the
- DTED frame names for all latitudes and longitudes.
-
-Joe Warzecha
- Provided changes to BufferedMapBean.java to speed up
- refresh and fixed a NullPointerException when its used in a
- JInternalFrame.
-
-Dan Schmitt (dan@computer.org)
- of the Ranching Systems Group (http://cnrit.tamu.edu/rsg/) provided
- the nexrad package, which displays nexrad rain data. He wrote the
- LabelLayer, and subclassed the DateLayer to it. He also wrote the mapIt
- example, which starts up the ImageServer to create an image.
-
-Michael Los
- Provided the AbstractHandlerLocation idea, code and prodding. Also
- submitted changes to the quadtree to make it serializable.
-
-Willie Macris
- Provided a update which greatly lessoned the memory requirements of
- the RpfCacheHandler, and helped out with the garbage collection.
-
-Ringo Wathelet (DSTO in Australia)
- Provided the DistanceMouseMode.
-
-Paul Tomblin
- Provided a fix for the quadtree rectangle test for bounds checking.
-
-David Gillespie (formerly from General Dynamics)
- Provided fixes for a memory leak in the DTEDLayer and DTEDFrameCache.
-
-Colin Mummery
- Ported the code from Chuck Gantz (chuck.gantz@globalstar.com) to
-create the UTMPoint class, which translates UTM coordinates to decimal
-degree lat/lons. Also created the DMSLatLonPoint, which represents
-lat/lons in degrees, minutes, and seconds. Also contributed the mif
-package that reads MIF files.
-
-Doug Van Auken
- Provided a complete package that reads and writes ESRI Shape files (.shp, .ssx, and .dbf).
-
-Karl Stuempfle and Lonnie Goad working for OptiMetrics, Inc
- Provided the code to convert OMGraphicList graphics to ESRI Shape files.
- Provided EsriPlugIn GUI/selection modifications.
-
-Scott Nevin
- Added code to the MIFLayer to allow to read more graphic types.
-
-Oliver Hinds
- Added code to provide a preview panel in OMColorChooser, that lets you see what the color will look like with the current transparency setting.
-
-Eliot Lebsack
- Provided a couple of new classes:
-com.bbn.openmap.layer.shape.ShapeFileCrop, can create a new Shape file
-with shapes from a certain area of another Shape file, and
-com.bbn.openmap.gui.SaveAsVirtualImageMenuItem, which lets you set the
-size of an image to create from the current map.
-
-Bart J. Geraci
- Provided an update to the OMArrowHead, greatly improving the rendering/positioning of them.
-
-Thomas Paricaud
- Provided the E00 Layer package, enabling the display of .e00 files.
-
-Eric Lepicier
- Provided OMSpline classes and support for editing and decorating them.
-
-Bart Jourquin
- Provided the MapBeanPrinter.
-
-David J. Ward
- Provided the ScaleDisplayLayer.
-
-Uwe Baier
- Provided the com.bbn.openmap.layer.mysql package.
-
-Simon Bowen
- Added code to the MIFLayer package to speed up OMGraphicCreation,
- and to handle scale filtering. Added support for TEXT and POINT
- primatives.
-
-Dan Bitts
- Provided the EditableOMScalingRaster classes.
-
-Land Software Engineering Centre for DND Canada
- Provided extensive review and fixes for the MGRS Conversion algorithm.
-
-Sebastien Rosset of Cougaar Software
- Provided several patchs to improve the roads package, add arrow support for OMPoly, J3D API updates.
-
-Tore Halset
- Provided the WMS layer and servlet code and various improvements to support those additions, and continues to
- provide valuable support to these packages.
-
-Todd Webb of L-3 Communications Titan Corporation
- Provided updates to the SwingWorker, OMGraphicHandlerLayer and ProjectionSupport that greatly increased
- the thread safety and interruptions due to rapid Projection changes.
-
-Carsten Madsen
- Has provided many updates, updates and suggestions over the past years as a long-time user and supporter.
-
---------------------------------------
-
-Thank you!
-
-If we've left you off this list - Sorry! Let us know - it's important
-that we give credit where it's due. We really appreciate that people
-take the time to submit code to us.
diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
index a95faa026..000000000
--- a/CHANGELOG
+++ /dev/null
@@ -1,4913 +0,0 @@
-2021-07-01 Donald Dietrick
-
- * Tagged OpenMap 6.0 - As you can see, 5 years worth of
- significant modifications and architecture changes.
-
- * The project has been updated to be a maven project. You can
- still use ant, but things go a lot smoother if you use Maven.
-
- * The directory class paths have been reorganized, significantly.
- Classes have been moved. An IDE like NetBeans or Eclipse will
- greatly assist you in fixing import statements if your project
- depended on a previous version of OpenMap.
-
- * PlugIns have been removed. They have been replaced with Layer
- classes that extend OMGraphicHandlerLayer. Plugins were removed
- because they inserted a layer of unnecessary complexity to a
- layer.
-
-2016-12-09 Don Dietrick
-
- * Tagged OpenMap 5.1.15
-
- * MapBean internal listener support managers are final and
- never get set to null, fixing a cleanup problem if listeners
- try to disengage themselves from the MapBean after dispose()
- has been called.
-
- * EditableOMPoly grab points now in synchronized list to
- handle rapid clicks and repaints.
-
- * Updated MapTileLayer to have a property where the local file
- cache can be saved or destroyed after use "saveCache".
-
- * BufferedImageHelper fixed issue where images weren't getting
- reloaded from the file system, a cached version of the image was
- being used instead.
-
- * MapTileCoordinateTransform has settable min/max zoom levels.
-
-2016-08-05 Don Dietrick
-
- * Tagged OpenMap 5.1.14
-
- * MapTileLayer can be used in LayerAddPanel.
-
- * RPF modifications. Changed RpfProductInfo to be an enum instead
- of a class, moved all defining information to it instead of being
- listed in the RpfConstants class. Overhauled the RpfCoverage tool
- used by RpfLayer, simplified it and the RpfCoverageManager.
- Updated RpfFrameProvider to use List instead of Vector. Udpated
- classes to use doubles instead of floats for coordinates.
-
- * Modified BasicMapPanel startup order to change when startup
- projection settings are read and set on MapBean.
-
- * Update StandardMapMouseInterpreter to better handle events over
- geometries. It also checks to see if the MouseEvent has been
- consumed during mouseOver calls.
-
- * EsriGraphicList can return the EsriGraphic that has a certain
- attribute in a specified column.
-
- * Removed shadow x and y and reference from ShapeLayer.
-
- * Modified OMScalingRaster to check h/w before trying to create
- image warp object.
-
- * Added OMShape.PROJECTED class to represent shapes that are
- defined in pixel space. Generation does nothing, rendering still
- works.
-
- * Modified WebImagePlugin to warp images to match current OpenMap
- projection. Also modified to make two separate queries when
- crossing the dateline.
-
- * Added method in ProjMath to add distance between points in an
- array of coordinates. OMDistance now uses this and the new
- LineCoordinateGenerator class. LineCoordinateGenerator class will
- create interpolated coordinates between two points, for great
- circle or rhumb lines.
-
- * Updated RangeRingsMouseMode to take units property.
-
- * Modified NatCubicSpline to have an extended CLOSED inner class.
- You create one or the other from static class methods. OMSpline
- updated to use new design, and one is only created when it is
- needed.
-
- * Added new app parts to OpenMapAppPartCollection, and created a
- new standard OMGraphicHandlerLayer panel that can modify layer
- transparency, bring up properties panel, and call doPrepare() on a
- layer.
-
- * Modified methods in ColorFactory to handle 3 character color
- definitions, and to return default value passed in if a
- NumberFormatException is thrown.
-
- * Added VPFCoverageTrimmer, which will remove select tiles from
- the dataset based on their location.
-
- * Changed Length class to enum. Updated other classes to use
- getValues() when needed.
-
- * Modifcations to mapTile package. StandardMapTileFactory has an
- overridable method to create desired file paths. Useful when
- creating a factory with a unique naming convention for
- tiles. Added TileGrabber, which will grab tiles from a server for
- off-line use.
-
- * Added ALMOST_CLEAR to OMColor, to help with rendering some
- OMGraphics against transparent backgrounds.
-
- * Modified classes to not use
- OMGraphic.getAppObject()/setAppObject() methods, replaced
- explicitly setting the OMGraphic.APP_OBJECT parameter in OMGraphic
- attributes.
-
- * Modified files for javadoc cleanup, removing problem characters, etc.
-
- * Added new com.bbn.openmap.omGraphics.rule package, which is
- taking the Rule objects from the
- com.bbn.openmap.dataAccess.shp.DbfHandler and making them more
- general. The DbfHandler Rules were modified to extend classes
- from this package.
-
-2015-12-17 Don Dietrick
-
- * Tagged OpenMap 5.1.13
-
- * Removed license language from several files that had been
- inadvertently added due to IDE settings.
-
-2015-09-01 Don Dietrick
-
- * Merged fix to EsriPolylineList to return proper type
-
-2015-08-07 Don Dietrick
-
- * Tagged OpenMap 5.1.12
-
- * Added the scaleOverCoverage property to the RpfLayer, and
- modifying the RpfTocHandler to use it when determining the best
- TOC entry for the current map query. It's true by default, but
- when used for tiles (wmsservlet), the RpfLayer performs
- better (fills in some empty tiles) with data it may have for
- different scales.
-
- * Updated WMSPlugIn query to use correct CRS parameter for v1.3
- queries.
-
-2015-07-20 Don Dietrick
-
- * Tagged OpenMap 5.1.11
-
- * Added flag (defaulting to true) to RpfTocHandler to tell it to
- ignore zones of entries when evaluating coverage for projection.
- This fix allows the layer to avoid choosing only entries that
- match the projection zone, even though other options would provide
- better coverage. Not a problem since subframes are scaled and
- warped as necessary to match projection. This fixes the annoying
- flipping coverage problem when panning N/S and crossing zone
- boundaries, when you are zoomed out past the ideal scale for a
- particular chart type.
-
-2015-03-12 Don Dietrick
-
- * Added bug fixes, including equalty check to avoid infinite loop
- in EmbeddedScaleDisplayPanel, Moving to local variable in
- OMPoly.generate for thread safety, updating WMSPlugIn to handle
- WMS 1.3 requests. Updated OMRaster.computePixels length check.
-
-2015-02-06 Don Dietrick
-
- * Tagged OpenMap 5.1.10
-
-2015-01-22 Don Dietrick
-
- * Updated ProjectionFactory to use getProjClassForName instead of
- trying to make a class from a general string. This way, pretty
- names can be used in the properties to set the default projection
- type of the app. Updated to Logger.
-
-2015-01-21 Don Dietrick
-
- * Synchronization updates from Andrew Lloyd for OMGraphicList,
- properly unsynchronizing on methods and synchronizing on
- iterations.
-
-2015-01-07 Don Dietrick
-
- * Updated projections to pan using Rhumb calculations instead of
- GreatCircle calculations, which was causing a slight skew to the
- equator when going east-west.
-
-2014-12-18 Don Dietrick
-
- * Tagged OpenMap 5.1.9
-
- * Fixed the OMScalingRaster, was drawing full-sized image when the
- bounds said it should be totally off the map.
-
-2014-12-15 Don Dietrick
-
- * Tagged OpenMap 5.1.8
-
- * Modified the OMGraphicHandlerLayer threading and locking code.
-
- * Added ImageWarp methods to make it easier to use as a standalone
- object.
-
- * Updated precision for Planet NM constants.
-
- * Updated the MapBean and MapHandler listener handling code.
-
- * Removed the iis directory and WebService. It will no longer be
- maintained or tested.
-
-2014-11-19 Don Dietrick
-
- * Tagged OpenMap 5.1.7
-
- * Updated the MapBean, BufferedMapBean, BufferedLayerMapBean and
- BufferedLayer to handle flashing better, especially with
- background layers. Also fixed a problem in BufferedLayer where it
- was resetting the rotation angle in the projection, causing all
- the icons and labels to rotate with the map instead of staying
- straight up.
-
- * Updated com.bbn.openmap.util.WebBrowser to be an abstract class
- that the InformationDelegator uses to launch web pages. If no
- WebBrowser implementation is specified, the InformationDelegator
- uses the simple MiniBrowser in OpenMap. If the BrowserLauncher2
- jar file is in the classpath the new
- com.bbn.openmap.util.BrowserLauncher2WebBrowser class can be
- specified in the InforamtionDelegator properties to be used for
- displaying websites. Removed the old BrowserLauncher code.
-
- * Updated import statements to remove unused classes.
-
- 2014-10-17 dietrick
-
- * Tagged OpenMap 5.1.6
-
- * Modified Layer, BufferedLayer, BufferedLayerMapBean and MapBean
- to eliminate the flashing effect caused when faster-responding
- layers were paired with slower-responding layers, and the map
- background would be seen briefly. Now, when the
- BufferedLayerMapBean is used, its BufferedLayer is consulted to
- make sure all 'background' layers are ready before repaint()
- requests are forwarded to the AWT mechanism. Layers are ready
- when repaint() is called on them.
-
-2014-10-16 dietrick
-
- * Tagged OpenMap 5.1.5
-
- * Removed sinh from MoreMath, the standard Math function should be
- used instead. Updated Mercator to use it. Updated
- OMGraphicHandlerLayer threading model to handle workerComplete()
- better. There were situations where a canceled worker could
- result in two or more more threads locking up on prepare().
- OMList updated so that processAllGraphics is true by default, was
- causing an extra loop through graphics to check visibility for
- sublists. Updated iterator methods to iterate over shallow copy
- of graphics.
-
- * Added check in OMWarpingImage.render() to check isRenderable().
-
-2014-09-18 dietrick
-
- * Tagged OpenMap 5.1.4
-
- * Updated OpenMapFrame to use Height, Width properties defined the
- same way as in the Environment class. The OpenMapFrame no longer
- looks for a PropertyHandler in the MapHandler, the OpenMap class
- will provide the properties to it right after it's created. The
- OpenMapFrame now consistently follows the height/width settings,
- and the openmap.properties Height/Width properties have proper
- capitalization.
-
- The PropertyHandler.Builder class has a build method, which is now
- used by updated Main and OpenMap classes. OpenMap and Main now
- have Logger member variables, moving away from Debug.
-
- * Updated OMGraphicAdapter to handle TexturePaint masks property
- during Serialization. The SerializableTexturePaint was added to
- help with this.
-
- * Modified OMScalingRaster so local handles to clipRect are used
- for positioning, to help with multithreaded environment. The old
- way was causing NPE to appear under certain conditions. Local
- handles were also implemented in the NavMouseModes for the same
- reason.
-
- * Updated BLMapBean has been updated to use an almost entirely
- transparent background so that semi-transparent layers will render
- property. Previously, semi-transparent layers would not appear.
-
- * Updated RPF catalog with entries from latest version of specification.
-
-2014-07-28 dietrick
-
- * Tagged OpenMap 5.1.3
-
-2014-07-25 dietrick
-
- * Modified OMRasterObject/OMScalingRaster/OMScalingIcon image
- handling. The projected image is no longer held in memory.
- Instead, the transform, created in generate(), is saved and
- applied when rendering. OMScalingIcon figures out when the image
- doesn't need to be scaled and just draws it in that case.
-
- * Modified BufferedMapBean, BufferedLayer and MapBean, adjusting
- the image buffers to be cleaned and reused when the size doesn't
- change.
-
- * Some layers have been tweaked - OMGraphicHandlerLayer will print
- out an information message if memory exceptions occur,
- SimpleAnimationLayer moves the sprites a bit more.
-
-2014-07-07 dietrick
-
- * Tagged OpenMap 5.1.2
-
- * AbstractProjectionChangePolicy.java change recent modifications
- so that if a layer's previous and current OMGraphicList are null,
- repaint isn't called on the layer. Previously, empty
- OMGraphicLists prevented repaint from being called too, and that
- has bad side-effects.
-
-2014-06-18 dietrick
-
- * Tagged OpenMap 5.1.1
-
- * Made some memory usage improvements to the MapBean rotation
- components, the rotated image buffer is reused under most
- conditions. Added more cleanup to BufferedImageRenderPolicy.
-
- * Added comments/README to the WMS servlet components.
-
- * Modified the SpatialIndex to use a separate ArrayList for entry
- traversal when responding to a projection change.
-
-2014-05-14 dietrick
-
- * Tagged OpenMap 5.1.0 - Since the API signatures have changed for
- some components, the minor version number is being
- increased. Details following.
-
- * Updated the MapBean (and subclasses) to handle rotation better.
- When a rotation angle is set on the MapBean, it starts to use a
- RotationHelper (inner class) to create a new image buffer for a
- projection large enough to cover the corners of the map. The
- RotationHelper handles the rotated map. The paintChildren()
- method has been updated to only render layers. Rendering of the
- PaintListeners and Border are handled by separate methods called
- from the paint() method. To get the map to render fully when
- rotated, the clip area is disabled when the map is rotated.
-
- The MapBean has new methods to use when working with rotation.
- The MapBean inverse method gives you map coordinates taking into
- account rotation. The getRotatedProjection provides the
- projection being sent to the layers at any given time, while
- getProjection always provides the original projection. The best
- place to see how these methods are used is to check out the
- listenerPaint methods in the MouseModes.
-
- OMText and OMScalingRaster OMGraphics pay attention to the
- OMGraphicConstants.NO_ROTATE attribute. If that attribute is set,
- they will always appear at their rotated angle relative to the
- MapBean boundaries. OMTextLabelers always have that attribute
- set, so they will automatically correct for rotation.
-
- * Updated Projections to have a rotationAngle member variable.
- This member variable is only present to pass the setting from the
- MapBean on to OMGraphics, in case they want to modify themselves
- with regard to rotation. Projection objects themselves don't use
- this member variable. The panning method in Projections was also
- fixed. There was an issue with the pan command for directions
- other than the 8 pre-defined directions. Now panning works for
- all directions, and when the map is rotated.
-
- * Added AbstractProjectionChangePolicy to handle common projection
- change policy functionality. IMPORTANT: The OMGraphicHandlerLayer
- SwingWorker has been modified so it doesn't automatically call
- repaint on the layer when the thread is complete. The
- AbstractProjectionChangePolicy handles calling repaint() on the
- layer, after determining the layer has something to paint. If a
- layer (before a projection change had no OMGraphics to paint, and
- after the projection change still doesn't have OMGraphics to
- paint) isn't contributing to the map, repaint() will not be called
- on it. You can override this behavior by setting a different
- ProjectionChange policy on the layer.
-
- * Updated the OMGraphicAdapter (base class for all OMGraphics)
- setLabelLocation method signatures so the projection is also
- passed in. This allows OMTextLabelers to figure out how to not be
- affected by map rotation. The old method signatures have been
- deprecated.
-
- * Updated the MouseModes to handle rotation. They have been
- modified to be PaintListeners and paint directly on top of the map
- instead of using XOR drawing techniques. Their code has been
- refactored and their API signatures have changed slightly. TODO:
- There is a known issue with the PanMouseMode map rendering when
- the map is rotated. The current work-around is to have the
- AzimuithPanner enabled for all projections when the map is
- rotated. I've also seen a issue with the
- NavMouseModes/DistanceMouseMode rendering when the 1) map is
- rotated 2) on a Mac and 3) the ToolBar is visible. The rendered
- graphics are offset lower than they should be (height of ToolBar).
-
- * Modified the PaintListener interface so the source object is
- also provided in the listenerPaint method signature.
-
- * Updated EditableOMPoly setGrabPoints methods to be safer when
- dealing with poly coords and projections.
-
-2014-03-13 dietrick
-
- * Tagged OpenMap 5.0.4
-
-2014-03-12 dietrick
-
- * Added a GUI button to the MapTileLayer to delete the tile cache
- on disk for those layers using a ServerMapTileFactory. Disabled
- for layers solely relying on a single map tile directory accessed
- locally.
-
- * Improved the property handling of the ommaptileservlet so that
- the web.xml specifies a property directory instead of the
- properties files themselves. Moving a new properties file into
- the directory (which specifies a new tile set) and reloading the
- servlet will load the new tileset or any changes. Update the
- MapTileMaker to implement EmptyTileHandler, which allows
- ommaptileservlet to generate tiles on the fly when they are
- needed, caching them for later requests.
-
- * Fix for Geo.azimuth(Geo) method, which provided incorrect
- answsers moving away from the equator. Replaced with the
- GreatCircle.sphericalAzimuth algorithm while taking advantage of
- Geo's ellipsoid model.
-
- * The com.bbn.openmap.dataAccess.shape package has some bug fixes,
- including some addition null pointer exception checks, a fix for
- off-by-one problem with extents, polyline/polygon M types being
- incorrectly sent to the Z methods.
-
- * WholeWorldTileHandler has improved source directory handling.
-
-2013-11-25 dietrick
-
- * Tagged OpenMap 5.0.3
-
- * Added delete() method to FileUtils.
-
-2013-11-24 dietrick
-
- * OMGraphic interface has been updated with isRenderable, draw and
- fill methods that take a Shape object as an argument. The old
- implementation methods are no longer synchronized. For
- BasicGeometry, the getShape() and setShape() methods are
- synchronized and all instances of direct access to the shape
- object have been replaced with calls to these methods. All render
- methods in OMGraphic implementations have been updated to use one
- getShape() call, and then use that handle to a shape for checks
- and drawing. This greatly improves rendering performance. The
- OMList implementations that build a single shape from parts have
- been updated to have more efficient algorithms for building
- shapes.
-
- * Updated the SimpleAnimationLayer for more control over the
- sprites. You can set the number of sprites for a batch add, the
- timer was changed to a java.util.Timer that uses a Task for
- updating the sprites. The GUI was updated to use GridBagLayout
- and has some new controls. Deleted the
- com.bbn.openmap.graphicLoader.AnimationTester class, it was
- outdated.
-
- * Updated LayersMenu to use an object lock for the layer with the
- menu entries.
-
-2013-11-12 dietrick
-
- * Tagged OpenMap 5.0.2
-
- * Created the MapTileRequester interface, which lets the
- MapTileFactory ask it whether it should keep working. If
- provided, the StandardMapTileFactory will use the requester as
- tiles are fetched to determine if the tile group fetch is still
- relevant. The MapTileRequester interface replaces the
- MapTileFactory repaintCallback member variable.
-
- * Reverted the Geo.intersect method to use the former algorithm.
- The newer algorithm was faulty and broke code.
-
- * Updated MapTileLayer to implement the mapTile MapTileRequestor
- interface, which also uses the new wrapItUp flag discussed below.
- The repaintCallback repaint() calls made in the MapTileFactory
- were moved back into this layer, using the MapTileRequester
- notifications.
-
- * Updated layer classes in the com.bbn.openmap.layer.test
- package. The GeoIntersectionLayer was reformatted, and the
- GeoTestLayer was restuctured to use more regular data.
-
- * Added a boolean flag, wrapItUp, to the OMGraphicHandlerLayer.
- Means something slightly different than interruptable. WrapItUp
- gets set to true if another SwingWorker is queued to run, due to
- another doPrepare() call or projection change. If interruptable
- is set to true, the current SwingWorker is killed, and the state
- of some things might be in flux. If a layer is marked as
- uninterruptable to avoid this state of flux (think loading image
- files), the wrapItUp flag lets the layer decide when to stop
- working if it wishes.
-
- * Added check to OMScalingRaster for lastProjection, so a clone of
- the projection is only made if it changes.
-
- * Added threading to FileUtils chooser methods, so if they aren't
- called in the event thread they will still appear.
-
-2013-08-19 dietrick
-
- * Added the GoogleMapTileFactory as an example of how to extend
- the MapTileFactory to contact different services. Added the
- ability for MapTileLayer to display map data attribution.
-
-2013-07-27 dietrick
-
- * Moved default LINETYPE for shape files from GREAT_CIRLCE to
- STRAIGHT. That should speed things up a bit.
-
- * Added com.bbn.openmap.layer.learn.SimpleAnimationLayer, a little
- tutorial example of doing animation on OpenMap. Borrows a lot for
- the AnimationTester, which was also refreshed.
-
- * Added OMGraphicHandler to the interfaces that
- OMGraphicHandlerLayer implements. It used to implement that
- interface, and should have been, obviously.
-
- * Fixed off-by-one errors in the AreaHandler.
-
-2013-07-03 dietrick
-
- * Fixed some JavaDoc errors, added update to Gnomonic Projection.
-
-2013-07-03 dietrick
-
- * Released OpenMap 5.0.1
-
-2013-06-19 dietrick
-
- * Added NPE checks to BufferedImageRenderPolicy and OMScalingRaster.
-
- * Added width acessors to OMText. Added Executor methods to
- TaskService to allow customization and control for Layer
- threading.
-
-2013-05-20 dietrick
-
- * Updates to OMScalingRaster to gracefully handle memory
- exceptions if the scaled image is too big. Updated javadocs and
- java comments in these classes, added Logger for ScaleFilterLayer.
-
- * Refactored the LayerHandler so it uses a List internally
- to manage Layers. Created the LayerConfigurationListener interface
- and LayerConfigurationListenerSupport object, both of which are
- used by the LayerHandler to pre-notify components when the active
- layers for the application are about to change. The
- LayerConfigurationListener has the opportunity to make
- modifications to the layer configuration, or change visibility of
- other layers, etc. Added the BasicLayerConfigurationListener, an
- example component that changes the projection of the MapBean to
- CADRG if an RpfLayer is active.
-
-2013-04-13 dietrick
-
- * Cleaned up debugging. Updated LOS code API for better control.
- Updated WMSPlugIn setProperties so the current values aren't
- zeroed out of they aren't set.
-
-2013-04-23 dietrick
-
- * Moved the smarts for zoom levels out of the MapTileMaker class
- and put them in the MapTileCoordinateTransform classes. Added
- AbstractMapTileCoordinateTransform class to merge similar methods
- and functionality for existing mtct classes. Updated other
- classes to call mtc functions instead of MapTileMaker static
- functions.
-
-2013-04-16 dietrick
-
- * Added RelayMapTileSet for MapTileServlet, which fetches tiles
- from a remote server and caches them locally. Updated
- TerrainLayer to eliminate some verbose error messages.
-
- * Added Kevin's (kpfarr) fix to RpfTocHandler for merging entry
- coverages properly.
-
-2013-03-02 dietrick
-
- * Added the ClckOrDrgUndefinedState to the omGraphics.editable
- package, which is now the super class of LineUndefinedState,
- RectUndefinedState and CircleUndefined state. Lines, Rects and
- Circles can now be defined with a click and mouse move to next
- point, or with a press and drag to the next point, just like
- polys.
-
-2013-03-01 dietrick
-
- * Fixed the ImageTile outline behavior on projection changes.
- Fixed bug in GeoTIFF code introduced via a FindBugs modification,
- and tweaked the ImageTileLayer GUI to handle list selection
- better.
-
-2013-02-28 dietrick
-
- * Added some data/vpf vmaplv0 configuration files with more
- instructions on how to use the VPFFeatureLayer.
-
- * Fixed the VPF attribute fetching with proper indexes. The VPF
- package api changed in a deep section, to allow the proper feature
- id to be passed to the place where it's needed to fetch
- attributes.
-
- * Added intersets method to DataBounds. Can be tested with new
- BoundsTestLayer in layer.test package.
-
- * Updated SwingWorker and PooledSwingWorker to use FutureTask
- objects, reducing the number of threads that are created. Updated
- OMGraphicHandlerLayer.workerComplete to take a ISwingWorker in its
- signature.
-
- * Modified DemoLayer to have separate OMGraphicList for storage,
- loading aux OMGraphicList for painting.
-
-2013-02-27 dietrick
-
- * Made a bunch of adjustments as recommended by FindBug, regarding
- null pointer checks, equality checks, stuff like that.
-
- * Added AzimuthPanner abstract class with Standard and Shapefile
- subclasses. This class is used by the PanMouseMode and
- OMMouseMode for panning when the projection is Azimuthal. The
- modes used to translate the map image, the new class renders
- things instead. The AzimuthPanner.Standard is used if a shapefile
- for the mousemode is not defined.
-
- * Modified how the DrawingToolLayer tool buttons react to
- toggling. Toggling the tool button will deactivate the drawing
- tool, returning mouse control to the application.
-
- * Updated the mapTile package, allowing the frames to be defined
- by a regex that fits how to ask for tiles from a server or
- directory location. Locations can include {x}{y}{z} where x,y,z
- are x and y tile coordinates at z zoom level. This regex can be
- defined as the rootDir of a MapTileLayer.
-
- * Fixed the BeanBox example, since it was moved. Updated the
- manifest.txt to remove outdated beans.
-
-2012-01-27 dietrick
-
- * Added the maptileservlet package. This servlet package provide
- map tiles and can be used with the MapTileLayer using the
- ServerMapTileFactory, and can also be easily be used with Leaflet.
-
- * Misc updates to remove extra semi-colons and fixed some
- compiling warnings.
-
- * Modified OMArc to take a Point2D object instead of a
- LatLonPoint. This allows it to be used with the Cartesian
- projection.
-
- * Modified WholeWorldTileHandler to have more control over how it
- creates jar files holding map tiles. Can now create specific
- subjars, control whether the master jar gets created, etc.
-
- * Added TileMillMapTileFactory to
- com.bbn.openmap.dataAccess.mapTile package, and also added the
- sqlite jar to the ext directory. This MapTileFactory can read the
- output tile database files created using the TileMill application.
-
- * Tweaked the API, got rid of new Grey*TileFactory classes in the
- com.bbn.openmap.dataAccess.mapTile package, created new
- TileImagePreparer and added Grey and standard versions of that
- instead. Now the StandardMapTileFactory and ServerMapTileFactory
- can have different classes handing images, and those classes can
- be swapped at runtime.
-
- * Fixed build problems when ext directory was missing.
-
-2011-12-23 Knox Rogers
-
- * OpenMap 5.0 released
-
-2011-12-06 dietrick
-
- This entry is a summary of the changes made to OpenMap between the
- 4.6.5 release and the 5.0 release. The API has changed
- significantly for the Projection classes, and that's the main
- reason for the major version change.
-
- The Projection classes used to translate decimal degree lat/lon
- point objects to java.awt.Point x/y pixel coordinates. The new
- Projection classes make translations using Point2D objects.
- LatLonPoint has been moved inside the com.bbn.openmap.proj.coords
- package, and now extends Point2D. The pixel locations returned
- from the Projection are also Point2D objects. If you've written
- any code that calls Projection methods, you may have to modify
- that code to work with the changes.
-
- Throughout the code, there have been changes to incorporate
- Generic types, utilizing StringBuilder methods, moving from the
- com.bbn.openmap.util.Debug class to the Java logging mechanism,
- implementing equals() and hashcode() methods.
-
- OM5 requires the Java 5 runtime.
-
- * com.bbn.openmap
-
- Updated BufferedMapBean to handle panning better, shifting current
- map image appropriately until the layers react to the projection
- change.
-
- The Layer class has been updated to have a GeoCoordTransformation
- member variable, for data that isn't stored in decimal degree
- lat/lon coordinates.
-
- MapBean updated to have a handle on its ProjectionFactory.
-
- Update the MapHandler class with generified methods.
-
- Added the notion of isolation to the MapHandlerChild, so it will
- ignore BeanContext events it receives from other BeanContext
- objects that it doesn't know about.
-
- Updated PropertyHandler so it's not tied to the openmap.properties file name.
-
- * com.bbn.openmap.app
-
- Added a couple of new application-type classes. The Main
- application represents the new OpenMap app look, and it utilizes
- the new OverlayMapPanel.
-
- The TimeFrameApp uses the HotwashPanel and some of the new time
- management components.
-
- * com.bbn.openmap.app.example
-
- Moved SimpleMap and SimpleMap2 here.
-
- * com.bbn.openmap.dataAccess.cgm
-
- Added components that all more sections of the CGM files to be
- read, like constants, colormodel, colortable, marker
- representation and marker size.
-
- * com.bbn.openmap.dataAccess.mapTile
-
- This new package deals with map image tiles, the kind that are
- used in OpenStreetMap/Google/GDAL tiles, etc.
-
- The MapTileFactory classes read tile sets for the MapTileLayer and
- creates images for display on the map.
-
- The StandardMapTileFactory reads tiles stored locally.
-
- The ServerMapTileFactory can fetch tiles from a URL (where tiles
- are stored under a root location plus z/x/y.png type location).
-
- The ServerMapTileFactory will store the images it fetches locally
- to reduce the load on the server. The
- GreyStandard/ServerMapTileFactory classes convert the images to
- greyscale.
-
- The EmptyTileHandler classes tell the factory classes how to
- handle missing tiles, whether to do nothing, create new tiles or
- use a default tile to fill the area in.
-
- The OpenStreetMap tiles are stored a little differently than tiles
- that meet the TileMappingService configuration (like the tiles
- GDAL creates). You can use the OSMMapTileCoordinateTransform for
- OpenMap/OpenStreetMap tile sets, and the
- TMSMapTileCoordinateTransform for GDAL image tile sets.
-
- The MapTileMaker can create map tile sets from OpenMap layers.
- The MapTileMakerComponent can be added to the OpenMap application
- to visualy define and launch MapTileMaker tile creation.
-
- * com.bbn.openmap.dataAccess.shape
-
- Added a DbfTableModelFactory class that helps create DbfTableModel
- for an EsriGraphicList when the data is read in.
-
- Added ShapeGeoIndex, an ExtentIndex implementation created from a
- shape file. This ExtentIndex can be used with the uses the
- com.bbn.openmap.geo package components to discover intersections
- with other extents (points, paths, regions, etc).
-
- * com.bbn.openmap.event
-
- Added two new sets of event objects. Added OMEvent class, which
- is a object representing something that happens at a certain time.
- The OMEvent class is accompanied by the OMEventComparator and
- OMEventHandler, and some other components to aid in selection and
- filtering of OMEvents. These component tie into the new
- com.bbn.openmap.time components and TemporalOMGraphics.
-
- Added Undo classes (UndoEvent, UndoStack, UndoStackSupport and
- UndoStackTrigger). These components are currently used by the
- drawing tool undo/redo capability, but can be used by any
- component that wants to save and restore state.
-
- Added the OMMouseMode, which is a combination of the PanMouseMode
- and SelectionMouseMode. The behavior is similar to
- standard/expected web map mouse behavior.
-
- * com.bbn.openmap.examples
-
- Removed this package. The beanbox example is now under
- com.bbn.openmap.layer.beanbox. hello and crew packages were
- obsolete, and the simple applications have been moved up to app.
-
- * com.bbn.openmap.gui
-
- Added the OverlayMapPanel, an extension of BasicMapPanel that
- knows how to layer other components with the map so they appear as
- if they are floating on it. The EmbeddedNavPanel and
- EmbeddedScaleDisplayPanel are two components the OverlayMapPanel
- uses. The DistQuickTool is used by the panel to quickly measure
- distances on the map.
-
- The HotwashPanel is a new BasicMapPanel that has sliders built
- into it. It was created to house the new time controls and event
- lists on the bottom and to the left.
-
- The event subpackage contains components that manage and display
- OMTime events.
-
- * com.bbn.openmap.image.wms incorporated many changes from Tore
- Haslet that added compatibility with WMS 1.3, including
- capabilities queries and projection translations.
-
- * com.bbn.openmap.layer.event
-
- Added the EventLayer and supporting components. The EventLayer
- handles TemporalOMGraphics and uses the new com.bbn.openmap.time
- management components.
-
- * com.bbn.openmap.layer.imageTile
-
- Added the MapTileLayer. The layer uses the new
- com.bbn.openmap.dataAccess.mapTile components to render
- OpenStreetMap/GDAL/Google map tiles.
-
- * com.bbn.openmap.layer
-
- Updated OMGraphicHandlerLayer to utilize the new ISwingWorker classes.
-
- * com.bbn.openmap.layer.policy
-
- Added NullProjectionChangePolicy that does nothing when the
- projection changes, and added the PanningImageRenderPolicy, to be
- used by layers that want to redraw what they have when the
- projection changes. A buffered image is reprojected and reused
- until the layer can update for the new projection.
-
- * com.bbn.openmap.layer.util
-
- Added DataPathWanderer class, extending Wanderer, that finds valid
- data paths for a data user. Base class for creating a data auto-finder.
-
- * com.bbn.openmap.layer.vpf
-
- Added VPFFeatureLayer and supporting classes. This layer uses
- priorty files and GeoSym information/cgm files to order and render
- features from VPF. New files added to share/data/vpf directory to
- support DNC.
-
- Added VPFFeatureInfoHandler that lets you get attribute
- information for features. Configurable via properties. Can be
- extended to display attribute in different ways. The
- TTFeatureInfoHandler displays attributes in a tooltip.
-
- * com.bbn.openmap.omGraphics
-
- The OMGraphics have been updated to double precision.
-
- OMGraphic is now an interface, with OMGraphicAdapter being the base class.
-
- DrawingAttributes have new transfer methods that make it easier to
- clone and copy settings. Added Builder class to make it easier to
- make it more convenient to create and make settings on a new
- instance.
-
- Added GraphicUndefinedEditState to the editable subpackage, for
- OMGraphics in the process of being defined by the drawing tool.
- It's a state that defines when an OMGraphic is only partially
- defined.
-
- OMGraphicList and OMGeometryList extend OMList, which itself
- implements the List interface. They are now iterable, and use
- Generic Types to define what is held in them.
-
- Added OMWarpingImage, which is a raster OMGraphicClass that warps
- its image to the current OpenMap projection (during generate).
-
- Added the time subpackage, which defines interfaces for OMGraphics
- that change over time. TemporalOMPoint and TemporalOMScalingIcon
- are two implementations of that interface.
-
- Added ImageWarp class to the util subpackage, which does the
- heaving lifting work of the OMWarpingImage.
-
- Added RibbonMaker class to the util subpackage, which creates a
- buffer area around a vector shape.
-
- * com.bbn.openmap.proj
-
- The proj package classes have undergone a significant API change,
- as described in the summary above. For the top-level Proj class
- and Projection interface, the Point references for projected
- locations have been replaced with Point2D objects. The
- LatLonPoint references have been replaced with Point2D references.
- The old projection classes now extend the GeoProj class, and the
- Point2D objects meant to indicate latitude/longitude points are
- LatLonPoints.
-
- There is a Cartesian projection for standard X/Y drawing. You can
- use the OMShape object for drawing things in a Cartiesian
- projection. Other OMGraphics will work too, but the lat/lon
- coordinates are interpreted as x/y coordinates.
-
- Deleted the ProjectionFactoryLoader and the View classes. The
- ProjectionFactory is no longer a singleton, there's a different
- ProjectionFactory for each MapBean, and each MapBean can have a
- different set of Projections it can handle.
-
- * com.bbn.openmap.proj.coords
-
- All of the coordinate point classes and methods have been moved
- here, including LatLonPoint and VHTransform. Updates to GCT
- classes.
-
- LatLonPoint was rewritten to inherit from Point2D, and is modeled
- after that class with Float and Double implementations. Note that
- overridden Point2D methods have (x,y) signatures, while
- LatLonPoint.setLocation(lat, lon) methods have (y, x) signatures.
-
- * com.bbn.openmap.time
-
- Created new time package, moved older time components here just to
- make them more application-friendly. Added components that
- understand the notion of time bounds and managing the notion of a
- point in time.
-
- * com.bbn.openmap.tools.drawing
-
- Updated OMDrawingTool to use UndoStack and triggers to handle edit
- undos and redos.
-
- * com.bbn.openmap.tools.symbology.milStd2525
-
- Added SVGSourceFileReorganizer, a class that takes the
- distribution package from DISA and flattens the files out into a
- target directory, renaming them as needed for the
- SymbolReferenceLibrary.
-
- * com.bbn.openmap.util package
-
- Added AbstractXMLParser class, a base class for XML parsing, wraps
- the DefaultHandler java class.
-
- Added Attributable interface, describing classes that can handle
- an attribute map.
-
- Added ClasspathHacker, which adds jars to classpath at runtime.
-
- Added MGRSCoordInfoFormatter, which formats coordinates into MGRS format.
-
- DataBounds updated to use Point2D objects, add method added.
-
- Added DeepCopyUtil, which handles cloning propery. OMGraphics updated to use it.
-
- FileUtils updated to have new zip writing algorithm, methods.
-
- Added HashCodeUtil to assist in creating proper hash code values.
-
- Added ISwingWorker interface and updated OMGraphicHandlerLayer to
- use it, so other implementions could be used in the layer. Added
- PooledSwingWorker, implementing a reuseable SwingWorker. Added
- TaskService to manage SwingWorkers.
-
- PropUtils added methods to create objects from property
- list (standard openmap.properties paradigm). parseColor method
- returns a Paint object instead of a Color object.
-
- Updated Wanderer class to be able to handle exhaustive and
- non-exhaustive searches.
-
- Moved former com.bbn.openmap.layer.util.http/html/stateMachine
- packages to this util package.
-
-2009-03-26 Don Dietrick
-
- * Refined the DTED packages, removing duplicate classes in
- com.bbn.openmap.layer.dted and having those classes refer to the
- com.bbn.openmap.dataAccess.dted package contents. The
- com.bbn.openmap.layer.dted.DTEDFrame has been changed to
- DTEDSubframedFrame, and now extends the DTEDFrame class in
- dataAccess.dted. The DTEDLayer is the main class in
- com.bbn.openmap.layer.dted, and those classes use the
- DTEDSubframedFrame. The
- com.bbn.openmap.layer.dted.DTEDFrameCacheLayer uses the classes in
- the com.bbn.openmap.dataAccess.dted package. The choice between
- the two is memory usage (when DTED is used by other components it
- can also be used by DTEDFrameCacheLayer) vs
- speed (the DTEDLayer is faster).
-
-2009-03-24 Don Dietrick
-
- * Added com.bbn.openmap.omGraphics.util.ImageWarp, which takes an
- image file and warps it to fit a given projection. Can be created
- with a image path or BufferedImage, takes a DataBounds or
- WorldFile object to specify where the image is, and also takes a
- GeoCoordsTransformation to handle preprojected images. Also added
- the com.bbn.openmap.omGraphic.OMWarpingImage that wraps around an
- ImageWarp object to display the image on the map as an OMGraphic.
-
- * Modified the DataBounds object to provide height and width
- calculations (deltas between max and mix), and can also have an
- internal DataBounds object that serves as hard limits for added
- values. The hard limits override any point values that may be
- added.
-
- * Simplified the OMApplet.html file, with simple APPLET tags.
-
- * Removed com.bbn.openmap.LatLonPoint. The
- com.bbn.openmap.proj.coords.LatLonPoint is the class to use now.
-
- * Fixed problem where the ProjectionSupport thread continued to
- run, preventing garbage collection of the MapPanel and all its
- contents. That thread gets interrupted when the MapBean is
- disposed. Added dispose() methods on MapPanel, MapBean,
- ProjectionSupport, OpenMapFrame that release objects. Dispose
- should be called on the MapHandler, and when OMComponents detect
- they have been removed from the MapHandler in their findAndUndo
- method, they should call dispose() on themselves if they have that
- method.
-
- * The ProjectionFactory is no longer a singleton. A
- ProjectionFactory is expected to be placed in a MapHandler, where
- it will attach itself to the MapBean and can be accessed through
- the MapBean. If a ProjectionFactory is not set and requested from
- the MapBean, the MapBean will create a ProjectionFactory with the
- default set of ProjectionLoaders. The ProjectionFactoryLoader
- class has been removed, and that functionality (creating
- ProjectionLoaders from Properties) has been incorporated into the
- ProjectionFactory. The ProjectionFactory should be created like
- any other component added to the MapHandler, via the properties or
- programmatically added to the MapHandler.
-
-2009-03-14 Don Dietrick
-
- * OpenMap 5.0 released as beta via SVN repository. All further
- changes will apply to version 5.0. OpenMap 5.0 requires Java 5
- (jre 1.5.x).
-
- * The com.bbn.openmap.proj.coords.LatLonPoint has been created
- and it extends java.awt.Point2D. You can instantiate
- LatLonPoint.Double and LatLonPoint.Float classes, just like
- Point2D. Note that the Point2D methods follow the x, y ordering
- of arguments, but that the setLocation() methods of LatLonPoint
- follow the lat, lon ordering. The old LatLonPoint currently
- extends the new LatLonPoint.Float object.
-
- * The Proj/Projection class and interface are now based on
- java.awt.Point2D objects. The GeoProj class extends Projection,
- and Point2D objects in coordinate space are now LatLonPoints as
- allowed with Generics. The Cartesian projection handles projected
- data.
-
- * The OMShape object is added to handle cartesian shapes, taking
- java.awt.Shape objects and managed as an OMGraphic.
-
-2009-03-05 Don Dietrick
-
- * OpenMap 4.6.5 released.
-
-2009-02-27 Don Dietrick
-
- * The CSVTokenizer was updated to properly handle empty fields in
- front and end of lines.
-
- * The projection package was updated with the DatumShiftProjection
- which wraps projections to provide datum shifting. The
- CoordinateReferenceSystem has been updated to use new
- GeoCoordTransformation objects for different projection types.
-
- * For OMGraphics, the EditableOMPoly, OMGraphicList and OMText all
- had minor bug fixes. Polygons are now re-editable after colors
- are modified, OMGraphicLists had selection problems patched, and
- OMText FontSizer setter was fixed.
-
- * MapHandler was modified with an overriding remove method that
- also checks to see if an object being removed was a
- BeanContextMembershipListener. The parent class was adding such
- objects to a special list when they were added, but not removing
- them from that list when they were removed from the context. This
- was causing a memory leak of sorts.
-
- * Added MapBean.dispose() method, which cleans up the projection
- support thread and releases lingering handles on layer objects.
- ProjectionSupport also has dispose() method that is called to
- clean up.
-
- * Layer.setProperties() functionality was broken out to a
- setLayerProperties() method so subclasses could override
- setProperties() and still get to to the superclass functionality
- if desired.
-
- * Updated the ShapeLayer and package. The SpatialIndex no longer
- needs to be defined, it will be found or made next to the shape
- file. The dbf file will automatically be used if found, and the
- DbfFile rule handling was improved. All of the various Shape
- layers in the com.bbn.openmap.layer.shape package were update to
- work using the same EsriGraphicFactory mechanisms.
-
- * BinaryFile modified with improved name handling for
- FileInputReader, separating absolute path and file name queries.
- ByteArrayInputReader added to allow BinaryFile to contain entire
- file in memory.
-
- * WMS package updated to have capabilies query handling, improved
- layer control and new SRS handling. The WMSPlugIn was updated to
- WMS version 1.1.1 and has better query handling.
-
- * Added method to ConvexHull to allow for tolerances when trying
- to determine equal points to reduce the number of unnecessary
- points in the resulting polygon.
-
- * Added the CoordInfoFormatter and CoordInfoFormatHandler to make
- it easier to define how coordinates were displayed in the
- InformationDelegator from CoordMouseModes.
-
- * Updated dbf attribute type handing and handling of null cells.
- Padding with spaces instead of null characters.
-
-2008-02-29 Don Dietrick
-
- * OpenMap 4.6.4 released.
-
-2008-02-27 Don Dietrick
-
- * Updated the PropertyHandler to have its own property prefix. This
- property prefix is used by the PropertyHandler when it looks for a
- properties file, and when it looks inside the properties file for
- application level properties, like the components list, include
- files, and the configuration directory. Where the PropertyHandler
- used to only be able to look for an openmap.properties file that
- contained an openmap.components property, you can now define a
- different prefix for the file and property.
-
- * The com.bbn.openmap.util.propertyEditor.Inspector was updated to
- provide a simple GUI that can be inserted on behalf of a
- PropertyConsumer, without providing window controls, etc. It can
- be used just to provide the widgets for the PropertyConsumer
- adjustments.
-
- The DrawingAttributesPropertyEditor was created as an example of
- creating a property editor widget that can control multiple
- properties in a single GUI widget.
-
- * The com.bbn.openmap.util.cacheHandler package was added,
- allowing for a more generic caching mechanism than was provided by
- the com.bbn.openmap.layer.util.cacheHandler package.
-
- * The GeoCoordTransformation interface was added, providing a
- mechanism that allows transformations from pre-projected
- coordinates into lat/lon space. The
- com.bbn.openmap.dataAccess.shape classes can use the
- GeoCoordTransformation objects in order to display pre-projected
- shape data. Several GCTs have been implemented, including
- LatLonGCT, MercatorGCT, UTMGCT. A CoordinateReferenceSystem
- object also uses the GCTs, and assists the WMS server code in
- handling requests.
-
- The MGRSPoint was updated to handle zone letters correctly,
- instead of defaulting to UTM values.
-
- * UTMProjection added.
-
- * OMGraphic improvements:
-
- - OMEllipses with XY and OFFSET rendertypes were added.
- - OMGraphicHash was added.
- - OMTextLabeler was updated to handle different anchor locations.
- - OMPoint.Image class was added, an OMPoint that uses an Image to
- mark the location. The image does not change size with respect to
- map scale, as the OMScalingIcon does.
- - OMGraphicList findAll() method fixed when inner vague lists were
- used.
- - The EditableOMGraphic GUIs for Text and Range Rings were updated
- to have better persistence across different OMGraphics.
- - The DrawingAttributes GUI, including the color settings, was
- moved into the pop-up menu, replacing all of the buttons. Just
- the stroke button remains, and the colors on that button adjust
- according to the DrawingAttributes settings.
-
- * The DrawingToolLauncher GUI was updated to handle the
- DrawingAttributes GUI changes.
-
- * The VPFConfig class was modified to maintain knowledge of
- current features set on a VPFLayer that it is modifying.
-
- * The RPF Layer code was improved. The RPFCacheHandler was
- modified to reduce the number of bytes utilized in the cache
- tracking mechanism, which greatly decreases memory usage for large
- datasets. The RPFFrameEntry was modified to use fewer bytes for
- file name storage, also saving memory for large datasets.
-
- The RPFLayer was modified to use the OMGraphicHandlerLayer's
- transparency mechanism, replacing the colortable mechanism that
- was in place.
-
- * The Link Protocol has been updated to version 0.5, with a
- greatly reduced transmission footprint by making all of the field
- headers one or two characters long. A cache mechanism was added
- to the protocol and on the client Java code that allows values
- sent previously to be reused for later graphics.
-
- * Added com.bbn.openmap.layer.learn package, to hold layers that
- serve as examples for specific capabilities. BasicLayer and
- InteractionLayer added.
-
- * OMGraphicHandlerLayer has improved SwingWorker threading
- support, including the interruption mechanism and thread locking.
- Transparency can now be set on any OMGraphicHandlerLayer, and
- there is a GUI widget available that can be added to any palette.
-
- * The DrawingToolLayer has improved file support, including
- reading from multiple shape files to reproduce previous savings.
-
- * The DeclutterMatrix has improved access to a java.awt.Graphics
- object that prevents locking during multi-threaded access.
-
- * The com.bbn.openmap.io.FileInputReader handles reopening files
- that have been closed. The BinaryFile and BinaryBufferedFile can
- now read unsigned shorts upon request.
-
- * The com.bbn.openmap.image.wms package adds much better WMS
- support, including handling GetCapabilities requests.
-
- * The com.bbn.openmap.image.ImageScaler class was added, providing
- better image scaling performance in the AbstractImageFormatter and
- OMScalingRasters.
-
- ImageFormatters now provide their content type for web delivery.
-
- The ColorReducer class provides support for color reduction in
- images, and the PNG32ImageFormatter and PNG8ImageFormatter was
- added.
-
- The WMS servlet was updated to handle the new web mapping server
- support code.
-
- * WindowSupport windows no longer shrink when it they are
- repeatedly brought up. This fix affects the OverviewMapHandler,
- LayersPanel, CoordPanel, Layer palettes, etc.
-
- * The CoordPanel was updated to use WindowSupport, replacing the
- CoordDialog and CoordInternalFrame.
-
- * The new GeoArray object was created to improve memory management
- and performance for the com.bbn.openmap.geo package components.
- The ConvexHull and RadialRegion classes were also added to the
- package.
-
- * The ProjectionSupport threading model was improved, adding a
- more robust threading lock mechanism during projection change
- notifications.
-
- * The PanMouseMode image management and projection handling was
- improved.
-
- * The AbstractMouseMode (affecting all mouse modes) has better
- support for defining custom cursors and icons. Support for
- specifying the zoom direction to mouse wheel relationship was
- added.
-
- * The com.bbn.openmap.dataAccess.shape package was updated to add
- support for all Shape types. The EsriGraphicFactory class now
- creates EsriGraphics from files and streams, and both the
- com.bbn.openmap.plugin.esri and com.bbn.openmap.layer.shape
- componets use this com.bbn.openmap.dataAccess.shape package. The
- DbfFile class was created to allow better handling of dbf files,
- providing a way to limit what fields are read out of a file and
- kept in memory. The DbfHandler class was created to manage
- EsriGraphics and their rendering attributes/labels/tooltips/info
- based on the dbf file contents. The DbfHandler class lets you set
- rules for dbf file contents so you can draw map objects different
- based on attribute values. The ShapeLayer was updated to use this
- class.
-
- * iso8211 package had some bug fixes related to the DDFSubfields
- and definitions.
-
- * MapBean was updated to support ProjectionChangeVetoExceptions,
- so that layers or other components can now limit what a projection
- can change to.
-
- * LayerHandler can now have it's own prefix to be used to define
- layers in the properties file. Previously, the LayerHandler
- looked for an 'openmap.layers' property for its layer list. While
- 'openmap.layers' still works, it now looks for a
- '.layers' property first, where is the
- keyword used to define the LayerHandler object instance in the
- 'openmap.components' property, or whatever Property prefix the
- LayerHandler is given in the setProperties(...) method.
-
- The LayerHandler was also updated to handle background layers
- better, so that background layers show up at the bottom of layer
- lists.
-
- * Layer has hasGUI() can let component know if a GUI is available.
- The LayerPanels use this to disable their palette icons if a GUI
- is not available for a particular layer.
-
- * LatLonPoint has been updated to contain many more functions to
- assist with determining relationships with other
- LatLonPoints (distance, etc).
-
- * Added I18 supports for many more GUI components. This effort is
- continuing.
-
- * Added support for GeoTIFF and geocoded images via the
- com.bbn.openmap.dataAccess.image package. This support is for
- images that are in a equal-arc WGS84 decimal degree projection.
- Relies on the JAI package being available on the host system. The
- ImageTile class is a subclass of OMScalingRaster that handles the
- display of these files. GeoTIFFs with embedded projection
- information are handled, as well as other image formats with world
- files. The com.bbn.openmap.layer.imageTile.ImageTileLayer is a
- layer that handles the display of ImageTiles, and serves as an
- example of how to use the new com.bbbn.openmap.dataAccess.image
- package.
-
-2006-02-14 Don Dietrick
-
- * Updated LayerHandler to manage layers in the MapHandler better.
- Layers will only be added to the MapHandler if they don't know
- about it already. Also, calling LayerHandler.init(Layer[]) has
- been updated to check to see if Layers are removable, and honors
- that setting. Non-removable layers will be added to the bottom of
- the layer stack as the new layers are added. These layers will
- also be added to the MapHandler as needed, where they previously
- weren't. This fixes the bug where layers added to the application
- as a result of loading a new properties file weren't being added
- to the MapHandler.
-
- * Updated BeanContextPlugIn to remove itself from the
- BeanContext/MapHandler when it sees its own PlugIn layer being
- removed. Made EsriPlugIn extend BeanContextPlugIn instead of
- AbstractPlugIn. Cleaned up how DataBoundsProviders were handled
- as they were removed from the MapHandler. PlugIns weren't being
- removed properly.
-
- * Added an attribute Hashtable to Layer.
-
- * Updated the MapRequestHandler and ImageServer classes to handle
- background Paints better. Map requests coming through the
- MapRequestHandler no longer set the default background color, and
- the ImageServer API has createImage(...) methods added to allow
- the passing in of background Paint objects to be used for an
- image. The background color can be set in the properties.
-
- * Updated WindowSupport to have WSDisplay inner classes that
- handle the differences between showing components in JFrames,
- JDialogs and JInternalFrames. Components can specify which kind
- of WSDisplay they wish to use when the create their WindowSupport
- object, or they can let the WindowSupport object create the
- default version for them. If the Environment.useInternalFrames
- flag is set, then JDialogs will be used for components that don't
- specify which WSDisplays to use. If the Environment flag is not
- set, then the WindowSupport.defaultWindowSupportDisplayType static
- member variable dictates what kind of window will be created.
- Although the JFrame class is the default, there are accessors to
- change that setting (WindowSupport.Frm.class,
- WindowSupport.Dlg.class or WindowSupport.IntrnlFrm.class)
- to suit your application.
-
-2006-02-01 Bill Mackiewicz
- * OpenMap 4.6.3 released.
-
-2006-01-24 Don Dietrick
-
- * Updated the ElevationBandGenerator in the
- com.bbn.openmap.omGraphics.grid package, adding the loader and
- ColorGeneratorLoader for it.
-
- * Updated the CSVTiledImagePlugIn to use
- FileCacheImageInputStreams to create BufferedImages, instead of
- ImageIcons. This is in an effort to reduce memory usage for tiled
- images.
-
- * Updated the com.bbn.openmap.util.FileUtils object for better
- options presented to the user, as well as methods that copy files
- and zip/unzip files.
-
- * Updated the Directory and File property editors to provide
- better control over the options offered to the user.
-
- * Added com.bbn.openmap.omGraphics.OMAbstractLine, which is now
- the superclass of OMLine and OMPoly. Arrowheads were moved up to
- this class, so polylines can now have arrowheads attached.
- There's an editable version as well.
-
- * EditableOMRangeRings were updated to estimate how may rings they
- should have when changing units in the GUI. It used to maintain
- the number it had, which could result in it being overwhelmed with
- the new settings. Now it behaves as expected.
-
- * Added bold and italic buttons to EditableOMText GUI.
-
- * OMArrowHead was updated to allow more parameters to be chosen by
- subclasses, making it easier to customize.
-
- * Updated the OMGraphic serialization methods to handle strokes
- better.
-
- * OMGraphicList.findAll(...) method lets you give an x,y pixel point on
- the map, and retrieve all of the OMGraphics under that point
- within the provided pixel range.
-
- * Added a Text Matte Color and Stroke, which, if set, will outline
- the text characters with a matting rendered with that stroke.
-
- * Updated the com.bbn.openmap.layer.vpf.VMAP2Shape class to use
- the com.bbn.openmap.dataAccess.shape components to create shape
- files.
-
- * Set LayerUtils to be deprecated, you should use PropUtils
- instead. The OpenMap components have been so updated. PropUtils
- was updated to have all the same methods as LayerUtils did, with
- some new ones including one that will set the proper
- internationalized strings (setI18NPropertyInfo(...)) for the
- getPropertyInfo() call of a PropertyConsumer.
-
- * Added the RpfUtil class, which allows you to modify
- (copy/delete/move) RPF data from RPF directories with filters that
- let you specify scale, chart type, or location.
-
- * Added Composites to the RenderPolicy API in
- com.bbn.openmap.layer.policy. This allows the addition of
- Composites to be added to a render policy to modify the rendering
- process for that layer. You can add an AlphaComposite to a layer
- this way in order to get it rendered with transparency.
-
- * Updated AbstractLocationHandler to hold DrawingAttributes object
- for names and location markers, instead of just holding a Color
- for each. The Property GUI hasn't been updated yet, so the old
- Color GUI still works. Added LocationHandler.NamePropertyPrefix
- and LocationHandler.LocationPropertyPrefix to allow scoping for
- properties.
-
- "Fixed" the CSVLinkHandler, meaning that it works, but still needs
- more work to be fully functional with property settings and
- different rendering effects for lines and endpoints.
-
- Updated CSVLocationHandler to have methods that can be overridden
- when dealing with tokens and newly read info from the CSV file.
-
- * Updated the DTEDLayer minScale property code to set the new
- Layer maxScale member variable, keeping with the meaning of the
- Layer's version. Removed the DTEDLayer's minScale property and
- supporting methods.
-
- * Added OMGraphicHandlerLayer.createLayerWorker() method to make
- it easier to override and set customized LayerWorkers (threading
- mechanism for layer work).
-
- * Removed restriction from BinaryFile that caused it to check for
- an "http://" lead on URLs.
-
- * Added the MagicPlanetImageComponent to the com.bbn.openmap.image
- package. The MagicPlanet is a spherical display system (get more
- information at http://www.globalimagination.com). By adding this
- component to an OpenMap application, images suitable for display
- on the MagicPlanet can be created, at varing intervals and
- resolution settings. The MagicPlanet's StoryTeller software can
- then be told where the images are stored, and can then manage the
- images.
-
- * Updated the AbstractImageFormatter to reset an existing
- projection back on a layer after the formatter has used it to
- create a image. This should help for situations where an active
- map window wasn't behaving properly after being saved to a file.
- Removed the AcmeJPEG* code, it didn't work and the Sun version
- should be used instead.
-
- * Updated the ScenarioGraphicLoader so that the mode settings are
- more obvious, instead of being changing depending on the clock
- setting.
-
- * Updated the com.bbn.openmap.geo package, which now has the
- capability to do spatial intersection and proximity analysis in
- lat/lon space. The ExtentIndex (and ExtentIndexImpl) contain
- collections of GeoExtents which may be queried for intersection by
- other GeoExtents. The Ribbon object is an attempt at rendering
- spatial areas around GeoExtents.
-
- The com.bbn.openmap.layer.test.GeoIntersectionLayer is an example
- of how to use the ExtentIndex. That layer loads shape files into
- the ExtentIndex, and then lets you draw on the map to test how the
- drawn objects intersect with the shape file objects.
-
-2006-01-23 Don Dietrick
-
- * Updated the com.bbn.openmap.dataAccess.shape package so its
- components use the attributes of OMGraphics instead of using the
- OMGraphic appObject directly. The DbfTableModel might be stored
- in the EsriGraphicList's DBF_ATTRIBUTE key. In each of the
- EsriGraphics, the index is stored under that EsriGraphic's
- SHAPE_INDEX_ATTRIBUTE. Updated DBF output to put numbers in
- English locale number format.
-
- * Added the DTEDFrameACC object to the
- com.bbn.openmap.dataAccess.dted package and DTEDFrame, to hold
- DTED accuracy attribute information. This class was submitted by
- Matt Revelle.
-
- * Made the MouseModes MouseWheelListeners, and made the default
- action for the OpenMap MapMouseModes to control zooming over the
- map.
-
- * Added minScale and maxScale properties for layers, which hold
- onto scale settings that the layer can use to determine if it
- should react to a projection or not. Also added an Icon member
- variable to the Layer. Note that the Layer doesn't actually use
- the minScale and maxScale parameters, that's up to the Layer
- subclass authors.
-
- * Removed Makefiles, now that ant is the official build mechanism.
-
-2005-05-24 Don Dietrick
-
- * Refactored the FilePropertyEditor so it includes an uneditable
- text area, and added callback methods for settings that all the
- other file-related PropertyEditors use now. Justified the
- ColorPropertyEditor and choice PropertyEditor widgets to the left
- instead of centered.
-
-2005-05-23 Don Dietrick
-
- * ComponentFactory updated to contain a singleton instance, and
- the static methods have been updated to use that singleton
- instance. This makes it possible to change the behavior of the
- ComponentFactory by setting a subclass as the singleton. The
- PropUtils.createObjectFromProperties(...) method now calls the
- ComponentFactory.create(...) method.
-
- * Fixed the BasicGeometry attribute handling where the first
- attribute being set was being stomped on and deleted when
- subsequent attributes were added.
-
- * Updated DrawingAttributes so it doesn't create a
- BasicStrokeEditor when the stroke is being set, for those times
- when a display is not available. Property output for colors now
- in hex strings. OMGraphic uses static BASIC_STROKE object for
- default strokes, instead of creating new object.
-
- * Updated VPF FeatureDrawingAttributes to set String constants
- when display type is set, added null checks when GUI is reset.
- Fixed problem for initial settings for attribute display via
- properties file.
-
- * Added null check in ESRIPolygonRecor/ESRIPointRectord for
- DrawingAttributes being set, made SpatialIndex a Closable object.
- Added the connectParts() call to OMAreaList for handing holes, but
- that code section still isn't active by default due to problems
- with OMAreaList and very large objects.
-
- * Updated MIFLayer to be able to read files specified as
- resources, files or URLs.
-
- * Updated Location object to have more specific
- shouldRenderName(...) and shouldRenderLocation(...) methods, these
- methods make it easier for subclasses to determine/control when
- those parts should be drawn.
-
- * Updated the DrawingToolLayer to have an option-filled GUI that
- allows the saving and loading of a serialized OMGraphicList
- to/from a file, as well as saving the properties for the layer.
- Shape layer creation is also an option.
-
- * Updated the layer ordering in the Crew and SimpleMap2 examples.
-
- * Updated DTEDFrame and RpfFrame to call close on its file handle.
-
- * Updated InformationDelegator to use the Environment Desktop for
- internal frames.
-
-2005-02-15 Donald Dietrick
-
- * Released OpenMap 4.6.2
-
-2005-02-15 Donald Dietrick
-
- * Added the cntry02 world boundary shape files to the package and
- made them the default files used in the OpenMap application.
- They're bigger files, and the application runs a little slower,
- but they are much more accurate than the dcwpo-browse files. The
- dcwpo-browse files are still available if the old data is desired.
-
-2005-02-11 Donald Dietrick
-
- * Updated many classes for internationalization, with help from
- Piotr Kaminski and Jesper Berglund.
-
- * Updated the RpfLayer so the opaque slider works on the coverage
- rectangles as well as the images. Updated the palette to enable
- the modification of preference settings. Updated the MakeToc to
- better check for non-RPF image files to skip them when appropriate.
-
- * Updated FileUtils to have separate save and open methods,
- updated different classes in the package to call them
- appropriately.
-
- * Updated the BasicI8n class so it can provide a set of
- ResourceBundle properties files that can be used to
- internationalize an application. If the 'i18n.create' Debug flag
- is set (with a -Ddebug.i18n.create OpenMap application flag, or
- by calling Debug.put("i18n.create") somewhere at the very
- beginning of an application), the BasicI18n class will log all
- the resource bundle properties files accessed or attempted to be
- accessed, and will track the retrieved strings or their defaults
- provided to the application GUI. If requested, the BasicI8n
- class can create a hierarchy of I18N_.properties files in
- the correct directory structure of the requesting application,
- filled with key-value pairs where the values can be replaced with
- language-appropriate translations for the given locale. If the
- application is run with the 'i18n.default' flag also set, then
- I18N.properties files will be created without the locale
- setting. Added the I18nFileCreateMenuItem that will tell the
- BasicI18n class to create the new files. The openmap.properties
- file was updated to show how to load the menu item to a generic
- OMBasicMenu in order to temporarily add this class.
-
-2005-01-10 Donald Dietrick
-
- * Updated the com.bbn.openmap.tools.symbology.milStd2525
- package, specifically, the SymbolReferenceLibrary and the
- SymbolChooser, which can now create icon symbols given the
- proper data source. The SymbolChooser now updates the symbol
- code based on option settings, and the SymbolReferenceLibrary
- uses a SymbolImageMaker to decide how to make a image based on
- that code. The SVGSymbolImageMaker can use the SVG symbol
- library available from DISA, and also requires the Batik
- package from http://xml.apache.org/batik. The
- PNGSymbolImageMaker and GIFSymbolImageMaker
- will create scaled icons from a gif file selection.
-
- * Added labeling capabilties to OMGraphics, handled by their
- attribute capabilities. If the OMGraphicConstants.LABEL attribute
- is set with an OMLabel object (the OMTextLabel is one
- implementation), labels will appear on the map for an OMGraphic.
- Added OMGraphicConstants.TOOLTIP and OMGraphicConstants.INFOLINE
- constants, too, that can be used by layers to look up these kind
- of attributes in an OMGraphic. The VPFLayer now looks for these
- attributes for it's display.
-
- * Updated the StandardMapMouseInterpreter to handle right mouse
- button clicks better, by trapping the popup trigger.
-
- * Updated VPF package components to provide access to feature
- attribute information, which can be displayed via tooltip,
- information line, or label on the map. The choice of display
- type and attribute type can be specified in the layer's palette
- and/or properties. The VPFLayer's 'searchByFeatures' property
- must be set to true for this capability.
-
- * Added ImageIOFormatter class, a super class for creating image
- files via the java imageio package. Added GIF and PNG
- implementations.
-
- * Moved the LayerHandler threading support to the LayerSupport
- object that also performs some queueing capability, so that the
- threads lauched form layers changes are performed in order to
- preserve stability.
-
-2004-11-25 Donald Dietrick
-
- * Modified the ProjectionSupport and LayerHandler to launch
- threads for projection notifications to the layers and for layer
- reordering, to prevent the application from getting hung up for
- some of the more extensive notification event reactions.
-
- * Updated VMAP2Shape to use EsriShapeExport class, instead of
- using the Shape package stuff. Updated VPFConfig to check for
- backslashes and replace them with Java-friendly forward slashes.
-
- * Modified the ESRIPolygonRecord to include the donated code to
- handle polygon holes using OMAreaList. This code is disabled,
- however, because OMAreaList doesn't really handle shapes that go
- around the earth yet, and having this modification breaks
- world-level shapefile display. OMAreaList needs to be fixed
- before this code is enabled full-time.
-
- * Updated BasicGeometry to have the option of connecting shapes
- that are appended, instead of automatically not doing that.
- Updated OMAreaList to make that BasicGeometry append call with
- the connect parameter.
-
-2004-11-01 Donald Dietrick
-
- * Released OpenMap 4.6.1
-
-2004-10-15 Donald Dietrick
-
- * Changed OMGrid to extend OMGraphicList instead of OMGraphic.
- This provides better access to the OMGraphics that the
- OMGridGenerator creates. If that access is not wanted, just set
- the OMGrid (OMGraphicList) to be vague.
-
-2004-10-05 Donald Dietrick
-
- * Updated the SwingWorker to match the latest version from Sun.
-
- * Added LambertConformalConic projection, along with it's loader
- that has properties to let it describe the LCC attributes it will
- create. You create a loader in the properties for a specific
- state plane or other LCC definition, and that shows up as an
- option to the ProjectionFactory.
-
- * Updated the decorated OMGraphic parts, adding a circle
- decoration and some weather notations. Added editable
- OMScalingRaster code, submitted by Dan Bitts. Fixed FontSizer.
- Added callouts to FilterSupport to handle actions on OMGraphics
- that pass and fail the filter. Fixed transparency handling in
- OMRaster. Updated rotation handling in OMRasterObject. Added
- accessors to OMScalingRaster to get display corners. Updated
- OMText so rotated text factored into distance() correctly.
-
- * Modified LayerHandler to add layers to top of stack, if their
- position is undefined.
-
- * Update VPF components. Added feature type sublists to
- warehouse support, to better control display of different feature
- types.
-
- * Fixed MakeToc from the RPF package, it was writing bad A.TOC
- files. Updated RPF coverage tools. Modified RpfFrame to check
- for lower case file names if upper case isn't found, and also to
- check for full pathnames when the frame is actually loaded,
- instead of when the layer was created, which was really expensive.
-
- * Modifed BufferedImageRenderPolicy to extend
- RenderingHintsRenderPolicy, so buffered image could be
- anti-aliased if needed.
-
- * Modified how the OMGraphicHandlerLayer handles/locks the
- SwingWorker during updates, and how it cleans up if the
- SwingWorker gets interrupted. Removed synchronization notation
- from some methods. Added new GRP capability to handle events
- over the map.
-
- * Fixed Location bug with label rendering.
-
- * Modified DTEDCoverageLayer to extend OMGraphicHandlerLayer.
-
- * Updated BufferedLayer to properly handle BeanContext with its
- sub-layers, as well as responding to getProperties(). Updated
- ScaleFilterLayer as well.
-
- * Added methods to LatLonPoint that call GreatCircle class to
- calculate distance/azimuth to another LatLonPoint, or to find a
- LatLonPont a distance and azimuth away from the current point.
-
- * Updated the LayersPanel initialization with the
- LayerControlButtonPanel.
-
- * Added method to ProjectionFactory to let it provide the default
- projection set with the Environment projection parameters.
- Updated the BasicMapPanel and ImageServer/MapRequestHandler to
- use that method.
-
- * Added the com.bbn.openmap.util.FileUtils class that has a
- static method for asking for a file from the user, using a JFileChooser.
-
- * Added a save capability
- com.bbn.openmap.dataAccess.shape.DbfTableModel when it's run
- directly on a .dbf file. The save option was also added, enabled
- with a behavior mask setting.
-
- * Updated the com.bbn.openmap.dataAccess.dted components to be
- able to handle .dt2 files.
-
-2004-05-24 Donald Dietrick
-
- * Added the OptionPropertyEditor, a base class used for
- presenting properties with a limited number of choices. These
- options are defined in properties, which is why the
- PropertyConsumerPropertyEditor was written as the superclass.
- The ComboBoxPropertyEditor is the first implementation of the
- OptionPropertyEditor, using a JComboBox to display the choices.
- The ColorPropertyEditor was modified to use the DrawingAttributes
- fill paint button to display the color choice in addition to
- showing the hex representation. The Inspector was modified to
- handle PropertyConsumerPropertyEditors.
-
-2004-05-14 Donald Dietrick
-
- * Modified the ProjectionFactory to dynamically manage
- projections. This involved changing the ProjectionFactory from a
- class containing static methods that accessed hard-coded classes
- to a singleton instance that uses the MapHandler to gather
- ProjectionLoaders that it uses to create Projection objects. A
- BasicProjectionLoader class has been written implementing the
- ProjectionLoader interface, and 5 ProjectionLoader classes have
- been written extending BasicProjectionLoader that create the
- Mercator, CADRG, Orthographic, LLXY and Gnomonic projections.
-
- The ProjectionFactoryLoader class has been written to be added to
- the openmap.components property in order to put the
- ProjectionFactory instance into the MapHandler. It can also be
- used to define the properties for ProjectionLoaders, although
- ProjectionLoaders can also be added directly to the MapHandler as
- well.
-
- Because the change to openmap.properties might catch some people
- by surprise, particularly those who use their own
- openmap.properties file, the BasicMapPanel has been modified to
- check the MapHandler to see if a ProjectionFactory has been added
- to it. If a ProjectionFactory cannot be found, the singleton
- instance is automatically added with the default set of
- ProjectionLoaders.
-
- Lastly, the Projection property defined in the openmap.properties
- file has to be a class name, instead of a nickname of one of the
- projection classes. Some available class names have been added to
- the openmap.properties comments next to that property, and the
- BasicMapPanel has been configured to complain about using the old
- style.
-
- * Added methods to ComponentFactory so that those methods that
- created components from a list of marker names and a set of
- properties could be provided a prefix to place in front of the
- marker name and its properties.
-
- * Moved/Added I18n handle to OMComponent, OMComponentPanel and
- AbstractOpenMapMenu, to make I18n easier to implement.
-
- * Modified when/how tooltips are cleared and reset in the
- InformationDelegator.
-
-2004-05-10 Donald Dietrick
-
- * Modified the StandardPCPolicy so that has the option to be told
- to always spawn a thread when a projection is received. It used
- to use the number of OMGraphics on it's current list to determine
- if that should happen, but that caused problems if the one
- OMGraphic created took a while to create. You can pass the new
- flag in a constructor, or set it later.
-
- * Modified how PlugInLayer handles plugin with the BeanContext,
- so PlugIns added to the layer at a later time still get to work
- with the BeanContext.
-
- * Added the com.bbn.openmap.dataAccess.iso8211 package that
- provides support for reading ISO 8211 data files. Also added the
- com.bbn.openmap.dataAccess.asrp package that reads ASRP image
- data. ASRP images can be displayed using the
- com.bbn.openmap.layer.asrp.ASRPLayer.
-
- * Added attribute mechanism to OMGeometry/OMGraphic objects. The
- attributes are stored in a hashtable in the app object of the
- OMGeometry/OMGraphic and can be retrieved with new methods. The
- code has been written to work with the possibility of other code
- still using the setAppObject and getAppObject methods, as the app
- object set as in older versions of OpenMap is now stored as an
- attribute when other attributes are added. This should be
- seamless to anybody that is currently using the app object.
-
- * Created MapBeanPrinterMenuItem and added it to the FileMenu.
-
- * Modified the BasicMapPanel so the empty constructor doesn't
- create a PropertyHandler that will search for an
- openmap.properties file and fill the application with it. The
- basic BasicMapHandler will create a MapHandler and
- BufferedLayerMapBean, and an empty PropertyHandler. To create a
- BasicMapPanel that does look for an openmap.properties file,
- create a PropertyHandler with an empty constructor and pass it to
- the BasicMapPanel.
-
- * Added I18 contributions to gui package from Mirek Pawlowski.
-
- * Modified the GestureResponsePolicy interface, adding the
- receivesMapEvents(), mouseOver() and leftClick() methods so the
- policy could receive information about mouse events that were
- occuring over the background map and not over its OMGraphics. The
- latter two methods only get called when the first returns true.
- Modified the StandardMapMouseInterpreter to use these methods.
- Modified the OMGraphicHandlerLayer to not do anything when these
- methods were called.
-
- * Added Piotr Kaminski's RhumbCalculator class that computes the
- lengths of Rhumb lines.
-
-2004-04-16 Bill Mackiewicz
- * Replaced ext/jakarta-ant-1.5.1/ with ext/apache-ant-1.6.1/
-
-2004-02-13 Don Dietrick
-
- * Added Gordon Vidaver's route calculation package (originally
- derived from Ray Tomlinson's code)
- (com.bbn.openmap.tools.roads), along with two layers that
- provide routes based on the OMGraphics created from their data
- sources (com.bbn.openmap.layer.shape.MultiRoadLayer and
- com.bbn.openmap.layer.vpf.VPFRoadLayer).
-
-2004-02-11 Bill Mackiewicz
-
- * OpenMap 4.6 released.
-
-2004-02-09 Don Dietrick
-
- * Fixed the problem in OMColorChooser where the preview panel
- wasn't showing up in jdk 1.4.2.
-
- * Added properties in DrawingAttributes that set the pixel radius
- and oval settings of OMPoints when setTo(OMPoint) is called.
-
- * Modified the MapHandler to contain a mechanism for handing the
- addition of new components while the membership list is being
- iterated over by another component. If a component using the
- membership iterator adds something to the MapHandler as a result
- of finding something in it, the new addition will be saved by
- the MapHandler and added later, preventing a
- ConcurrentModificationException from being thrown.
-
- * Modified the MapBeans to set the clipping area (if null), and
- drawing buffers, to the size of the projection, instead of the
- MapBean. Usually these are the same, but just in case someone
- wants to try to do something with the projection definitions, it
- should work better. Since JComponents (Layer superclass) will set
- clipping areas to the size of the component if they are set to be
- larger, you may have to set the FullProjectionRenderPolicy in the
- layers in order to get them to draw fully into the projection
- area if it's bigger than the MapBean.
-
- * The I18n interface was added, replacing an I18n class that
- wasn't used. This interface describes a object that provides
- localized strings based on the requesting class, component
- descriptor with optional modifier, and a default string. The
- BasicI18n class, which implements the I18n interface, was added
- as the base implementation of localization in OpenMap. The
- Environment class was modified to provide the current I18n
- application instance to components at runtime. Several
- properties files for different packages were added to the
- distribution, as well as some Polish localized properties files.
- Many thanks to Piotr Kaminski and Mirek Pawlowski for helping us
- work out the Internationalization mechanism and providing
- modified classes and Polish property files.
-
- * Modified the com.bbn.openmap.SoloMapComponent interface so it
- has a canAdd() method, to be asked if a component can be added.
- This makes it easier to change the behavior of SoloMapComponent
- objects by overriding one method.
-
- * Upgraded the PropertyHandler so it writes out properties that
- are more accurate. The original properties are used, and then
- overwritten by the current components. If a component doesn't
- provide its current properties, its original properties are
- written. Before, no properties would have been written for that
- component.
-
- * Added the mac source directory, which has the capability to
- create a clickable Mac application. Use the 'mac' target in the
- ant build file.
-
- * Added the com.bbn.openmap.MapBeanRepaintPolicy interface, which
- handles the layer's requests for repaints as well as modifying
- the java.awt.Graphics object for painting. The
- StandardMapBeanRepaintPolicy was added to implement the default
- behavior. The HintsMapBeanRepaintPolicy was added to the package
- to allow RenderingHints to be set on the MapBean.
-
- * Added the com.bbn.openmap.proj.EqualArc interface to designate
- those projections that are Equal Arc (constant degree changes in
- both directions). Modified those layers that required the CADRG
- projection to be use any EqualArc projection, including LLXY.
-
- * Modified the ToolPanel so it can be told (in its properties)
- which Tools to include in its interface. It also has the
- capability to be told which tools to ignore and not include.
- This lets you place more than one Tool in the MapHandler, and it
- will show up in the right place. The ToolPanel will also make
- itself invisible if all of its components are made invisible, and
- reappear if any of them are made visible.
-
- * The OpenMapFrame has been modified to set its root pane as the
- root pane of the Environment if the Environment has been told to
- use internal windows and the root pane hasn't been set in the
- Environment yet.
-
- * Modified the OpenMap application to have a method which assigns
- a WindowListener to the application frame. The default action is
- to exit the application, but this method can be overridden to
- change this behavior. The OpenMap application also schedules the
- Frame to be shown in the event-dispatching thread, which makes
- the frame appear much more consistently.
-
- * Modified the WindowSupport object to use JDialogs to keep the
- windows floating on top of the map. The WindowSupport also now
- has code that tries to make the window appear centered on the
- owner window (thanks to Laura Paterson).
-
- * Added the com.bbn.openmap.gui.ScrollPaneWindowSupport, which is
- an extended WindowSupport that wraps content in a JScrollPane.
-
- * Added the com.bbn.openmap.gui.GridBagToolBar, which is a
- JToolBar with a GridBagLayout to have a more compressed look.
-
- * Added the com.bbn.openmap.gui.dock package, which supports the
- new com.bbn.openmap.gui.BasicDockPanel. This is a new MapPanel
- that allows components to stack up against each other, in
- addition to layering themselves within the panel.
-
- * Added the VPFConfig class to the com.bbn.openmap.layer.vpf
- package, a utility that helps configure VPFLayers. When run in
- standalone mode it displays the coverages and features available
- in the designated VPF library and allows the user to designate
- the DrawingAttributes desired for each feature chosen. There is
- an option for printing those properties so they can easily be
- added to an openmap.properties file. The VPFConfig can be
- launched from a running VPFLayer palette to change the features
- the layer is displaying. It can also be run from within the
- application to create a new layer and provide that layer to the
- LayerHandler, although this functionality hasn't been introduced
- yet.
-
- * The EsriGraphicList and DbfTableModel classes in the
- com.bbn.openmap.dataAccess.shape package have static methods
- included that create an instance of themselves from URLs.
-
- * Layers now have a removeable flag that can be set in them, that
- lets GUI widgets know that they shouldn't be removed, and the
- LayerHandler pays attention to that flag to prevent unremoveable
- layers from being deleted from the application. Fixed bug in
- palette component status events so that palette hide events get
- dispersed properly.
-
- * Added modifications to the RPF package by Kimberly Hamilton
- (NGC) which added the capability to use frames from other zones
- when zoomed out, to prevent that confusing lack of coverage
- effect at zone boundaries.
-
- * The com.bbn.openmap.dataAccess.dted package was greatly enhanced
- with a central DTEDFrameCache that can be shared across layers and
- tools. The DTEDFrame in that package provides OMGrid objects
- which can use OMGridGenerators to create representations of the
- data. This updated frame cache can be used by the
- com.bbn.openmap.layer.dted.DTEDFrameCacheLayer, and the different
- GeneratorLoaders used to display the data can be configured and
- modified in the properties file. The DTEDDirectoryHandler was
- added to load the DTEDFrameCache with a DTED directory, and it
- also handles the configuration of a DTEDNameTranslator, which
- translates how frame files are named in relation to their file
- structure. This used to be hard-coded, now new classes can be
- written and included in the properties.
-
- * The com.bbn.openmap.dataAccess.dted.DTEDAdmin class can move
- DTED files from one directory to another, filtering the move based
- on file location and dted level.
-
- * The Link package (com.bbn.openmap.layer.link) was modifed to run
- in asynchronous mode, allowing servers to push OMGraphics to the
- client layer on their schedule. Properties were added for stroke
- patterns, fill patterns, and projection changes so the server can
- control the application's projection. The LinkArc was added to
- the package as well.
-
- * A TimerLocationLayer was added to the
- com.bbn.openmap.layer.location package, which includes a timer to
- have the LocationHandlers reload their source data at specified
- intervals.
-
- * Simon Bowen provided updates to the MIF package
- (com.bbn.openmap.layer.mif), including support for text and point
- objects.
-
- * Uwe Baier provided the MySQL layer package,
- com.bbn.openmap.layer.mysql.
-
- * The RenderingHintsRenderPolicy was added, which lets layers
- independently set java.awt.RenderingHints on the
- java.awt.Graphics that its OMGraphics are painted into. The lets
- the layer set anti-aliasing, etc.
-
- * The FullProjectionRenderPolicy was added to allow the clipping
- area of the java.awt.Graphics a layer is painting into be the same
- as the current Projection. The JComponent code limited this to
- the visible size of the Layer, this allows the layer to paint
- into a bigger image buffer.
-
- * The VPFFeatureCacheGraphicWarehouse was created to provide a
- feature-based tile cache. This cache is shareable across
- different layers, accessed through the LibraryBean. Each layer
- gets their own copy of the feature OMGraphics so they can be
- rendered independently from other layers.
-
- * Added the VPF servlet to the package, at openmap/src/vpfservlet.
- This servlet is for programmers looking to gain an understanding
- of VPF data, as it provides an in-depth view into the structure
- and organization of VPF databases, as well as a direct look into
- the data files. It's a servlet intended to be run within Tomcat.
- There's a README included in the package that describes what
- files to modify to configure it for your VPF data and Tomcat
- installation.
-
- * The DrawingAttributes GUI was completely overhauled to have
- dynamic color icon generated to reflect the current colors. The
- BasicStrokeEditorMenu was created to compress Stroke parameter
- selection, and the EditableOMGraphics now have a standard
- interface to add options to the GUI, so different parameters
- specific to the OMGraphic type can be modified.
-
- * The com.bbn.openmap.omGraphics.event package was enhanced with
- the addition of the MapMouseInterpreter interface and the
- GestureResponsePolicy. The MapMouseInterpreter is an object that
- knows how to interpret MouseEvents over OMGraphics, and calls a
- GestureResponsePolicy for information on how to respond. This
- elevates MouseEvent interpretation to a different level, where
- the programmer only has to receive queries about what to display
- for certain OMGraphics, notifications of OMGraphic selection.
- This capability has been integrated into the
- OMGraphicHandlerLayer.
-
- * The FontSizer object was added to the package, which is used by
- the OMText object to resize the font based on scale.
-
- * The OMAreaList was added, which takes different types of
- OMGraphics and links them together to make one shape.
-
- * The OMArc was added, a superclass to the OMCircle. It can be
- rendered as an open arc, a chorded arc, or a pie arc.
-
- * The OMEllipse was added, which creates a ellipse in lat/lon
- space with distance axis. The EditableOMCircle can be used to
- move the OMEllipse, but the axis cannot be modified yet.
-
- * The EditableOMText object was added, a contribution from Piotr
- Kaminski.
-
- * OMGrids now use GridData objects to represent their values,
- which is a type wrapper. GeneratorLoaders were added to the
- package as well. GeneratorLoaders are factories that create and
- manipulate OMGridGenerators, using properties for configuration
- as well as providing a GUI for runtime manipulation. Added new
- SlopeGeneration capabilities to the
- com.bbn.openmap.omGraphic.grid package. Colored and Greyscale
- colors can be used by the SlopeGenerator.
-
- * The InformationDelegator was modified to handle the dispersion
- of messages to several information lines, with two now
- incorporated into the InformationDelegator. The CoordMouseModes
- use one (on the left) and layers generally use the one on the
- right. The right one gets used when the caller doesn't specify a
- location. Other locations can be added to the
- InformationDelegator list of available lines, and the caller can
- specify when line its information should appear on.
-
- * Added the com.bbn.openmap.event.ListenerSupport class, which
- provides superclass support for other event notification
- classes.
-
- * Added the MapBeanKeyListener and ProjMapBeanKeyListener classes
- to the com.bbn.openmap.event package, which distribute key event
- that occur when the MapBean has focus.
-
- * MapMouseModes can now have prettyNames, which are the names that
- appear in the GUI as opposed to using the modeID, which was the
- previous case. The GUI components have been updated to use the
- pretty name in the right cases, and to continue to use the modeID
- for programmatic purposes.
-
- * The proxy action of the AbstractMouseMode was modified so that a
- mask can be provided to allow certain types of events to pass to
- its targets even if it is acting as a proxy for another
- MouseMode. This lets the Gestures mouse mode update the
- coordinate display on the InformationDelegator while it acts as a
- proxy for the OMDrawingToolMouseMode, for instance, but letting
- only the mouseMoved MouseEvents pass on in a regular fashion.
- Also, if you hold the shift key down while generating
- MouseEvents, the proxy action is bypassed entirely.
-
- * Added a method to the DistanceMouseMode that makes it easy to
- subclass it and change the format of the string displayed in the
- InformationDelegator. Thanks to Piotr Kamiski.
-
- * The MapBeanPrinter object was added by Bart Jourquin, allowing
- the MapBean to be printed and scaled directly to the Java printer
- interface.
-
- * Modified the propertyEditors that deal with file and directory
- selection to check to see of a File Chooser has included "\\" in
- the path, replacing them with "/" to make the work correctly if
- they are written out to a properties file.
-
- * Modified the OMDrawingToolLauncher so there are properties that
- define whether to use buttons for different OMGraphic selection or
- a pop-up, and if buttons are chosen the number of buttons to
- display in a single row can be specified. The order of the
- OMGraphic choices are now the same as they are added to the
- MapHandler (in the openmap.components property or
- programmatically).
-
- * The OMDrawingTool was modified to be able to handle movement of
- multiple OMGraphics. It uses the DrawingToolRequestorList to
- notify the owners of all the OMGraphics when movement is completed.
-
- * Added the IconFactory package (com.bbn.openmap.tools.icon),
- which creates ImageIcons from vector data and DrawingAttributes
- information. You provide the factory an IconPart (or IconPartList)
- which contain DrawingAttributes per part, and the size you want
- the icon to be, and the factory creates the image for you. The
- DrawingAttributes GUI icons are created using the OMIconFactory.
-
- * Added the beginnings of a MIL-STD-2525 Symbology factory. It
- doesn't work yet. Soon. The
- com.bbn.openmap.tools.symbology.SymbolChooser does show the symbol
- hierarchy, though, and the symbol organization is in place. The
- last bit, actually building the symbols from cgm files, needs to
- be completed. The com.bbn.openmap.dataAccess.cgm package was
- added to OpenMap for this purpose. The CGM package was acquired
- from BBN's Cougaar code base.
-
-2003-12-30 Bill Euerle
-
- * Cleaned up numerous javadoc warnings.
-
- * Updated the VPF layer to more fully use the Java2 Collections
- API. Removed one (formerly deprecated) method from DcwRecordFile.
-
-2003-06-26 Don Dietrick
-
- * Added the com.bbn.openmap.gui.time package, which has standard
- GUI controls for controlling time on the map, and
- mapping time rates (real time to some other scenario time).
-
- * Added the com.bbn.openmap.graphicLoader.scenario package, which
- uses location data and activity data to manage movement, against
- time, over the map. The ScenarioGraphicLoader uses a time slider
- and several time control buttons.
-
- * Misc changes and bug fixes: Added getters/setters for
- AreaHandler in AreaShapeLayer. Fixed recursion bug in
- com.bbn.openmap.omGraphics.FilterSupport.
-
- * Added the com.bbn.openmap.tools.icon package, containing new
- classes that can be used to create images with pre-packaged scaleable
- geometries. The application icons will be moving to use
- ImageIcons created from the OMIconFactory and
- IconPartCollections, instead of holding gif and png files in the
- package. In support of this package, more capabilities were
- added to the com.bbn.openmap.omGraphics.DrawingAttributes class,
- including the ability to render a java.awt.Shape object into a
- java.awt.Graphics object using its parameters.
-
- * Moved the GraphicLoader classes in
- com.bbn.openmap.plugin.graphicLoader to their own package, in
- com.bbn.openmap.graphicLoader. The
- com.bbn.openmap.plugin.graphicLoader package remains, for the
- GraphicLoaderPlugIn and GraphicLoaderConnector, two classes that
- use PlugIns and GraphicLoaders. But the new package contains
- just GraphicLoader stuff, and several implementations and superclasses.
-
-2003-04-25 Don Dietrick
-
- * Heavy modifications to the CORBA classes. The build.xml file
- was modified to use the jdk 1.4.1 corba tools and classes instead of
- relying on VisiBroker. The idl components have been changed to
- work with POA instead of BOA. Created the
- com.bbn.openmap.util.corba.CORBASupport object to handle the
- client-server startup and resolution functions. This code used
- to be duplicated across three packages, now they all use this
- class.
-
- * Added getToolBarGUI to EditableOMGraphic, with first
- implemention in EditableOMPoly. Will be used for small GUI
- accessories that can be used to modify OMGraphics.
-
- * Moved DMSLatLonPoint, UTMPoint and MGRSPoint to
- com.bbn.openmap.proj.coords, added UPSPoint, NEDFrame and
- EnuFrame there too as a contribution from Robert Hayes.
-
-2003-04-23 Don Dietrick
-
- * Modified the OpenMapApplet to look for a PROPERTIES parameter
- in case the properties file to use to configure the applet should
- be different than the standard openmap.properties file. The
- properties file can be specified as a resource, file or URL, but
- the applet rules apply.
-
- * Added the ScaleDisplayLayer, contributed by David Ward. Modified
- it to extend OMGraphicHandlerLayer.
-
- * Misc bug fixes - the add/delete node states for the
- EditableOMPoly only change to edit cursors when over a node, it's
- now consistent with actual editing behavior. The equator
- distance for NM in the Planet class was modified to be 2160.
- Modified CSVTokenizer to ignore quotation marks, although a
- quotation mark at the start of a field forces the field to be
- interpreted as a String, and escape characters force inclusion of
- the next charater in a String field. RpfTocHandler ignores
- commas while checking scale fields.
-
-2003-04-16 Don Dietrick
-
- * Created the CombinedCoordPanel made from the contents of the
- improved CoordDialog, and modified the CoordDialog and
- CoordInternalFrame to use that instead of creating their own
- content. Created a CoordsMenuItem that brings up the
- CombinedCoordPanel in a WindowSupport object instead of using the
- CoordDialog and CoordInternalFrame. Removed support in the
- NavigateMenu for the CenterListener setup of the MapBean and
- specific support for the CoordDialog/CoordInternalFrame, since
- that moved to the CombinedCoordPanel and setup is now supported
- by the menu item.
-
-2003-04-14 Don Dietrick
-
- * Added the com.bbn.openmap.gui.menu.MenuList component, which
- can create a set of menus from properties, and can provide a
- JMenuBar or JMenu containing those menus. Maintains order of the
- menus.
-
- * Changed MapPanel to be an interface to a component that can
- provide its MapBean, MapHandler and menu information(MenuBar
- or single Menu with appropriate sub-menus). Created the
- BasicMapPanel to implement the MapPanel interface. Modified
- OpenMapApplet and OpenMapFrame to find a MapPanel, add it to
- their content pane, and ask it for it's JMenuBar.
-
- * Added a librarian function in the PropertyHandler so you can ask
- it for objects that were created with a particular property
- prefix. Applies to those components created via the
- openmap.components property.
-
- * Added the com.bbn.openmap.gui.dock package, which provides a
- multi-layer layout for OpenMap components.
-
- * Misc changes: Fixed the area calculation in LabeledOMPoly,
- Location now uses an OMPoint instead of an OMRect.
-
- * Added the com.bbn.openmap.gui.MiniBrowser component, which
- displays HTML content for the InformationDelegator. It has a
- back button, and a button to launch current content in the
- default browser if the content is from a URL. Uses a JEditorPane
- to display HTML.
-
- * Changed the WebBrowser temporary file extension from .tmp to
- .html.
-
- * Added the com.bbn.openmap.plugin.graphicLoader.scenario package,
- which is a csv-loaded chain-of-events displayed on the map.
-
-2003-04-05 Don Dietrick
-
- * Created the MapPanel component, which is now the central
- OpenMap application/applet component. It takes a
- PropertyHandler, or creates one if it isn't given one, and
- creates and MapBean and MapHandler. It then uses the
- PropertyHandler to get properties to create all of the components
- for the application. The MapPanelChild interface is for
- top-level components that should be added directly to the
- MapPanel, and it allows the MapPanel to ask where the component
- should be added in its BorderLayout. The MapPanel can be used on
- any application as a regular Swing widget, basically embedding
- OpenMap into an application or applet.
-
- * Modified the OpenMapFrame so that it applies to applications
- only, instead of having it be responsible for figuring out when
- it was being used in an applet and have it do the layout for an
- applet. The OpenMapFrame now looks for the MapPanel and adds it
- to its content pane. It also looks for a JMenuBar to add to
- itself. The OpenMap class creates a MapPanel, PropertyHandler
- and OpenMap frame to start the OpenMap application. The
- OpenMapApplet is now a BeanContextMembershipListener, so it can
- use the MapHandler to find components it needs. It also creates
- a MapPanel and PropertyHandler, and does its own layout of
- components.
-
- * Added the OMControlPanel, a little all-in-one component
- containing a overview map, all of the projection control widgets,
- and a layers panel. By default, it likes to be added to the left
- side of the MapPanel. Also added the ControlPanelToggleMenuItem,
- which locates the OMControlPanel in the MapHandler and can be
- used to hide/show the panel.
-
- * Added the com.bbn.openmap.gui.WindowSupport, which provides
- manangement functionality over JFrame/JInternalFrame for
- components that want to emebed themselves or other components in
- a window. The WindowSupport disposes windows when they are
- dismissed or hidden to save memory and to prevent their existance
- from keeping the jre thread active when parent components are
- removed. The WindowSupport keeps track of positioning and
- resizing changes and applies them to windows that are re-created
- later for the same component.
-
- * Misc: Modifed the LayerUtils.getResourceOrFileOrURL method so it can
- better locate resources for applets in the code base. Fixed the
- problem with the OMRasterObjects for distance triggers, making
- them think they are always filled so they respond to any query
- within their limits.
-
-2003-03-25 Don Dietrick
-
- * Added the com.bbn.openmap.util.DataBounds and
- com.bbn.openmap.util.DataBoundsProvider interface, and modified
- the GoToMenu to use the
- com.bbn.openmap.gui.menu.DataBoundsViewMenuItem to enable the
- capability to focus the map on a particular data set. For
- instance, if a ShapeLayer is added to the MapHandler, it will be
- picked up by the DataBoundsViewMenuItem and a menu item for that
- data set will be added to the submenu, allowing the map to be
- recentered and zoomed directly over the area covered by the data.
-
- * Modified the LayersPanel and LayerPane classes, and added the
- LayerControlButtonPanel. The LayerControlButtonPanel is a
- configurable OMComponentPanel that contains the buttons to change
- the layer order. These buttons used to be integrated into the
- LayersPanel, and have been moved into their own panel that is
- configurable via properties (horizontal, vertical, top, bottom,
- right, left, and include/omit add/remove layer buttons). This
- panel can be added to the LayersPanel in several different ways,
- all configurations available via the properties, but if you don't
- specifiy anything the LayersPanel will appear as before. The
- LayerPane now notifies the LayersPanel when a layer entry has been
- selected for movement, and that notification gets passed to the
- LayersPanel and on to the LayerControlButtonPanel, and anything
- else that is listening for PropertyChangeEvents. Notifications of
- layer order changes also pass from the LayerControlButtonPanel to
- the LayersPanel via PropertyChangeEvents.
-
-2003-03-13 Don Dietrick
-
- * The directory structure of the OpenMap package has been changed
- in order to make it easier to add external code packages that
- OpenMap classes rely on. The new structure of the package is:
-
-ANT_ENV.bat - environment configuration for Ant for Windows machines.
-AUTHORS - People who have contributed to OpenMap.
-CHANGELOG - List of changes between versions.
-INSTALL - Installation instructions for compiling.
-LICENSE - OpenMap License.
-Makefile - Makefile for compiling code, forwards targets to Ant.
-README - Start here, information about using OpenMap.
-README.win32 - additional information for Windows users.
-bin - scripts for building, starting the OpenMap application.
-build.xml - Ant build file for compiling code.
-classes - created when code is compiled, not present by default.
-doc - Java API and architecture documentation.
-ext - Externally available packages that OpenMap packages rely on.
-iis - .NET webpages
-lib - jar files used by OpenMap, including jars created from OpenMap
- code.
-openmap.properties - default configuration file for the OpenMap application.
-share - misc information, applet pages, map data.
-src - the OpenMap code packages.
-
-src/openmap - the OpenMap code base, compiles with Java 2.
-src/ext - external code integrated into OpenMap package, compiled into
- openmap.jar file.
-src/svg - OpenMap code that relies on Apache Batik SVG
- package.
-src/j3d - OpenMap code that relies on Java 3D package.
-src/corba - OpenMap CORBA client-server code that relies on
- Inprise Visibroker package.
-
-
- * OpenMap GUI components have been overhauled. Previously, most
- of them created the Swing components they needed to provide their
- GUIs. Now they have been written to extend the Swing classes they
- used to use. Components that created many Swing objects and
- managed their configuration have been broken into several new
- components that can each use the MapHandler to configure
- themselves.
-
- - The OMComponentPanel is a new OpenMap base class that
- extends JPanel. This class implements the methods of the
- MapHandlerChild (it knows how to work with the MapHandler)
- and has methods that let it act as a PropertyConsumer.
-
- - The OMToolComponent is a OMComponentPanel extension that
- can provide a GUI face to let it act like an OpenMap Tool.
- The OpenMap Tool behavior can be controlled through
- properties that can be set on the component.
-
- - The InformationDelegator is now an OMComponentPanel, now
- uses the StatusLightPanel instead of creating and managing
- the status icons itself.
-
- - The OverviewMapHandler is an OMToolComponent, and can
- now beused as a JPanel.
-
- - The JPanel components in the OMToolSet have been
- separated from the OMToolSet and made into
- OMComponentPanels - the NavigatePanel, the ZoomPanel, the
- ScaleTextPanel. All can be used individually. The
- ProjectionStackTool can be used the same way.
-
- The Menus have been changed, too. The AbstractOpenMapMenu is the
- base class for all menus, and is capable of being configured via
- properties. The menu items for all of the menus have been
- converted into JMenuItems that can use the MapHandler to connect
- to other components (LightMapHandlerChild objects). These
- JMenuItems are stored in the new gui/menu package, and all of the
- old Menus - FileMenu, ControlMenu, NavigateMenu - have been
- updated to use them. The com.bbn.openmap.gui.menu.OMBasicMenu is a
- menu that can be configured through the properties.
-
- * The MapHandler has new methods that let you ask for components
- using Class objects. Also, there are methods that let you receive
- a Collection of objects as a result of queries if more than one
- object meets the query.
-
- The methods for the components that use the MapHandler have been
- standardized to the familiar ones defined in the MapHandlerChild
- class. Most OpenMap components now inherit most of the
- MapHandlerChild methods from a superclass, and override the
- findAndInit(Object) and findAndUndo(Object) methods. A new
- interface, the com.bbn.openmap.LightMapHandlerChild, specifies
- these two methods as a component that can hook up to other
- components it needs.
-
- * The MapBean now uses a MapBeanRepaintPolicy object to determine
- how it will react to layer repaint requests. The
- StandardMapBeaRepaintPolicy, used by default, simply forwards all
- requests normally. The MapBean also forwards projection changes
- in PropertyChangeEvents.
-
- * The Layer class has changed. All references to the AWTAvailable
- variable have been removed. The ImageGenerator, which used this
- variable to try to track Layer threads, has been removed. The
- Layer.repaint() method now calls MapBean.repaint(layer) if its
- parent is a MapBean. This is to allow the MapBeanRepaintPolicy to
- take effect.
-
- * A MGRSPoint has been implemented, allowing conversions between
- decimal degree lat/lon, UTM and MGRS coordinates. The UTM and
- MGRS panels have been added to the CoordDialog component. The
- CoordDialog, in addition to recentering the map on the entered
- coordinates, also converts the coordinates to the other
- representations in the different panels of the dialog.
-
- The com.bbn.openmap.plugin.UTMGridPlugIn has been added, which
- draws the UTM zones on the map, labeled below certain scales. It
- also has the capability of drawing distance grid squares around
- the center point of the projection. These grids are labeled with
- MGRS grid lables when zoomed in.
-
- * Thomas Paricaud contributed the e00 layer package, enabling the
- reading of ArcView export formatted files.
-
- * MouseModes now have a notion of being invisible to the GUI
- (their presence is expected to be noted by another component or
- tool), and also have the ability to act as a proxy for another
- MouseMode. When a MapMouseMode acts as a proxy for another
- MapMouseMode, it sends all its events to the hidden MapMouseMode.
- This functionality has been built into the AbstractMapMouseMode.
-
- MouseEvents are now wrapped within a MapMouseEvent by the
- AbstractMapMouseMode. The MapMouseEvent provides information
- about what MapMouseMode sent the event, provides a handle to the
- MapBean and has a method to provide the latitude/longitude of the
- MouseEvent location.
-
- The CoordMouseMode now calls a method for setting up the text
- that gets presented in the GUI for the coordinates of the mouse.
- This lets you easily extend the CoordMouseMode to specify the
- units and format of the string.
-
-
- * The OMGraphicHandlerLayer has become the uber-layer for
- OpenMap. The methods for creating and rendering OMGraphics and
- handing projection changes have been standardized in the
- OMGraphicHandlerLayer, and a SwingWorker added to it. Almost all
- of the other OpenMap layers are now based on the OMGraphicHandler
- layer, with their SwingWorkers deleted and using the one from the
- super class.
-
- The OMGraphicHandlerLayer now uses two different policy objects,
- one that determines the behavior of the layer when the projection
- changes (should the layer clear out the current OMGraphicList with
- each projection change because it needs to repopulate it based on
- the new projection or reuse all OMGraphics, and should a
- SwingWorker thread be launched) and the behavior for rendering
- OMGraphics. The prepare() method for an OMGraphicHandlerLayer
- returns the OMGraphicList to be used for a projection, and can be
- called in any thread. The doPrepare() method launches a
- SwingWorker to call the prepare() method. Different OpenMap
- layers set different ProjectionChangePolicy and RenderPolicy
- objects depending on the behavior desired and how they gather
- their OMGraphics.
-
- The StandardRenderPolicy forwards paint() requests to the render
- method of the OMGraphicList. The BufferedImageRenderPolicy keeps
- track of how long it takes to paint the OMGraphicList, and if it
- exceeds a threshold it will create a BufferedImage to paint the
- OMGraphicList into. If paint times decrease, the buffer is
- discarded automatically.
-
- * Added many OMGraphic package improvements:
-
- - OMGraphicList has a 'vague' variable added that controls
- certain behaviors. If an OMGraphicList is vague, it acts
- as a whole OMGraphic, with any child OMGraphics
- contributing to the whole group. The group gets treated as
- the OMGraphic for find/select requests. If an
- OMGraphicList is not vague, which is the default, the
- OMGraphicList acts as a pass-through, an organizational
- container for the child OMGraphics. Methods that also
- modify the internal List have been synchronized on the
- List to avoid ConcurrentModificationExceptions.
-
- - OMDistance has been added, an OMPolygon with labels at
- each node specifying segment and total distance from the
- first node.
-
- - OMSpline, OMDecoratedSpline have been contributed by
- Eric Lepicier, along with their decorations and supporting
- Editable classes.
-
- - Bart Geraci contributed new OMArrowHeads, much improved
- look.
-
- - OMGraphics now have a getDescription() method, returning
- a String that describes what they are. When called on an
- OMGraphicList, you get a huge printout of the structure of
- the OMGraphicList and its contents, including the contents
- of any child OMGraphicLists.
-
- - OMText now have a setUseMaxWidthForBounds() method,
- which let the background area for Multi-line text appear
- as a bounding box, instead of a form-fitting polygon.
-
-
- * Modified the OMDrawingTool by adding a behavior mask, which
- dictates how the OMDrawingTool acts. There are behavior options
- for deactivating when the mouse is clicked off the edited
- OMGraphic instead of using the pop-up menu or palette Done button,
- presenting the palette, presenting the pop-up menu, presenting the
- pop-up menu on a ctrl-click or right mouse click. This makes
- using the OMDrawingTool much easier to use for the user. The
- OMDrawingTool now has a canEdit() method, which lets you ask if it
- can edit a particular Class of OMGraphic without invoking the
- tool.
-
- * Modified the DrawingToolLayer to have methods that ask whether
- an OMGraphic should be edited (handed to the OMDrawingTool), and
- what the tool tip should be for an OMGraphic. This makes it
- easier to customize behavior for mouse events in layer subclasses.
-
- * The BufferedImageHelper will use JAI if it is available to
- create a BufferedImage. It uses reflection to figure this out, so
- it will compile and run if the JAI is not installed.
-
- * Added an OMGraphicDeleteTool, a button component that sits in
- the tool panel and listens for events from any other component,
- like the OMDrawingTool, for OMGraphics that have been selected.
- If the button is pressed, the OMGraphicDeleteTool deletes the
- selected OMGraphic by notifying the DrawingToolRequestor to
- delete the OMGraphic. If the source of the selection is the
- OMDrawingTool, the OMGraphicDeleteTool will tell the
- OMDrawingTool to delete the OMGraphic, which it does by notifying
- the DrawingToolRequestor when the drawing tool deactivates.
-
- * Added the com.bbn.openmap.layer.editor package, which contains
- an EditorLayer that extends the DrawingToolLayer. The EditorLayer
- uses an EditTool to make modifications to its OMGraphics. Unlike
- the DrawingToolLayer, the EditorTool presents a GUI in the tool
- panel that controls tools specifically for that layer, with uses
- and meanings designated for interaction with that layer. There
- have been three EditorTools implemented - a superclass
- AbstractDrawingEditorTool that creates an internal OMDrawingTool,
- and two subclasses. The DrawingEditorTool loads different
- EditToolLoaders into the OMDrawingTool - creating the drawing
- layer that most people were expected before the drawing tool came
- out, with any graphics created going directly to the layer. The
- DistanceEditorTool has a button to create OMDistance objects,
- which, unlike the DistanceMouseMode, creates distance lines that
- are persistant. The AbstractDrawingEditorTools use the
- SelectMouseMode to modify OMGraphics that are on the map. If an
- OMGraphic is being edited, the SelectMouseMode is used as a proxy
- for the internal OMDrawingTool, so the modifications look like
- they are being managed from the Gestures mouse mode.
-
- * ScaleFilterLayer now presents palettes for layers, forwards
- MapMouseModes to active layer, status event for active layer.
-
- * The EsriGraphicList and DbfTableModel have static methods that
- take a URL to a file and provide an instance of themselves.
- EsriPoint and EsriPolys are cloneable.
-
- * VPFLayer can be told to get features from a particular library.
-
- * New icons for the MouseModeButtonPanel.
-
- * The com.bbn.openmap.plugin.graphicLoader package documentation
- has been improved, and the GraphicLoaderConnector problem caused
- by adding GraphicLoaderPlugIn/PlugInLayers to the MapHandler when
- the GraphicLoader was given a handle to the LayerHandler. This
- caused a concurrent modification exception. Now a list of new
- PlugInLayers is maintained, and added to the MapHandler after the
- iteration.
-
- * The projections have been modified to help out the
- ProjUtils.getScale() method, returning the proper scale for the
- particular projection type.
-
- * ArgParser can now be told to expect '-' in arguments (for
- negative numbers) instead of automatically assuming that those
- arguments are command arguments.
-
- * The ComponentFactory can now use reflection to create Objects
- with arguments in their constructors.
-
-2002-12-20 Donald Dietrick
-
- * Moved the CHANGELOG to the top-level directory, in order to help
- people find it.
-
- * Added a method to the ComponentFactory that lets you ask it to
- create Objects using an Object[] that serves as a set of arguments
- to the constructor. The method uses reflection to figure out if
- the Object[] contents make sense for the new Object type, and will
- create the new Object if it can.
-
- * Modified how com.bbn.openmap.proj.ProjUtil.getScale() works, in
- order to get a better scale value. The calculation has been moved
- back into the Projection objects, and the getScale() method now
- queries the projection for the scale value that is appropriate for
- the situation.
-
- * Modified how the PlugInLayer works between the MapHandler and
- its PlugIn. The PlugInLayer used to forward all communication to the
- PlugIn, now it simply adds the PlugIn to the MapHandler and steps
- out of the way.
-
- * The VPFLayer components have been modified to read data from a
- URL, and the bug that prevented data from being read from a jar
- file by an applet running 1.4.1 has been fixed. The API for the
- VPF components changed, so that components no longer take a File
- object for the paths, but instead take a String. Also, code was
- added to prevent multiple File separator characters from appearing
- in file paths.
-
- * The DrawingTool has been modified to have a notion of behaviors,
- which can be set via an integer mask. The pop-up menu that used
- to be required to complete modifications to an OMGraphic is no
- longer needed, but remains a behavior option. By default, it
- still appears with a right-click or ctrl-click. See java docs for
- details.
-
- * Added the com.bbn.openmap.layer.editor package, which contains
- the EditorLayer. The EditorLayer uses EditorTools to create a
- more application-centric layer, one that needs to capture
- MouseEvents exclusively, and also place a GUI in the ToolPanel
- when the EditorLayer is active. A DrawingEditorTool is provided,
- which provides the action most likely expected from a drawing
- layer, as opposed to the flexibility that the
- OMDrawingToolLauncher provides. The DrawingToolEditor makes the
- EditorLayer look like a drawing layer, with the controls and mouse
- events acting on its own OMGraphics.
-
- * MapMouseModes now have a notion of not being visible, and the
- OpenMap GUI components that display status of MapMouseModes honor that.
-
- * Misc bug fixes - Layer has correct setAsBackground flag set. The
- ToolPanel correctly removes Tools that have been removed from the
- MapHandler. The BinaryFile pays attention to a
- -Ddebug.connection_problems flag, and if it is set it will let the
- Thread sleep for a second. This is a fix, suggested by Sun, for
- problems that may occur by the client unexpectedly closing down a
- socket too soon before all the data has been read off the stream.
- The LocationLayer GUI has tabs for multiple LayerHandlers again.
-
- * Modifed the build.xml file so compilations are performed with
- debugging on.
-
-2002-11-08 Bill Mackiewicz
- * OpenMap 4.5.4 released.
-
-2002-11-07 Don Dietrick
-
- * Modified the openmap lauch scripts so they pick up any changes
- that may have been made to the version in the top level openmap
- directory. In 4.5.3, the jar had to be rebuilt to contain the
- modified properties file for the changes to take effect.
-
- * MapBean changes. Modified how the background color is handled
- in a MapBean. If the background is not explicitly set in a
- MapBean, the background color of the projection will be used. If
- a background is set in a MapBean, that change now only affects
- that particular MapBean. The OverviewMapHandler can now be set to
- listen to property changes of its source MapBean in case it should
- mimic background settings. The background can now be set to a
- Paint object as well (use setBckgrnd() methods).
-
- * There is now a BufferedLayer that can act as a group layer,
- buffering all of its layers into an image. There are settings
- that can manage how often the buffer is recreated, and these
- settings depend on if the image is transparent and how often the
- group layers repaint themselves between projection changes.
-
- * There is a BufferedLayerMapBean, which uses a BufferedLayer to
- contain all layers marked as background layers. This 'background'
- setting has been added to Layer. When the BufferedLayerMapBean
- receives a new stack of layers, it reads them and adds the
- background layers to its BufferedLayer. This really helps to
- decrease repaint times. This layer has not been added as the
- default MapBean in penMap because there isn't a good way to manage
- the layers and notify the user why the layer order may not appear
- the same way as it does elsewhere in the GUI. A new LayersPanel
- is needed. However, the BufferedLayerMapBean can be loaded into
- the application by using the -Ddebug.blmb flag. Using the
- -Ddebug.bllp puts checkboxes in the LayersPanel so you can mark
- layers as background layers.
-
- * The com.bbn.openmap.tools.beanbox package was updated, and a new
- example package (com.bbn.openmap.examples.beanbox) was added to
- show how to configure and use the beanbox for drag and drop
- additions to the map.
-
- * EsriPlugIn got many changes and fixes. The palette will return
- after the first dismissal, the horizontal scroll will appear and
- the table won't be compressed. If the shp file is the only one
- specified, they the shx and dbf files are assumed to be next to
- it. The files can be named as files, URLs or resources (relative
- pathnames). EsriPlugIns can be created dynamically.
-
- * The Shape dataAccess package was modified. Exports are more
- reliable and you can specify if the DBF file should be written.
- Sublists are only created for multipart geometries. OMGraphics
- created from Shape file records will be held directly in the top
- level OMGraphicsList instead of being held in a sublist. Null
- fields in the dbf file don't cause number exceptions.
-
- * The GraphicLoader concept was much refined, with the creation of
- an AbstractGraphicLoader that has a pre-defined timer, etc. A
- GraphicLoader is a component that creates OMGraphics on it's own
- schedule, and then notifies a receiver to paint the
- OMGraphicList. The GraphicLoaderConnector is a component that
- lives in the MapHandler and looks for GraphicLoaders in the
- MapHandler that do not have a component that is receiving its
- OMGraphics. If it finds on, it creates a
- PlugInLayer/GraphicLoaderPlugIn automatically to display objects
- on the map.
-
- * OMGraphic modifications:
-
- OMGraphics now have a notion of a TextureMask variable that can be
- used to hold a TexturePaint object. If the TexturePaint object as
- some transparency in its image, the OMGraphic's fillPaint will
- show through the fill pattern.
-
- The OMRasterObjects now correctly update their Java Shapes
- correctly. This fixes the problem where icons were not responding
- to gestures.
-
- OMScalingRaster now has access to the clipping rectangle, a Java
- 2D rectangle that specified what part of the image is on the map.
-
- OMArrowHeads for OMLines have their wingtip and winglength
- attributes exposed so they can be adjusted. Their rendering was
- improved with relation to matting, filling.
-
- OMGraphics were modified so that fill color matters with regard to
- distance. Clear shapes will be treated as lines, without
- area. OMLines are never treated as being with area (affects great
- circle lines) no matter what the fillPaint settings are.
-
- * MouseModes can now provide an Icon. The MouseModeButtonPanel
- can be used with those icons. If a MouseMode doesn't provide an
- icon, an name will be used instead.
-
- * Modified the SVGFormatter so it gets all the individual layer
- graphics properly from a BufferedMapBean.
-
- * Eliot Lebsack from Mitre provided a couple of new classes -
- com.bbn.openmap.layer.shape.ShapeFileCrop, can create a new Shape
- file with shapes from a certain area of another Shape file, and
- com.bbn.openmap.gui.SaveAsVirtualImageMenuItem, which lets you
- set the size of an image to create from the current map.
-
- * The SaveAsMenuItems now add an image-appropriate suffix to file
- names when an image is saved. They also check and confirm that a
- duplicate image will be overwritten.
-
- * The MapRequestHandler can now be set to use Layer visibility
- settings to determine what layers should be used for an image.
-
- * Misc layer improvements: Many Layers had properties renamed to
- not have a '.' in the front of them, and their setProperties
- methods have been modified to work with or without a property
- prefix. GraticuleLayer has font size property. DTED file
- components do better checking for null fields. ETOPOLayer updated
- to read ETOPO2 data. LocationLayer has LayerHandlers access
- exposed. The RpfProductInfo now has catalog static methods to
- print out information on all of the various data types.
-
- * Fixed bug where gestures were not accessing information on
- AreaShapeLayer graphics where the attributes were loaded via a dbf
- file.
-
- * Fixed the OMDrawingToolLauncher so it receives its list of
- EditToolLoaders from the OMDrawingTool, instead of finding them on
- its own.
-
-2002-07-24 Bill Mackiewicz
- * OpenMap 4.5.3 released.
-
-2002-07-24 Bill Mackiewicz
- * OpenMap 4.5.2 released.
-
-2002-07-23 Bill Mackiewicz
-
- * OpenMap 4.5.1 released.
-
-2002-07-22 Donald Dietrick
-
- * Added the com.bbn.openmap.tools.dnd package that contains a
- global application mechanism for handling Drag and Drop events.
-
-2002-07-21 Don Dietrick
-
- * Added Oliver Hinds' OMColorChooser preview panel, so you can see
- what the color looks with the transparency setting before you hit
- OK.
-
-2002-07-20 Don Dietrick
-
- * Incorporated Raj Singh's updates to the WMSPlugIn, which bring
- it into compliance with WMS specification version 1.1.0, including
- some error handling and JPEG image quality requests.
-
- * Incorporated Lonnie Goad's updates to the EsriPlugIn, which
- improved GUI interaction, table interaction, and provided tool
- tips over OMGraphics on the map that reflect the DBF contents for
- that graphic.
-
- * Fixed problems in the com.bbn.openmap.dataAccess.shape package.
- The ShpOutputStream was putting in the wrong record number
- (started at 0 instead of 1), and fixed a couple of problems with
- export, including a problem with handling embedded lists, and
- translating DrawingAttributes from OMGraphics that were converted
- to EsriPolygons and EsriPolylines.
-
-2002-07-18 Don Dietrick
-
- * Added ProgressEvent, ProgressListener and ProgressSupport
- classes to the com.bbn.openmap.event package. These objects
- provide a way for a component to let someone else know how much of
- a task is done. This has been integrated into the MakeToc class
- in the RPF package.
-
- * Added a 'matted' property in the OMGraphic object. If
- setMatted(true), then the OMGraphic gets drawn with a thin, 1
- pixel black line around it. Makes it more distinctive, especially
- in busy backgrounds.
-
- * Changed the graphicLoader package, making it much more
- significant. The GraphicLoader is an interface, representing an
- object that creates OMGraphics from some source and sending it to
- a receiver that will rendering it on a map. The
- AbstractGraphicLoader is an OMComponent that contains all the
- basic GraphicLoader functionality, along with the basic ability to
- use the MapHandler to find objects and being a PropertyConsumer,
- so it's ready to be initialized with properties in the
- openmap.properties file. The MMLGraphicLoader is additionally
- prepared to receive MouseEvents. The LOSGraphicLoader is the old
- GraphicLoader that lets things wander on the map, while keeping
- track of what objects are in LOS of each other.
-
-2002-07-17 Don Dietrick
-
- * Made modifications to OMGraphics. Made the OMLine handle arrow
- heads properly. Made arrow heads bigger. Made OMGrid more
- consistant and fixed bugs in column and row handling. Added an
- empty sort() method on OMGraphicList which can be extended with
- customized sorting criteria. Added a sort action constant mask to
- OMGraphicConstants. Added setSelected() and isSelected() methods
- to OMGraphic.
-
- * Added better trapping for SVGFormatter errors in the FileMenu.
-
- * Added the OMComponent, which is a MapHandlerChild and a
- PropertyConsumer, reflective of an object being added to the
- openmap.components property of the openmap.properties file.
- LayerHandler was changed to extend it.
-
- * Modified Environment.java to handle internal frames
- independently of being in applet mode.
-
- * Modified the build.xml file. The OpenMap package builds things
- differently, too. First, all compiled classes are placed in the
- classes/openmap directory, except for the CORBA classes which are
- placed in the classes/corba_vb directory. Second, all of the
- openmap classes are placed in the openmap.jar file. omcontrib.jar
- and omcore.jar are no longer created. All of the CORBA classes
- are placed in the omcorba_vb.jar if the corba build target
- (visibroker) is created.
-
- * Added Jakarta Ant 1.4.1 to the OpenMap package, making OpenMap
- pretty much self-compiling. All of the infrastructure for the
- original Makefiles have been removed, and replaced with Makefiles
- that call ant.
-
-2002-06-21 Don Dietrick
-
- * Modifed the build.xml file to handle the corba classes better.
-
- * Created the MakeTocException, and the
- com.bbn.openmap.layer.rpf.MakeToc class now throws that exception
- instead of calling System.exit(), in case it is embedded into a GUI.
-
-2002-06-18 Don Dietrick
-
- * Misc bug fixes in several classes, fixing null pointer
- exceptions, security access exceptions, etc.
-
-2002-06-13 Don Dietrick
-
- * Modified the EsriShapeExport class so that a GUI is not brought
- up to save the files if a file path is provided.
-
- * Fixed a bug in OMPoly that prevented internal Shape objects from
- being created if soShapes == false.
-
-2002-06-03 Bill Mackiewicz
- * OpenMap 4.5 released.
-
-2002-05-29 Don Dietrick
-
- * Modified MIFLayer to be an OMGraphicHandlerLayer.
-
- * Modified the clone() method in Proj.java, so that the internal
- Mercator projection used for complex lines gets deep cloned on
- copies. This allowed removal of a synchronized block of code.
-
- * Added edit methods on the DrawingTool that take a MouseEvent.
- These additional edit methods put the EditableOMGraphic directly
- into edit mode instead of selected mode, so that mouse events have
- an immediate effect on the OMGraphic. Makes for quicker editing
- in some cases. Also, a setAllowGUIOption method was added to
- OMDrawingTool so that the palette for an EditableOMGraphic can be
- brought up from the pop-up menu, if the user wants it.
-
- * BufferedMapBean and MapBean have had their clipping restrictions
- lifted, in order to provide a way to have smoother animation. Partial
- maps may be drawn if another layer trys to render itself,xc not
- knowing if there is a clipping rectangle set on the MapBean, so
- just be aware of that if you set the clip rectangle on them.
-
-2002-05-28 Don Dietrick
-
- * Fixed that annoying NullPointerException in the
- com.bbn.openmap.layer.shape.ShapeLayer.renderDataForProjection()
- method.
-
- * Overhauled the com.bbn.openmap.omGraphics package. The changes
- are extensive, but the use of OMGraphics is backward compatible.
-
- The biggest change is that internally, OMGraphics represent
- themselves as java.awt.Shape objects (actually, GeneralPaths)
- after they are projected/generated. After generation, the Shape
- object can be retrieved by OMGraphic.getShape(). The Java Shape
- interface provides different spatial operations you can perform on
- other shapes - contains, intersects, getBounds.
-
- The first new thing to notice is the
- com.bbn.openmap.omGraphics.OMGeometry interface, which is a basic
- interface describing renderable shapes. The most basic
- implementation of this interface is the abstract class
- com.bbn.openmap.omGraphics.geom.BasicGeometry, which contains the
- code that manages Shape creation. OMGraphic now extends
- BasicGeometry, adding DrawingAttributes information to describe
- how the Shape should be rendered (linePaint, fillPaint, Stroke).
-
- There is now an OMGeometryList, which extends OMGraphicList. The
- difference between them is that OMGeometryList contains OMGeometry
- objects, and when an OMGeometryList is generated, all of the
- OMGeometry objects contribute to a single Shape object (disjointed
- or not), with the DrawingAttributes of the OMGeometryList
- dictating how the Shape is drawn. The
- com.bbn.openmap.omGraphics.geom package contains these OMGeometry
- objects, of which there are two currently implemented -
- PolygonGeometry and PolylineGeometry. When rendering an list of
- graphics that share the same color and stroke types, using an
- OMGeometryList with a single Shape obejct is faster than using an
- OMGraphicList with separate OMGraphics.
-
- Some other omGraphic package improvements:
- - Moved the OMArrowHead calculations from OMLine to OMArrowHead.
- - Removed dependency on java.awt.Toolkit from OMBitmap and
- OMRaster in favor of BufferedImage.
-
- To add control over managing OMGraphics, the OMGraphicHandler
- interface was created. This interface defines methods to interact
- with a component that has OMGraphics, including spatial
- filtering. The FilterSupport object helps objects implement this
- interface. The abstract classes OMGraphicHandlerLayer and
- OMGraphicHandlerPlugIn are OMGraphicHandlers that use FilterSupport.
-
- Layers that implement the OMGraphicHandler interface -
- GraticuleLayer, DemoLayer, DrawingToolLayer, ShapeLayer.
-
- Other layer improvements that take advantage of the OMGeometry
- changes:
- - ShapeLayer2.java - A shape layer that uses the new OMGeometry
- objects. BufferedShapeLayer uses the new OMGeometryList. The
- com.bbn.openmap.layer.shape.EsriRecord components handle
- OMGeometryLists and OMGeometry graphics.
- - The com.bbn.openmap.layer.shape.areas.AreaHandler groups all
- like areas together in a OMGeometryList.
-
- As a side note, OMRaster and OMBitmap create rectangles outlining
- their shape. OMGrid hasn't been modified to do anything in
- particular with it's Shape object pointer.
-
- * Created a com.bbn.openmap.dataAccess package, which is intended
- to hold components that access particular data types. As an
- example, the com.bbn.openmap.plugin.esri components that were
- responsible for directly reading and writing shape files, were
- moved to com.bbn.openmap.dataAccess.shape. The rpf, dted, mif,
- etopo, and other data components will follow. Note that the
- EsriPlugIn and EsriLayer classes in the
- com.bbn.openmap.plugin.esri package still exist.
-
- * Incorporated a submission by Karl Stuempfle and Lonnie Goad
- working for OptiMetrics, Inc. that provides a way to take an
- OMGraphicList and export it to a (or up to three) Shape files.
- The class that does this is
- com.bbn.openmap.dataAccess.shape.EsriShapeExport. If a dbf file
- isn't specified in the OMGraphicList.AppObject(), one will be
- created for each .shp file, and it will contain the rendering
- attributes for the OMGraphics. The
- com.bbn.openmap.plugin.esri.EsriPlugIn reads the dbf file and
- looks for these attributes in it. If they are there, they are
- used, otherwise the default settings are used to render the shape
- graphics.
-
- The DbfTableModel was modified, and augmented with the
- MetaDbfTableModel, to allow direct editing and modification of the
- Dbf files.
-
- The DrawingToolLayer was modified to use the EsriShapeExport class
- to export its graphics when a button is clicked on its palette.
-
- * Added the com.bbn.openmap.tools.j3d package, which contains
- components for creating a Java 3D scene, and creating and
- controlling a viewer for that scene. This package requires that
- the Java 3D extension package
- (http://java.sun.com/products/java-media/3D/index.html) in order
- to compile and run.
-
- There are some basic components to this package:
- - The OM3DManager is the abstract object that creates a 3D scene
- and loads it with objects. The MapContentManager is a basic
- manager that creates a view window that is controlled by the arrow
- keys. The ControlledManager creates a view window that is
- controlled by an outside component, and the
- com.bbn.openmap.plugin.pilot.PilotPath is an example of an object
- that controls it.
- - The OMKeyBehavior class is a behavior class that controls
- movement of the camera over the scene.
- - The MapContent class controls how components are added to the
- scene. Map objects are added to the scene in different ways,
- check the javadocs for more information.
-
- There is still work to do in this package. Give feedback, money
- or code and guide where it goes.
-
- * Added the com.bbn.openmap.plugin.pilot package, which is
- a demo package to show how to use the j3D package. The user can
- add paths for a 'pilot' to follow, and then create a view into a
- 3D scene that changes as the 'pilot' moves over the map.
-
- * New OpenMap .NET XML Web Services code has been written and included
- in the openmap/iis directory. A demo of this code, which is a
- html OpenMap client, will be set up at http://www.openmap.net (get
- it?) eventually, but a link from the main OpenMap web page will
- direct you to it as well.
-
- There are two directories in the OpenMap.net project:
- ImageWebService and OpenMapWeb.
-
- ImageWebService contains the .NET XML Web Services. There are
- three of them: ProperService.asmx, GetMapService.asmx, and
- TimerService.asmx.
- - ProperService is responsible for starting and killing Java Image
- servers, updating user sessions, keeping information about layers
- used.
- - GetMapService service has three methods: GetMapImage,
- RecenterMap, PanMap. It uses ProperService to start Java processes
- as needed.
- - TimerService is a utility that will call CleanServerProcs()
- method in ProperService every certain number of minutes to check
- whether it's time to kill some java servers.
-
- The section in web.config file in ImageWebService
- folder is used to configure web services to point to the Java
- OpenMap installation and openmap.properties file.
-
- The OpenMapWeb folder contains two ASP.NET files: WebMap.aspx and
- MapImage.aspx.
- - WebMap.aspx is the user interface to the project.
- - MapImage.aspx is used to contact a web service to get raw image
- data.
-
- To support this service, additional functionality was added to the
- ImageServer class:
-
- - the PAN, AZIMUTH, X and Y arguments were added to the parsable
- argument list, allowing the client to send the server panning and
- centering commands (based on the current image projection).
- - if the 'layers' property is not defined for the ImageServer
- (including the MapRequestHandler) to use to configure the default
- layers, then the 'openmap.layers' property will be used to create
- the layers available to the ImageServer, and the
- 'openmap.startUpLayers' property will define the default layer list.
-
- * Modified the build files and the build.xml ant file so that
- source files that require other software packages will not be
- included in the general build, but can be built with modifications
- to some settings. There are three main groups of addition code
- that are controlled this way:
-
- - the Java 3D components in the com.bbn.openmap.tools.j3d package,
- which depend on the Java 3D package from Sun.
- - the SVGFormatter in the com.bbn.openmap.image package, which depends
- on Batik, see entry below regarding SVG creation.
- - the CORBA components in com.bbn.openmap.layer.rpf.corba (existed),
- com.bbn.openmap.layer.specialist (new) and
- com.bbn.openmap.plugin.corbaImage (new) packages, which are all
- configured to compile and run with the Visibroker CORBA
- implementation. The are based on the BOA model, so if anyone
- wants to translate that to POA and updated them to work with the
- CORBA classes in the Java distributions, please do.
-
- * SVG creation is now supported. Added the SVGFormatter class to
- the image package, created from code contributed by Sebastien
- Prud'homme. This class requires the installation of the Batik
- package (http://xml.apache.org) to compile and use. If the Batik
- classes are found at runtime, the SVG option is added to the File
- -> Save As menu.
-
- * Added the com.bbn.openmap.layer.specialist package. This
- package has actually been around since OpenMap started. It's a
- client-server package that transfers OMGraphic-like objects.
- Doesn't transfer OMGrids or OMPoints graphics. There are
- implemenations of servers for DTED, Shape and VPF data. All use
- the CSpecLayer for the client. The Specialist.idl file needs to
- be compiled (idl2java) to create the com.bbn.openmap.CSpecialist
- package, which gets compiled and put into the cspec58.jar file.
- All of the other classes get put into the specialist.jar file. To
- used this package, these jars, along with the Visibroker jar
- files, need to be added to the classpath using the -Xbootclasspath
- java flag. The rt.jar java runtime jar needs to be added to the
- bootclasspath as well, but after the Visibroker jars.
-
- * Added the com.bbn.openmap.plugin.corbaImage package, which is a
- corba-based version of the SHISPlugIn/SimpleHttpImageServer
- client-server setup. The package has a corba-based server that
- creates image objects sent to the client plugin.
-
- * The Corba RPF package has been improved. The server now has
- settings for the maximum number of caches to use, and a timer that
- cleans them up after a certain amount of time.
-
- * Modified the examples (com.bbn.openmap.examples packages) to
- show how to use the MapHandler for even simple applications.
- Moved the examples away from connecting components manually.
-
- * Added the OMScalingRaster, created from a contribution from
- Adrian Lumsden (and as I understand, with help from Steve
- McDonald). It's an extension to the OMRaster object that takes an
- upper left and lower right coordinate, and automatically scales
- its source image according to the projection in generate(). It
- does *not* warp the image to match the projection, it just does
- straight scaling.
-
- Because of this class, the
- com.bbn.openmap.plugin.CSVTiledImagePlugin was created to use
- them. It uses a CSV file to list coverage coordinates and URLs of
- images. This PlugIn does not do any real management of the images
- other than to load them and use them - it doesn't drop images that
- aren't used on the map, etc. Those are saved as improvements for
- later.
-
- Also, the RpfLayer code (RpfSubframe) now uses the OMScalingRaster
- for the Rpf subframe tiles.
-
- * Added some new functionality to the com.bbn.openmap.layer.shape
- package. Created the MultiShapeLayer, which can display one or
- more shape files. The palette for this layer provides controls
- for adding buffering and rendering behaviors. The AreaHandler in
- the com.bbn.openmap.layer.shape.areas now also uses dbf files, in
- addition to csv files.
-
- * AppletDataNugget has been deprecated, it's not needed anymore.
- BinaryFile has been fixed to be able to find files in jar files
- from an applet as expected.
-
- * Modified the Layer parent class, adding a Projection variable
- for all subclasses to use. Accessor methods that take projection
- events and projections to get to the projection variable were also
- added. Added Layer.projectionChanged() method that sets this
- projection variable. Most layer subclasses will probably have
- their own version of the projectionChanged() method, so it can be
- called if desired. The OpenMap layers that used to save a copy of
- the projection have been updated to use the new method and the
- Layer.projection variable.
-
- * Added the Quantize.java class, written by Adam Doppelt, to the
- contrib/doppelt directory. The Acme GIF creation code has been
- modified to use Quanitize if the image being encoded has more than
- 255 colors. Because of this improvement, the GIF option has been
- added to the File -> Save As menu.
-
- * Added the com.bbn.openmap.plugin.graphicLoader package, which is
- a demo package to show how to use the LOS code in the
- com.bbn.openmap.tools.terrain package. The user can add points
- over the map, some stationary, some wandering, some following a
- path, and the components figure out if they can see each other,
- drawing a dynamic network on the map.
-
- * Fixed a bug in the SoloMapComponentReplacePolicy where the
- replaced SoloMapComponent wasn't actually removed before being
- replaced.
-
- * Fixed a bug in LayerHandler where hasLayer() only checked the
- first layer, instead if iterating through all of them.
-
- * Updated the Link package so that OMBitmap, OMCircle, OMGrid,
- OMLine, OMPoint, OMRect, OMRaster, OMText and OMPoly objects are
- able to be written to the link via the LinkGraphic.write() method.
-
- * OMDrawingTool now makes distinction between new graphics and
- updated graphics when it notifies the DrawingToolRequestor. The
- OMGraphicList properly handles the OMAction that reflects these
- changes, adding updated graphics it doesn't currently have, adding
- new graphics, and doing nothing for updated graphics it has.
-
- * ProjectionStack now picks up changes to Background color changes
- to the MapBean.
-
- * Added a MouseModeButtonPanel to the gui package. This can be
- used instead of the MouseModePanel (option menu). Right now, the
- buttons display the MouseModeID text. If the .gif file is
- found as a resource, that image would be used on the button
- instead. We haven't designed images yet.
-
- * Misc changes:
- - EarthquakeLayer default sites updated.
- - Fixed layout of CoordPanel and DMSCoordPanel.
- - Environment class adjusted so that for the Windows platform, the
- XWindowsWorkaround for improved clipping performance is enabled.
- - The Environment was also changed to handle internal windows
- better. It now containes a JLayeredPane to use as a desktop. All
- OpenMap components that consider using internal windows have been
- updated to use the new setup.
- - The DMSLatLonPoint has been updated to use floats for its
- internal seconds representation, for better precision.
- - app/RouteLayer was removed, it was redundant.
- - Projections now use/return ArrayLists instead of Vectors.
-
-2001-12-11 William Euerle
-
- * Numerous changes to VPF layer code to make it more robust. A
- few minor performance improvements. Some initial code to handle
- "node" features - this code is not yet complete.
-
-2001-11-21 Donald Dietrick
-
- * Created the openmap/share/openmap.jnlp file, which demonstrates
- how to set up a file to be used with Java WebStart. MacOS X users
- and anyone else with Java WebStart installed can click on that
- file and the openmap applet will launch and run on the desktop.
- You can also use the WebStart file on our demo location at
- http://dstl.bbn.com/openmap/openmap.jnlp
-
- * Added the com.bbn.openmap.omGraphics.labeled package, which will
- be the future home of OMGraphics that have text labels attached to
- them. Only the LabeledOMPoly was implemented. The LabeledOMPoly
- lets you attach a text object to a specific node, or you can tell
- it to center the text within the poly. The polygon parameters can
- be modified with the OMDrawingTool, but the text attributes
- cannot. The text can only be modified programmatically.
-
- * Added typing controls in the com.bbn.openmap.plugin.esri package
- to scoped things a little better. Includes fixes for the
- NullPointerExceptions found in the last version. The Tester.java
- class was added as an example of how to use the shapefile creation
- capabilities of the package.
-
- * Fixed a NullPointer bug in the OMToolSet.
-
- * Added the MapWindow, a simple JFrame widget that contains a
- MapBean, MapHandler, MouseDelegator and LayerHandler. Easy to add
- a map to your application.
-
- * Cleaned up how layers are deleted. Fixed MapBean bug where all
- layers were receiving remove() calls in certain situations.
- Cleaned up how the InformationDelegator was releasing listeners to
- the palette triggers. The LayerSupport and other listeners were
- adding duplicates to their lists in some situations, which
- hampered clean up, too.
-
- * Fixed bug in DMSLatLonPoint where the lat/lons weren't being set
- properly.
-
- * Modified the ANT_ENV.bat file with better support for
- configuring the Windows environment for Ant. Also updated the
- README.win32 with instructions to set up Ant to build OpenMap.
-
- * OpenMap 4.4.1 was released a day after 4.4, with some
- modifications to the com.bbn.openmap.plugin.esri package.
-
-2001-11-01 Bill Mackiewicz
- * OpenMap 4.4 released.
-
-2001-11-01 Donald Dietrick
-
- * PropertyConsumer handling has been very significantly improved,
- thanks to a code submission from Bernhard Reiter and Kai Lessmann.
-
- First, there is a new package, called
- com.bbn.openmap.util.propertyEditor. It contains generic
- PropertyEditor classes, and an Inspector class that uses the
- PropertyConsumer's methods to provide an interface to set and
- modify properties.
-
- You can run the Inspector as an application on any
- PropertyConsumer class to test out what that interface looks like,
- and to see if there are any problems loading the Inspector with
- the contents of the PropertyConsumer's properties.
-
- The Inspector exects that the properties returned in the
- PropertyConsumer.getProperties() method will be scoped, i.e. that
- if a property prefix is used, the properties will also have that
- prefix in front of the properties.
-
- The Inspector uses the PropertyConsumer.getPropertyInfo() method
- of classes to get information about the properties being
- displayed. The Inspector does not expect that the properties
- returned in this method will be scoped - Just the base properties
- should be returned as keys, with their values being a short
- explaination for what the property represents. This explaination
- is used as a tool tip in the interface. Also in this method,
- properties can be set with the key having a '.editor' suffix, with
- the value of the property being the fully qualified class name of
- the PropertyEditor to use to adjust that property.
-
- So, while a class might return a (prefix.lineColor, AARRGGBB)
- property from the getProperties method, it would return a
- (lineColor, "Color used for lines") property and a
- (lineColor.editor,
- "com.bbn.openmap.util.propertyEditor.ColorPropertyEditor")
- property in the getPropertyInfo() method to use to adjust the
- fillColor property.
-
- The PropertyConsumer now has a EditorProperty string 'editor' and
- a ScopedEditorProperty string '.editor' which makes it easier to
- define PropertyEditor properties on the fly.
-
- The submission also includes a com.bbn.openmap.gui.LayerAddPanel,
- which can be brought up by the LayersMenu, or the LayersPanel. It
- uses a property called openmap.addable to set a list of Layer and
- PlugIn classes that can be created at runtime, and configured
- using the Inspector. Each unique marker name (separate from the
- marker names used in the openmap.layers list) needs to have a
- .class property defined for it (what to instantiate), and a
- .prettyName property (a generic GUI name for the layer). The
- LayerAddPanel provides a place to actually name specific layer
- instatiations, and the prefix for those layers are automatically
- generated (see PropertyHandler changes).
-
- One more note on this - You'll notice that we've changed the
- property definitions so that they *DON'T* include a scoping period
- at the front of them. The PropertyConsumer interface has a
- setProperties(Properties) method, so the PropertyConsumer can be
- configured without a property prefix.
-
- This really applies to developers that configure their layers
- programmically. If you define a Properties object that is only
- used by one Layer (or other PropertyConsumer type) you don't have
- to scope the properties. i.e.
-
- ShapeLayer shapelayer = new ShapeLayer();
- Properties shapeprops = new Properties();
-
- shapeprops.put("shapeFile", shapefilepath);
- shapeprops.put("lineColor", shapefilepath);
-
- // or
- // shapeprops.put(ShapeLayer.shapeFileProperty, shapefilepath);
- // shapeprops.put(ShapeLayer.lineColorProperty, shapefilepath);
-
- shapelayer.setProperties(shapeprops);
-
- You could do this:
-
- ShapeLayer shapelayer = new ShapeLayer();
- Properties shapeprops = new Properties();
- String shapeprefix = "uniqueshape";
- shapeprops.put(shapeprefix + ".shapeFile", shapefilepath);
- shapeprops.put(shapeprefix + ".lineColor", shapefilepath);
-
- // or
- // shapeprops.put(shapeprefix + "." + ShapeLayer.shapeFileProperty, shapefilepath);
- // shapeprops.put(shapeprefix + "." + ShapeLayer.lineColorProperty, shapefilepath);
-
- shapelayer.setProperties(shapeprefix, shapeprops);
-
- But you don't have to if the shape layer is the only layer using
- the Properties object.
-
- But, if you use the Properties object for all of your properties
- definitions, then you have to use the prefix to ensure that the
- layer picks up the properties meant for it.
-
- * The PropUtils had methods added that are really helpful to use
- for the PropertyConsumer methods.
-
- String prefix = PropUtils.getScopedPropertyPrefix(PropertyConsumer ps);
- String prefix = PropUtils.getScopedPropertyPrefix(String prefix);
-
- Either return an empty string ("") for null prefixes, or the
- prefix with a period attached. Either way, the properties in
- getProperties can be defined by calling the method above, and
- simply putting it in front of the property name.
-
- * The PropertyHandler has been updated to keep track of
- usedPrefixes, and can test and modify suggestions for new prefixes
- if asked. The LayerAddPanel uses this when new layers are created
- at runtime.
-
- The PropertyHandler has also been modified to take a PrintStream
- and the MapHandler, and create a openmap.properties file. It can
- also read in a openmap.properties file at runtime (which is
- essentially loading a new map). The application components are
- not affected by the contents of a newer openmap.components
- property in the new file. Just the layer properties are used, and
- the projection settings.
-
- When a new openmap.properties file is created, the
- openmap.components property that was set in the lauched properties
- file is reused. New components that may have been added at
- runtime have not been added. This is a temporary workaround to
- the problem that occurs when pulling objects out of the MapHandler
- - they do not come out in any specific order, which really affects
- the look of any application that may try to load components with
- that order. That's also why the application ignores the
- openmap.components property of any openmap.properties file loaded
- later.
-
- The FileMenu was modified to have 'Load Map...' and 'Save Map...'
- options, using the SavePropertiesMenuItem.
-
- * Modified for PropertyConsumer compliance. These are layers ready to
- be created at runtime:
-
- - DrawingAttributes.java (just so you know for your layers)
- - EarthquakeLayer.java GraticuleLayer.java (also uses Inspector for
- runtime modifications via palette)
- - com.bbn.openmap.layer.location
- - com.bbn.openmap.layer.rpf
- - com.bbn.openmap.layer.shape
- The areas package has not been updated for PropertyConsumer
- methods yet. However, the AreaHandler was reworked to provide
- better access and control over the area definitions.
-
- * The PlugInLayer and PlugIn were updated to use the
- PropertyConsumer interface, and they resolve between themselves
- how to handle properties in the different situations where the
- PlugInLayer was created and defined the PlugIn, or when the PlugIn
- was created and the LayerAddPanel or LayerHandler created the
- PlugInLayer for it.
-
- This makes a difference on how properties are represented in
- openmap.properties files saved by the application.
-
- The WebImagePlugIn abstract class was created, which defines code
- shared by the shis and wms plugin pacakges. This code really
- affects the PropertyHandling, and the palettes, which take
- advantage of the Inspector to allow modification of their
- parameters at runtime. There is also a palette option to see what
- the query to the web server looks like before it is actually sent.
-
- * The Layer class has been updated so that it contains the handle
- to its palette, instead of having the LayerPane manage
- it. Layer.showPalette() and Layer.hidePalette() methods have been
- added, and the gui components have been modified as well.
- ComponentListeners to the Layer will receive events about the
- palette, too, telling them when the palette has been activated or
- hidden.
-
- The Layer is now an ActionListener in order to receive commands to
- show and hide its palette. It also can receive commands
- (Layer.DisplayPropertiesCmd) to bring up the Inspector, which uses
- the PropertyConsumer interface to set the layer's properties.
-
- The Layer.RedrawCmd has been defined, too, but individual layers
- have to code how to specifically react to it.
-
- The Layer has a new property, autoPalette, which can be used to
- tell if the palette for a layer should be turned on by default.
- The MapBean has a new method, MapBean.showLayerPalettes(), that
- calls Layer.showPalette() on all layers with this property set to
- true. MapBean.hideLayerPalettes() turns them all off.
-
- The OpenMap application now calls this new MapBean method at
- startup. The result - you can have certain layer palettes come up
- automatically at application startup by setting a layer property.
-
- The Layer had a findAndInit(Object) method added, which is called
- by findAndInit(Iterator) when objects are added to the MapHandler.
- See comments on changes to MapHandlerChild on why this is good.
-
- Property handling in general for layers is improving. With the
- addition of the Inspector, you should make sure that all the
- PropertyConsumer methods in your layers are implemented, and that
- calling setProperties() in your layer reconfigures it if needed. Not
- all of the OpenMap layers have been modified yet to act properly in
- this way, but many have.
-
- * The LayerHandler was updated to be able to create PlugIn
- directly from the openmap.layers property list. If the
- LayerHandler finds a PlugIn, it will automatically create a
- PlugInLayer for it and hook it up to the PlugIn. Likewise, the
- properties for the PlugIn can be scoped in the properties file
- exactly like a layer:
-
- plugin_markername.class=com.bbn.openmap.plugin.PlugIn
- plugin_markername.prettyName=Example
- plugin_markername.=
-
- The former way to add PlugIns, within a PlugInLayer defined in the
- openmap.layers list, still works as before.
-
- * The MapBean has been altered to provide an option to release
- Layers that have been removed from it right away. Previously, the
- MapBean actually held on to layers that were removed, in case they
- were added again without the projection changing. This prevented
- the layer from doing unnecessary work just by being toggled on and
- off the map, but we got requests to make this an option.
-
- * Added a method to the MapHandler (BeanContext) called get(String
- classname), that looks at its contents and returns an object of
- that type. Handy for getting the MapBean, LayerHandler, etc. or
- any SoloMapComponent from the MapHandler when it's actually
- needed, without maintaining a constant handle to it. Kinda handy
- for finding the first one of objects that may have sibling types,
- but not so much.
-
- * MapHandlerChild class has the findAndInit(Object) and
- findAndUndo(Object) method added. This lets you override the
- findAndInit(Object) method in MapHandlerChild subclasses, and be
- able to provide the super class with objects from the MapHandler,
- too. Previously, this was not possible because using the iterator
- clears it and it couldn't be used in different places. Likewise,
- the findAndUndo(Object) method was added for objects being removed
- from the MapHandler.
-
- * The OMCircle was modified to handle rotation! The rotation
- angle, in radians, can defined with setRotationAngle(double), with
- zero being due West. Positive and negative values can be used.
-
- The EditableOMGraphic doesn't really handle the rotation angle
- completely. You can't modify the angle at all, and the grab
- points for the OMCircle actually show up where they would be with
- a rotation angle of zero. But, adjusting the position of the grab
- points does modify the dimensions of the rotated OMCircle, and you
- can move it around. The EditableOMGraphic has commented-out code
- to render the points properly, but the MouseEvent locations have
- to be translated in order for them to be effective. Releasing
- this class as it is was the lessor evil of the alternatives.
-
- --- This part is important!! ---
-
- The rotation was accomplished by changing the internal
- representation of the OMCircle to be based on java.awt.Shape
- objects, and then using AffineTransforms on the shape during
- generation. This actually made the render and distance methods
- become very generic, not relying on rendertype or what kind of
- shape was being rendered. This will be a change that all
- OMGraphics will be headed toward very soon.
-
- Also, the OMCircle has a new Shape[] getShapes() method, which
- lets you get the generated shape objects and then use them for
- some spatial analysis operations that the java.awt.Shape interface
- provides. This is really powerful, and look for this to become
- part of the generic OMGraphic API. This method returns an array
- of shapes because in some small world situations (really zoomed
- out) there are multiple Shape objects that are used to represent
- the graphic wrapping around the other side of the earth.
-
- * Added the GoToMenu, which lets you saved named Projections,
- consisting of projection type, center location and scale. You can
- add to the list dynamically, and the locations get saved to the
- openmap.properties file when a map is saved. You can also add
- locations by modifying the properties for the GoToMenu class.
-
- * Added the Esri plugin package, submitted by Doug Van Auken.
- This package includes and EsriLayer and EsriPlugIn, and has
- support for reading and writing shape files (shp) and their
- supporting files (shx and dbf). The EsriPlugIn was added to take
- advantage of the SwingWorker in PlugInLayer, and also has code
- that displays the contents of the dbf attribute file in the layer
- palette, and will highlight graphics on the map corresponding to
- any selections in the table. Likewise, and graphics on the map
- selected (in Gestures mouse mode) will hightlight entries in the
- table.
-
- There will be more improvements coming to the package soon. Among
- them, support for sorting the table, use of the BinaryBufferedFile
- for buffered input, and increased support for distinctive coloring
- for individual graphic.
-
- The package also contains a sample applet and application to
- demonstrate how to use the different capabilities of the
- components.
-
- * OMGraphic has the get*Color methods undeprecated. If the Paint
- objects used are not Color objects, null is returned. This was
- done to save casting trouble.
-
- * OMText was updated to paint the boundary rectangle correctly.
-
- * The DistanceMouseMode was modified to be a PropertyConsumer, and
- it's parameters can be set in the openmap.properties file for
- customized configuration - units, etc.
-
- * The ControlMenu was modified to let you toggle the ToolPanel on
- and off.
-
- * Bill Huff submitted several memory cleanups in LayerPane and
- LayersPanel, to help with GC'ing layers that were removed from the
- application.
-
- * The NavigatePanel was updated to provide methods to set the
- coordinates the map goes to when the center button of the rosette
- is pressed. By default, it still goes to the starting
- coordinates.
-
- * The OMToolSet has properties that can be used to set which
- components are visible on the ToolPanel - the NavigatePanel,
- ZoomPanel and ScalePanel are optional, but on by default.
-
- * The ImageServer now has a main method that lets you pass it an
- openmap.properties file, and it kicks out an image file. You need
- to have a couple of extra properties defined, like what formatter
- to use, in the properties file.
-
- * DMSLatLonPoint longitude wrapping bug fixed.
-
- * The status lights of the InformationDelegator where made to be
- buttons that bring up the palette of the corresponding layer's
- palette.
-
- * The TerrainLayer's LOSGenerator algorithm was improved via a
- submission from Mark Wigmore.
-
-2001-08-23 Bill Mackiewicz
-
- * Changed the WebBrowser class to use the File methods for
- creating unique and temporary files for browser display.
-
- * Added the MIFLoader improvements submitted by Scott Nevin from
- Agilent, which allows the loader to handle lines.
-
- * Made the Location showName and showLocation variables be true by
- default, so that Locations will show up as expected. The
- LayerHandlers have been updated to set these to be false so the
- layer settings will work as expected.
-
- * Updated the raster Location objects to use the horizontal label
- buffer, so that the text location gets updated properly when the
- entire location changes.
-
- * Added a progress bar for the DTEDCoverageManager, so progress
- can be seen when the DTEDCoverageLayer is bulding the coverage file.
-
- * Updated the DayNightLayer to be able to have the overlay time set.
-
- * Took out the supposed XWorkaround from windows and mac
- environments. The coordinate clipping changed how the map was
- being rendered at some large scales.
-
- * Added the OMDrawingToolLauncher, which calls the DrawingTool
- with setting to create new OMGraphics. It's a Tool, so it can be
- enabled by clicking on the pencil icon.
-
- It uses the BeanContext to find all the EditToolLoaders, which
- know how to use EditableOMGraphics to manipulate OMGraphics. It
- also finds all DrawingToolRequestors, which are components able to
- receive OMGraphics. The OMDrawingToolLauncher lets you choose
- which component will receive the finished graphic.
-
- Added the DrawingToolLayer as an example of how to catch graphics
- from the OMDrawingToolLauncher.
-
- * Added support for creating and editing polygons and polylines.
-
-2001-07-27 Donald Dietrick
-
- * Added a workaround for Applets trying to access data that was
- being stored in its own jar file. See the
- com.bbn.openmap.io.AppletDataNugget class for more information.
-
- * Fixed a bug in the
- com.bbn.openmap.layer.util.LayerUtils.getResourceOrFileOrURL
- method, where files were not being handled properly for Windows
- file systems.
-
- * Fixed a bug in the EarthImagePlugIn that was coloring space, in
- the Orthographic projection, to the color of the center pixel.
-
- * Fixed a memory leak in the VPF package, started by the
- FeatureClassInfo object. Thanks to Tom Peel for finding this and
- reporting it.
-
-2001-07-12 Bill Mackiewicz
- * OpenMap 4.2.1 released.
-
-2001-07-11 Donald Dietrick
-
- * Fixed problems with 'make install' with respect to the previous
- changes in the share directory structure.
-
- * Updated the WMSPlugIn with changes submitted by Christof Krug,
- with the proper TRANSPARENT request parameters and other changes.
-
- * Added statements to the PlugIn package that says that the PlugIn
- is responsible for generating its OMGraphics. Updated some of the
- PlugIns to do that.
-
- * Modifed MakeToc in the RPF package, and some of the other RPF
- components to make MakeToc a little more robust with older files.
- Added output statments to indicated when runtime options should be used.
-
- * Added an openmap.Debug property to the PropertyHandler, which
- takes a list of debug tokens and adds them to the Debug
- Hashtable. This turns those Debug statements on throughout the
- code. It's the same thing as adding -Ddebug.*token* to the start
- command, except now you can add an openmap.Debug=*token* in the properties.
-
-2001-06-19 Bill Mackiewicz
- * OpenMap 4.2 released.
-
-2001-06-18 Donald Dietrick
-
- * Added the com.bbn.openmap.io package, and moved all the I/O
- classes from com.bbn.openmap.util into it. BinaryFile was also
- reworked. This is BIG news. BinaryFile now uses a new
- InputReader class to access data files, instead of using a
- RandomAccessFile object. There are three new InputReaders:
- FileInputReader, JarInputReader, and StreamInputReader. A
- BinaryFile (and the BinaryBufferedFile) can be used to access a
- local file, a file contained in a jar file, or a URL.
-
- The constructor for a BinaryFile takes a string argument which can
- be an absolute path to a file, a relative path to a file, or a
- URL. The BinaryFile will use the CLASSPATH to find the file for a
- relative path. If the file can be found on the local file system,
- a FileInputReader (RandomAccessFile) will be used internally. If
- the file is found in a jar file (the path from the internal root
- of the jar should be used), the JarInputReader will be used. For
- paths starting with 'http:', the StreamInputReader will be used.
-
- The Shape, RPF, VPF and DTED packages have all been modified to
- use the BinaryFile, and this data can now be accessed in a variety
- of ways.
-
- There are some issues: Windows users have to use forward slashes
- in their paths (/), even for local files. We're still trying to
- figure out how to get applets to use data stored in a separate jar
- file in the codebase - but unpackaged data in the codebase works.
- Some packages may need to be optimized for better network
- performance - they were written for random access, so they may not
- be so efficient when it comes to dealing with streams.
-
- * Added the com.bbn.openmap.plugin package, replacing the
- com.bbn.openmap.layer.plugin package. Plugins have been
- redefined, and are the easiest way to get data on the map.
- Plugins must implement the com.bbn.openmap.plugin.PlugIn
- interface, but classes that extend the AbstractPlugIn can provide
- data with only one method being written - that method takes a
- projection and provides an OMGraphicList. PlugIns are an object
- that hook up to a PlugInLayer, or to a server, or any other object
- that needs an OMGraphicList. PlugIns can be written
- to receive MouseEvents and/or provide a GUI, and they can work
- with the BeanContext to contact other objects in the application.
-
- * Modified the actions of the OMDrawingTool. When edits/creations
- are completed on the graphic, clicking on the map brings up a
- popup menu with options on what to do with the graphic.
-
- * Fixed the LLXY projection, which happens to be the SRS EPS 4326
- projection that can be used with a OGC Web Map Server.
-
- * Updated the LayerUtils.getResourceOrFileOrURL method, so it
- doesn't break on Windows file URL pathnames.
-
- * ProfileGenerator in the TerrainLayer has been updated to display
- the profile image in a JFrame, instead of trying to create a
- temporary file to send to the browser. You loose the ability to
- save the image this way, but it makes the layer compatible with
- any environment OpenMap is running in.
-
- * Int the RPF package: Fixed bug in MakeToc that wouldn't let you
- create a A.TOC from multiple RPF directories. Commented out the
- code that checks for updated RPF directories. With the inclusion
- of the new BinaryFile code, this gets to be really cumbersome.
- This will be replaced soon with enchanced RPF directory
- management.
-
- * Fixed a bug in the LocationLayer so that MouseMoved events get
- passed through if they aren't consumed.
-
- * Added methods to DTEDFrame so you can ask it for an image of its
- contents without the DTEDCacheHandler in the way. Also, if you
- run DTEDFrame on a frame file, it will bring up a window with that
- image of the data inside.
-
- * Created the com.bbn.openmap.proj.Length class, which provides a
- class standard for Length units, and coversion methods between a
- given unit type and radians. Modified the MouseModes, OMGraphics
- and Link package to use the Length class.
-
- * Modified the PropertyHandler to look for the given properties
- file in the CodeBase when running in an Applet environment. This
- only happens if it hasn't found any properties elsewhere.
-
- * Modified the Windows environment to use the XWindowsWorkaround
- algorithm for pre-clipping OMGraphics, which gets rid of the
- zoom-in delay on vector graphics.
-
-2001-03-15 Bill Mackiewicz
-
- * OpenMap 4.1.1 released.
-
-2001-03-15 Donald Dietrick
-
- * Fixed memory leak within LayerHandler. Layers were being
- referenced by the LayerPane after they were removed from the
- LayerHandler, and not being gc'd.
-
- * Added getName() to the projection classes, which provides their ID.
-
- * Fixed link in OMPoly java doc.
-
- * Fixed bug for initial limits of bounding polygon. This was
- causing more data than needed to be sent back by the LinkServer.
- Thanks to Marc Bucciarelli for finding this and sending the fix.
-
- * Added the capability in the SimpleHttpImageServer and
- ImageServerUtils to be able to handle a background color request
- (BGCOLOR) and transparency settings (TRANSPARENCY) in SHIS
- requests. These variables are in compliance with the OpenGIS
- Consortium Web Mapping Server specification. Another compliance
- change is the background color for the SHIS maps is now white -
- you have to specify the color you want if you want it to be different.
-
- * Added methods to objects in the image package that let you set
- the colormodel for BufferedImages.
-
- * Fixed bug in quadtree Rect and Node, where the distance
- algorithm wasn't correct.
-
-2001-02-27 Bill Mackiewicz
-
- * OpenMap 4.1 released.
-
-2001-02-26 Donald Dietrick
-
- * Added a package name to the com.bbn.openmap.examples.crew
- example.
-
- * Modified the PropertyHandler to use the openmap/share directory
- by default to look for openmap.properties, and it adds the share
- directory to the classpaths the Environment knows about. If you
- are using the openmap directory in your classpath, then files and
- other resources will be found in the share directory
- automatically. If you are using the openmap.jar file, then
- resources will be found in the share directory, but files need to
- have share/ added in front of their names (for shape files, for
- example).
-
- * Modified the Environment and projection objects to handle the
- custom background color a little better.
-
-2001-02-23 Don Dietrick
-
- * Added a ToolTip display ability to the InformationDelegator.
- The Layer has convience functions to show and hide tool tips on
- the map, and the InfoDisplayListener interface had methods added
- to accomidate tool tip requests. This was inspired by another
- Colin Mummery submission, but slightly modified.
-
- * Modifed the DrawingTool API. Components are no longer passed in
- a request to create or edit an OMGraphic. Instead, a
- DrawingToolRequestor interface has been defined, where the
- requstor will be notfied when an OMGraphic is completed. The
- OMGraphic is provided at this time too, in addition to be provided
- at request time. Methods were also added the DrawingTool
- interface to supress the GUI from appearing, which will restrict
- the modifications of the graphic attributes.
-
- * Added more improvements to the VPFLayer where, when
- VPFLayer.searchByFeatures is set to true, different feature types
- can be colored individually. The palette also provides an
- interface to change those settings on a feature by feature basis.
-
- * Added an ETOPOJarLayer from John Watts from nextjet.com. Also
- added his improvements to the Mercator and Orthographic projections.
-
- * Added the MapHandlerChild abstract class, which shows all the
- methods and the BeanContextChildSupport object that are needed to
- create an object that uses the MapHandler to find other objects.
-
- * Added Colin Mummery's MapInfo Layer, at com.bbn.openmap.layer.mif.
-
- * Added the build.xml file, which is a build file for the ant
- package available at http://jakarta.apache.org/ant. Ant is
- great. It is a cross-platform Java project build tool, and is
- easy to install and use. Highly recommended.
-
-2001-02-06 Donald Dietrick
-
- * Fixed LocationLayer bug where search direction on the graphic
- list was the same as rendering direction, when it should have been
- opposite, so that graphics on top are found first.
-
- * Fixed the Makefile structure to include the drawing tool package.
-
- * The MouseDelegator had a bug fix installed to prevent a null
- pointer exception when setActive was called without a current MouseMode.
-
- * Updated the VPFLayer and vpf package components with several
- improvements. Multiple coverage types can be handled on a single
- layer. With the VPFLayer.searchByFeatures property set to true,
- the CoverageTable uses the Feature Tables and the Thematic Index
- to find features, which avoids a problem exposed by the DNC
- database where the tile data doesn't contain feature type
- information. With searchByFeatures set to true, different feature
- types can be rendered individually. The VPF components were also
- tuned for better performance and memory management. Fixed a bug
- with the old VPF paradigm where skip arrays in the warehouse were
- not the same across VPF paths, and it affected rendering.
- Resetting the warehouse skip arrays between paths fixed this.
-
-2001-01-08 Don Dietrick
-
- * Added the ProjectionStack, which is a projection listener that
- remembers projections to reset to the MapBean when triggered.
- Listens to ProjectionStackTriggers (ProjectionStackTool) to tell
- it to go back and forth through the stack as applicable.
-
-2000-12-22 Bill Mackiewicz
-
- * Modified the ShapeLayer and ESRI graphic objects to use the
- DrawingAttributes object for rendering parameters, and added the
- DrawingAttributes GUI to the ShapeLayer palette. You can alter
- the appearance of the ShapeLayer graphics at runtime.
-
-2000-12-18 Don Dietrick
-
- * Added the com.bbn.openmap.layer.terrain layer, which provides a
- LOS mask and path elevation tool. This layer will be modified in
- future versions of OpenMap.
-
- * Added a URLDecoder to the SimpleHttpImageServer, so it can
- handle HTML encoding of a map request string.
-
- * Added a method (setAction(boolean)) to the MouseModes, which
- lets it know when it has been made active or inactive.
-
- * Added the PaintListener interface to the com.bbn.openmap.event
- package. The PaintListener interface can be used when a object
- needs to know when another object has been painted. For instance,
- the OMDrawingTool is a PaintListener to the MapBean, so it knows
- when to update the edited Graphic in case it's about to be
- over-painted.
-
- * Added the PropertyConsumer interface, which lets the
- ComponentFactory know that an object should receive the properties
- from the PropertyHandler when it is created. The PropertyConsumer
- interface also a method that let an object describe what
- properties can be received by it, and a method to get properties
- from it to describe the current state of the object. This is in
- anticipation of the creation of a editor that will allow for the
- runtime creation and configuration of layers and other objects,
- and for the creation of openmap.properties files, which will
- essential be saving a map for later viewing.
-
- * Modified the VPFLayer to present the new DrawingAttributes GUI
- in its palette. This lets you change the display parameters of
- the layer graphics at runtime.
-
- * Added the com.bbn.openmap.tools.drawing package, which contains
- the DrawingTool interface, and the OMDrawingTool implementation of
- that interface. The OMDrawingTool is a mechanism that interprets
- user gestures to create or modify OMGraphics.
-
- There are new objects in the com.bbn.openmap.omGraphics package to
- help out with this process, centered on the EditableOMGraphic
- class. An EditableOMGraphic is a wrapper class that knows how to
- interpret MouseEvents to initialize or change the location
- parameters of an OMGraphic that it contains.
-
- The EditableOMGraphic uses GrabPoints that can be moved or set.
- When a GrabPoint is moved, the EditableOMGraphic knows how to
- translate the GrabPoint location to a OMGraphic parameter.
- GrabPoints come in different flavors - HorizontalGrabPoints can
- only be moved left-right, VerticalGrabPoints can only be moved
- up-down, and OffsetGrabPoints can maintain a constant distance
- from other GrabPoints. GrabPoints can be shared between
- EditableOMGraphics, in case you want the movement of a GrabPoint
- to modify the parameters of more than one OMGraphic.
-
- The EditableOMGraphic also uses a state machine containing a
- series of states that direct actions resulting from MouseEvents.
- The com.bbn.openmap.omGraphics.editable contains the new
- LineStateMachine and its states. This state machine is used by
- the first instantiated class of the abstract EditableOMGraphic, the
- EditableOMLine. Other EditableOMGraphic instances are
- forthcoming, to manipulate other OMGraphic types.
-
- The OMDrawingTool uses EditToolLoaders, which provide information
- to the DrawingTool on which EditableOMGraphic to use for a class
- name, or OMGraphic. The OMDrawingTool has two main methods that a
- layer or other component calls - create(classname), or
- edit(OMGraphic). Both calls return an OMGraphic that is going to
- be manipulated by the DrawingTool. The DrawingTool handles the
- presentation of the OMGraphic as it's being modified, and becomes
- the active MouseMode. When the DrawingTool is dismissed, the
- calling layer or component already has the OMGraphic, so no
- further action is required programmatically.
-
- The DemoLayer contains addition to its palette that demonstrate
- the OMDrawingTool as it stands.
-
- The OMDrawingTool is not a DrawingLayer. A DrawingLayer will be
- created for the next release using the OMDrawingTool.
-
- * Modified the DrawingAttributes object so that it contains a
- simple GUI to modify its contents (line color, fill color, select
- color, line width, and some line dash selections). Uses the
- OMColorChooser, which extends the JColorChooser to allow
- transparency adjustment for the color as well. Added the
- LineChoice, LineChoiceComboBox and DashedLineComboBox to aid the
- DrawingAttributes GUI interface. Also created the
- GraphicAttributes object, which extends the DrawingAttributes
- object to allow modification of line type and render type of an
- OMGraphic.
-
- * Modifed the com.bbn.openmap.layer.rpf.RpfFrame so that it
- contains the subframe decompression code that used to reside in
- the RpfFrameCacheHandler. Also added an image viewer to the
- RpfFrame that lets you see the image it contains - just run the
- class. Removed the RpfLayer pop-up window that notifies the user
- that the RPF layer requires the CADRG projection. The InfoLine of
- the InformationDelegator displays the information instead.
-
- * Packaged OpenMap 3.7, which is an OpenMap 3.6.2 package with all
- the code that requires jdk 1.2 removed. This package should
- compile without modification with jdk 1.1.X.
-
-2000-10-23 Don Dietrick
-
- * Added the com.bbn.openmap.image.SimpleHttpImageServer, with the
- MapRequestHandler object and a bunch of modifications to the
- com.bbn.openmap.layer.util.http package. The
- SimpleHttpImageServer responds to GET and POST commands,
- requesting an image. The format for the request is the same as
- the OpenGIS Web Mapping Server request, but we have additional
- parameters to handle some OpenMap-specific parameters. This is a
- work in progress, and will grow to become OGC compliant. For now,
- it allows you to run a simple web server that kicks back images.
-
- * Added the PropertyHandler, which is a component responsible for
- managing properties which affect the map. When told, it looks for
- properties in three places, and overwrites the properties
- accordingly - the Resources, the OpenMap config directory (passed
- in as an argument), and in the user's home directory.
-
- The role of the PropertyHandler is important, especially in the
- BeanContext world. It can be told to look for a property called
- "openmap.components", where the value is a space separated list of
- marker names, much like the openmap.properties model for the
- layers. The PropertyHandler can take that list and use the
- ComponentFactory to create objects (defined by the
- markerName.class properties) to add to the Bean Context. If the
- object created is a PropertyConsumer, the PropertyHandler will be
- used to provide the new object with properties.
-
- The PropertyHandler also allows for an "openmap.include" property,
- which allows you to define a list of marker names for URLs. These
- URLs, defined by the markerName.URL property, provide a way to
- have a property file read and its values loaded BEFORE the current
- openmap.properties file is loaded. This lets the current
- properties override anything in the include properties file.
-
- You'll notice these changes have a profound effect on the ease in
- which you can create applications. If a component handles the
- Bean Context correctly, and is wiring itself up to other objects
- it needs via those methods, then you can add the component in the
- properties file, and that change will be reflected within the
- application without recompilation. The MouseDelegator looks for
- MouseModes, the LayerHandler looks for layers, etc., so that these
- additions are pretty simple. The ToolPanel looks for objects
- implementing the Tool interface, so that its GUI will be added to
- the panel below the MenuBar. The MenuBar looks for MenuBarMenus
- to add to itself, so adding/changing menus is pretty easy, too.
-
-
-2000-10-19 Prakash Manghwani
-
- * OpenMap components now use Bean Containment and Services
- protocol, popularly know as BeanContext. The components look for
- services and objects that it needs.
-
- * Modified OpenMap in com.bbn.openmap.app package so that it
- demonstrates the ease of creating a reconfigurable Mapping
- application from a properties file.
-
- * Added new context enabled GUI extensible widgets that can be
- added to OpenMap Mapping application from properties file thereby
- providing the user with a choice of selecting only the GUI widgets
- it needs.
-
-2000-08-24 Bill Mackiewicz
-
- * OpenMap 3.6.2 released.
-
-2000-08-23 Don Dietrick
-
- * Included the upgraded DistanceMouseMode as submitted by Ringo Wathelet.
-
- * Added the UTMPoint and DMSLatLonPoint, as a contribution from
- Colin Mummery. Also included the Ellipsoid class in the
- projection package.
-
- * Added a redraw button to the VPFLayer.
-
-2000-08-22 Don Dietrick
-
- * Added the ArgParser class to the utils directory, which is a
- very simple attempt at parsing String[] argv arguments and assigning
- string values to certain option keywords.
-
- * Ported the code to create a A.TOC file to java, and it resides
- in a class called com.bbn.openmap.layer.rpf.MakeToc. Lets you
- create A.TOCs with absolute file paths, which allows you to create
- a single A.TOC for multiple RPF directories without merging the
- directories.
-
- * Fixed a couple bugs in the LayerHandler, that didn't update the
- LayersPanel properly when a layer was deleted from the available
- layers list. Now check for null edit button before trying to add
- it to the LayersMenu.
-
-2000-08-08 Bill Mackiewicz
-
- * OpenMap 3.6.1 released.
-
-2000-08-03 Don Dietrick
-
- * Added the openmap.BackgroundColor property, which lets you set
- the color of the "ocean" for the MapBean. If it's not set, then
- the ol' default blue is used.
-
- * Added the DistanceMouseMode, which was a code submission from
- Ringo Wathelet from the DSTO in Australia.
-
- * Fixed the quadtree rectangle test for bounds checking, thanks to
- code supplied by Paul Tomblin. Michael Los sent in the changes to
- make the quadtree classes serializable.
-
- * Added a RpfLayer redraw button on the palette, to redraw the
- data with a transparancy change.
-
- * Created an OverviewMapHandler, which manages another MapBean
- that listens to a source MapBean to show a map at a different
- scale. The OverviewMapHandler lets you set it's layers, the
- MouseMode to use (if desired) and a status layer that lets you
- draw status graphics on the map. The default status layer simply
- draws a box on the map reflecting the coverage of the main map.
-
- * Changed the appearance of the OpenMap application, with new
- icons and buttons to bring up the LayersPanel and OverviewMap.
- The mouse modes are now shown with a pop-up menu.
-
- * Created the com.bbn.openmap.layer.util.DrawingAttributes object,
- which can read Properties to create colors and other Java2D
- drawing attributes. OMGraphics parameters can be loaded directly
- from a DrawingAttributes object.
-
- * Modified the VPFLayer so that you can specify how you want the
- graphics represented. You can specify line, text, select, and
- fill colors, as well as line dash patterns and images to use for
- area fill patterns.
-
- * Further modified the inner workings of the RpfLayer. Fixed a
- bug with the way cached subframes were allocated for new
- subframes, and fixed a couple subtle memory leaks.
-
- * Overhauled the LayerHandler, making it the central object
- managing all Layer objects. The LayersMenu and LayersPanel listen
- to the LayerHandler for information about what layers are
- available. The visibility of the layer now determines if the
- layer is added to the MapBean to be part of the map, and the
- LayersManu and LayersPanel components listen to the layer
- Component visibility status to list if a layer is part of the map
- or not. The Layer now has a slight hack in them that keep track
- of ComponentListeners, and follow through to the listeners to let
- them know if the layer has been hidden (setVisible(false)).
-
- * Added the etopo layer package, which was submitted from Joel
- A. Rand. It displays the ETOPO world elevation data set, and
- provides a really cool view of the world.
-
-2000-08-01 Bill Euerle
-
- * Fix a bug that prevented DTEDFrame objects from getting garbage
- collected, limited the frame cache size, and fixed an off-by-one
- bug that caused an extra row of frames to get loaded. The cache
- memory changes were a result of a suggestion from Davis Gillespie,
- formerly from General Dynamics.
-
-2000-07-05 Bill Euerle
-
- * Removed deprecated OMGraphic methods setGraphicType(int) and
- getGraphicType. setGraphicType didn't make much sense, and (obj
- instanceof OMBitmap) can be used in place of the second method.
- Deprecated the OMGraphic constructors that took a graphictype, and
- added new constructors that don't take a graphic type. Although
- now unused, the GRAPHICTYPE_* constants in OMGraphic will stay
- around for the forseeable future.
-
-2000-06-01 Don Dietrick
-
- * Released OpenMap 3.5
-
-2000-06-01 Bill Mackiewicz
-
- * Added thinned VPF area and edge data to the share/ directory as
- an alternative to the existing DCW shape files in that directory.
-
-2000-05-31 Don Dietrick
-
- * Added a palette option to the RpfLayer to limit the chart
- selection to the one currently selected. If you find a chart type
- you like, you can engage the lock, and only charts of that
- particular type will be displayed.
-
-2000-05-25 Don Dietrick
-
- * Removed the csvLocation package. It has been replaced by the
- location/csv package.
-
- * Updated the ImageGenerator code with bug fixes and hardened the
- thread model.
-
- * Updated the ImageServer to have a method that uses the
- ProjectionPainter interface. This will help with some of the
- threading problems reported with the ImageServer.
-
- * Added the ProjectionPainter interface. The ProjectionPainter
- takes a Projection and a java.awt.Graphics object, and renders the
- applicable OMGraphics onto the java.awt.Graphics map. The layers
- have been updated to implement this interface, providing a path to
- avoid the Swing threading model that the Layers usually use.
-
- * Added a File->Save As->JPEG option to the MenuPanel. You can
- save the current OpenMap image as a JPEG. You can also modify the
- MenuPanel to use other ImageFormatters, too.
-
-2000-05-17 Don Dietrick
-
- * Modified the arrowhead output statements to be Debug statements,
- instead of constant output.
-
- * Added border fix to OpenMap applet as suggested by Mark
- Bucciarelli.
-
-2000-05-16 Don Dietrick
-
- * Modified the RpfLayer to not burn cpu cycles on the
- RpfCoverageTool if the tool is not in use. Changed the coverage
- property so that the tool is active by default, accessable via the
- RpfLayer palette.
-
-2000-04-05 Don Dietrick
-
- * Added methods in the ImageServer that lets it act as the
- ImageReceiver. This lets you ask it for an image directly,
- instead of using it to load an ImageReceiver.
-
-2000-04-01 Don Dietrick
-
- * Fixed timing bug in ImageGenerator that caused it to hang when
- the same projection was provided twice in a row.
-
-Thu Mar 30 12:38:32 2000
-
- * omGraphics/OMText2D.java: added an OMGraphic that supports
- rotated text. [Requires the Java2D API.]
-
-2000-03-30 Don Dietrick
-
- * Modified the OMGraphicList select() and deselect() method
- behaviors - they now call selectAll() and deselectAll().
-
- * Added the ArcCalc object to the com.bbn.openmap.omGraphics.util
- package, which lets you add arcs to OMLines that are set with XY
- coordinates.
-
-
-Fri Mar 24 12:41:58 2000
-
- * Deprecate OMGraphic.setGraphicType(int) and
- OMGraphic.getGraphicType(). instanceof returns the same type of
- information as getGraphicType(), and setGraphicType() doesn't
- really change the type (OMPoly, OMCircle, ...) of a graphic, so
- its somewhat useless. OMGraphic.graphicType was made private
- (previously protected) so it can also go away when set/get go
- away.
-
-2000-03-09 Don Dietrick
-
- * Modifed the RPF package. Fixed the transparancy problem, the
- layer now responds correctly to transparancy changes and
- settings. The RpfFrameCacheHandler now tests for colortable
- reusability based on the TOC entry number, instead of the map
- type, since there is the possibility, with MM map types, that the
- chart designator may be inaccurate, especially with MM map charts
- that represent several different map chart types.
-
- * Modified the OMRaster to handle transparancy correctly.
-
- * Modified the image package, namely the ImageMaster, the
- ImageServer, and the ImageGenerator. The ImageMaster and the
- ImageServer now reuse layers across ImageServers, when they can.
- The ImageServer now reuses the ImageGenerator. In addition, the
- ImageServer can have it's layer array modified, and requests can
- be made with a bit mask representing which layers should be turned
- on/off for the map image.
-
-2000-02-28 Don Dietrick
-
- * Released OpenMap 3.4
-
-2000-02-25 Donald Dietrick
-
- * Added the mapIt example, a contribution that's pretty similar to
- the ImageMaster class.
-
- * Added the nexrad/NextradLayer, which is a contribution that
- draws the rainfall over an area as stored in a nexrad file.
-
-2000-02-24 Donald Dietrick
-
- * OMRasterObject was modified to trim unused pixels from itself
- before upscaling itself, instead of relying on the windowing
- system to clip the unused image.
-
- * Added the CSVInfoFile to the com.bbn.openmap.layer.shape
- package, which can read in and parse a csv file created from a
- shapefile's .dbf file. This CSVInfoFile is used by the areas
- package. Also, the shape graphics have been modified to handle
- Java 2D drawing attributes, and the SpatialIndex object can be
- given an ImageIcon to use for Point graphics.
-
- * Modified the OMGraphic2D objects to handle fill patterns, using
- TexturePaint objects. Also made them keep track of the
- modifications they make to the java Graphics object so that non-2D
- OMGraphics don't pick up those patterns and strokes by mistake.
-
- * Created the com.bbn.openmap.layer.location package, which takes
- the place of the deprecated csvLocation package, and isolates how
- the locations get created. Added the AbstractLocationHandler,
- thanks to a suggestion from a user. This package was actually
- included in the last OpenMap delivery, unannounced. The location
- package has the option of working with the DeclutterMatrix.
-
- * Modified the DeclutterMatrix to work more accurately with text.
-
- * Added the com.bbn.openmap.image.BufferedImageHelper and
- com.bbn.openmap.image.ImageHelper, which assist in creating and
- manipulating image pixels, especially BufferedImages. Moved the
- JPEGHelper to the image package from the util package.
-
- * Took out some funky alignment statements from some of the GUI
- tools, making them align correctly.
-
- * Modified the RpfLayer to not query the RpfFrameProvider for
- coverage tool information when the coverage tool was not being
- used. Fixed a problem reading in CIB A.TOC files from NIMA. The
- directory name lengths are incorrectly listed in the file, and the
- files where not being found. Added the indexed image capability
- to the RpfFrameProvider interface, which really helps speed in the
- com.bbn.openmap.layer.rpf.corba implementation for LANS.
-
- * Added the capability for the OMGraphicList to be able to
- read/write serialized graphics to/from streams. Helps the
- CacheLayer.
-
- * Added the com.bbn.openmap.shape.areas package, which lets you
- associate a key and a name from a column in a csv file to the
- graphics in a shapefile. The AreaHandler allows you to ask for
- all the graphics in the shapefile that have the same key, as well
- as define special drawing attributes for specific graphics in the
- openmap.properties file (or any other set of properties sent to
- it). The AreaShapeLayer uses the AreaHandler, and can respond to
- gestures by displaying the defined name of the graphic in the
- information line when the mouse is passed over it. The drawing
- attributes for the graphics can include using an image to set a
- texture for the fill pattern of a graphic - this requires JDK 1.2.
-
- * Modified the com.bbn.openmap.util.Debug object to be able to
- direct output and error statements to various places, including
- log files. Modified several components and layers to write their
- debug statements to the Debug.output() method, and their error
- statements to the Debug.error() method. More changes of this type
- to the source code is needed - just didn't get around to changing
- it all.
-
- * Added the openmap/contrib directory, which holds code that
- OpenMap components need that we didn't write. Added the Acme
- (http://www.acme.com) image encoders for JPEG, GIF and PPM image
- formats to this directory. Added the ImageFomatters to the
- com.bbn.openmap.image package that use the Acme encoders.
-
- * Added the ImageServer and ImageMaster, which help create
- specific images. The ImageServer manages the ImageGenerator and
- the output of the image. The ImageMaster uses ImageServers to
- define what you want on a map, the image format you want it in,
- and where you want it written when it's done.
-
-1999-11-03 Bill Mackiewicz
-
- * Released OpenMap 3.3.5
-
-1999-11-01 George Keith
-
- * Added CacheLayer.java to layers directory. CacheLayer.java will
- read and display serialized omGraphics from a file specified in
- the properties.
-
-1999-09-30 Bill Mackiewicz
-
- * Updated memory management for the RPF package. The subframe
- caching works better in a memory-restrictive environment.
-
- * Added the com.bbn.openmap.image package. Includes the
- ImageServer, which uses an openmap.properties file and a
- projection to tell an ImageGenerator to create an image. This
- image is in the format specified by the ImageFormatter.
-
- * Added the LayerHandler to the gui package. Layers can be added
- and removed on the fly.
-
-1999-09-07 Donald Dietrick
-
- * Added the corba package for a RpfFrameProvider. Included is the
- Corba RpfFrameProvider client, the Corba RpfFrameProvider server,
- and the idl that defines their interface. The Rpf Subframe data is
- transferred betweent the client and server in JPEG format. A
- CorbaRpfLayer was created to add a palette widget that lets you
- control the jpeg image quality, and thus size, during
- client-server transfer. The JPEG encoding and Decoding requires
- the com.sun.image.codec.jpeg package. Thie new package has only
- been tested on jdk1.2 with Visibroker 3.3. The jdk1.2 rt.jar file
- had the CORBA classes removed.
-
- * Overhauled RPF layer with a new separation of subframe caches
- and frame caches. Introduced the RpfFrameProvider interface,
- which isolates the RPF frame cache. The RpfFrameProvider can be a
- local version of the RpfFrameCache handler, or can also be some
- sort of server. All parts of the package have changed, and are
- incompatable with past interfaces.
-
-1999-08-25 Bill Mackiewicz
-
- * Released OpenMap 3.3.3
-
-1999-08-17 Bill Euerle
-
- * Added additional projections to that support views (projections
- whose parameters are recalculated when panning the map)
-
-1999-08-06 Allan Doyle
-
- * Improved CSVLocationLayer to read values from a
- URL. (file:/foo.csv or http://foo.com/foo.csv)
-
-1999-08-05 Allan Doyle
-
- * Incorporated BufferedMapBean changes to speed up refresh and
- fixed a NullPointerException when it's used in a
- JInternalFrame. Thanks to Joe Warzecha at LLNL.
-
-1999-07-29 Thomas Mitchell
-
- * Added share/omapplet.html as a sample html file for running
- OpenMap as an applet via the Java Plug-in.
-
- * Added FAQ section 4, OpenMap as an Applet discussing the hows
- and whys of running OpenMap as an Applet.
-
-1999-07-21 Allan Doyle
- * Added .shadowX and .shadowY properties to ShapeLayer.java.
- This allows you to make snazzy maps with an offset shadow
- underneath.
-
-1999-07-20 Donald Dietrick
-
- * Added the OMgrid graphic object, which, like the other
- OMGraphics, handles Lat/Lon grids, X/Y grids, and Lat/Lon offset
- grids. Rendering to the screen depends on objects that implement
- the OMGridGenerator interface. A couple of generators have been
- added to the source tree - one assumes that the grid contents are
- ARGB colors, and a couple others assume that the contents are
- elevations. The grid can also hold other graphic objects.
-
-1999-04-19 Donald Dietrick
-
- * Fixed a bug in RpfTocHandler that caused the A.TOC file section
- to be read incorrectly.
-
-1999-04-19
-
- * Merged patches from various contributors (thanks!) to DTED
- and DayNight code.
-
- * Fixed some problems with ScaleFilterLayer and DateLayer.
-
- * Added BufferedShapeLayer for nominal speed gain.
-
-1999-04-05 Donald Dietrick
-
- * Added the CSVLocationLayer. This layer lets you give it a
- comma-separated value file, listing locations with their latitudes
- and longitudes on each row. The latitude, longitude and location
- name column locations have to be given to the layer via the
- openmap.properties file. The layer can be extended to let the
- locations display additional detailed information through a
- browser when a locaiton is clicked upon.
-
-1999-04-05 Bill Euerle
-
- * Modified VPF code to move more of the rendering decisions into
- the VPFGraphicWarehouse interface, to allow more flexibility to
- choose what to draw, and how to draw it.
-
- * Modified VPF code to allow multiple paths to data directories.
-
-1999-04-05
-
- * Updated the openmap.properties file. You will want to merge the
- options in this file with the openmap.properties in your home
- directory.
-
-1999-03-18 Donald Dietrick
-
- * Added the RPF layer to the openmap tree. RPF is the National
- Imagery and Mapping Agency (NIMA) format for raster products, like
- CADRG and CIB. The RPF layer handles these products, displaying
- them in the OpenMap CADRG projection.
-
- * Added the DayNightlayer, which shades the part of the earth that
- is experiencing nighttime. There are many parameters that can be
- adjusted through the openmap.properties file. See the
- DayNightLayer documentation for more information.
-
- * Modified the Graticule Layer to display latitude and longitude
- line labels, draw one and five degree lines when the scale is
- large enough to require them, and draws different line types in
- different colors. These parameters are adjustable through the
- openmap.properties file. See the GraticuleLayer documentation for
- more information.
-
-1999-03-16
-
- * Deprecated OMColor. Two constructors incorrectly override the
- Java 2 java.awt.Color. OMColor was only useful to support
- alpha-valued images under JDK 1.1. You shouldn't use it. Instead
- use regular java.awt.Colors or use the Java version-neutral
- com.bbn.openmap.util.ColorFactory to create colors.
-
-1999-02-22 Aaron Culliney
-
- * Added Java 2D API OMGraphics classes to the
- com.bbn.openmap.omGraphics package.
-
- * The configure script now checks to see if you're using the Java
- 2 platform. If so, it sets up the appropriate variables in the
- Makefiles.
-
-1999-02-02 Donald Dietrick
-
- * Added the com.bbn.openmap.layer.util.LayerUtils class, which
- provides a couple convenience functions for parsing properties for
- layers.
-
- * Created the coverage managers for DTED and RPF, which broke the
- data coverage generation functions out from the layer, so that a
- specialist could be made without duplicating a bunch of code.
-
-1999-01-27 Donald Dietrick
-
- * Modified the DTED package to be able to produce indexed images
- (images that use colormaps, as opposed to the direct colormodel).
-
- * Modified the RPF package to do the same thing.
-
- * Added methods to the OMRasterObject that let you add image
- filters to manipulate the images when they are generated.
-
-1999-01-21 Donald Dietrick
-
- * Added the Tool object in the gui package, reflecting a change in
- how the ToolPanel is used. The ToolPanel was also changed to
- accept the addition of tools. The old ToolPanel is now the
- OMToolSet, and is added to the ToolPanel in the OpenMap
- application.
-
- * Changed the setWidgets() function in OpenMap.java. setWidgets
- was the place to add customized derivations of the
- MapBean,ToolPanel, InformationDelegator and MenuPanel to the
- OpenMap application. If an object wasn't added, a default was, and
- the default widgets were connected with the assumptions they
- should be. Now, the interconnections should be made in
- setWidgets(). If setWidgets is empty, a minimal functioning
- version of OpenMap runs, without a ToolPanel or Gesturing.
-
-1999-01-20
-
- * (OLD) Changed all Swing package names from the old
- `com.sun.java.swing' to the new `javax.swing'. This will work
- with the Java 2 platform or JDK1.1.X with Swing 1.1
-
- * Added SimpleMap examples which show how to use OpenMap for very
- simple Map displays.
-
-1999-01-15
-
- * Spruced up the EarthquakeLayer. It has a GUI palette, and now
- responds to gestures: click on an earthquake to get more
- information. It also fetches its graphics in a SwingWorker thread
- so it doesn't block the AWT thread.
-
-1999-01-12 Don Dietrick
-
- * Added methods to OMGraphicList to let you select all graphics,
- and temporarily render all graphics in the list in their selected
- state. Can be used by lists serving as composite OMGraphics.
-
- * Added a getMapMouseListener() m ethod to the dted layer, since
- the Layer default for this method had changed to null.
-
- * Added the test in LayerPane, LayerMenu, and OpenMap to make the
- LayerPanel and Layer Palettes use JFrames (instead of
- JInternalFrames) if running as an application. If running as an
- applet, do it the old way.
-
-1999-01-06 Tom Mitchell
-
- * Added box capability in OMText objects. setShowBounds(boolean)
- and getShowBounds() are the accessors for this functionality.
-
-1999-01-05 Tom Mitchell
-
- * proj/Projection.java: added 'extends java.io.Serializable' per
- patches send by slee@bbn.com. This enables the serialization of
- projections for storing map settings. No testing has been done,
- so this should go in the category of "untested and unsupported".
-
-1998-12-22 Tom Mitchell
-
- * gui/ToolPanel.java: Fixed a bug reported by slee@bbn.com.
- Apparently a cut/paste induced problem in removeZoomListener().
-
-1998-12-16 Aaron Culliney
-
- * Changed event/MapMouseListenerAdapter.java to
- event/MapMouseAdapter.java to conform to the AWT/Event/Bean naming
- convention.
-
-1998-12-14 Tom Mitchell
-
- * Converted to Swing 1.1. OpenMap(tm) is now JDK 1.2 ready, but
- can still be used with JDK 1.1 by using the Swing 1.1 add-on
- package.
-
-1998-12-11
-
- * Added reference to www.opensource.org in the MapBean copyright
- message.
-
- * Reformatted and improved comments in the files of the event/
- subdirectory.
-
- * Fixed the toplevel configure.in and configure to use full
- pathnames for java executables.
-
- * Added fixes to NavMouseMode for the mouseClicked() trickle-down,
- and dateline problems. In JDK1.1, mouseClicked() would get passed
- down to components underneath the menu when making a selection.
- This would cause the map to recenter in navigation mode.
-
-1998-12-04
-
- * Add a bunch of comments following this one on the work done in
- various main classes and APIs over the past several months.
-
- * Removed support for LatLon ellipses in OMGraphics and Projection
- because code was not being used, and was incorrect. Need to
- reimplement this functionality later.
-
- * Slimmed down the Projection.forwardPoly() method. Removed the
- `connect' variable. If you want vertices connected, (polygons),
- then you must do so yourself. This requirement also transfers to
- OMPoly, and is documented in the javadocs.
-
- * Removed older `specialist' layer code from the OpenMap tree
- because it requires CORBA (maybe the Visibroker variant) to build.
- Since we can't supply this to developers, it's not part of the
- core.
-
- * Removed dependency on `OverlayTable'. For the OpenMap viewer
- application, Layers are now specified along with other variables
- in the openmap.properties file. It is easier to develop different
- applications using the MapBean without this relic dependency.
-
- * OMGraphicList now derives from OMGraphic. This means that you
- can construct recursive lists and groupings of graphics.
-
-1998-10-19
-
- * added "nsges" parameter to OMGraphics and proj library. Use
- this to specify how many segments should be drawn between vertices
- of your vector graphic (for circles, and rhumb/greatcircle lines).
-
-1998-08-03
-
- * Added constructors to OMPoly() that allow you to specify that
- the float[] rawllpts are in reverse order.
-
- * Constructors for OMPoly and setLocation() methods that take a
- float[] rawllpts value now convert the array IN PLACE to lat/lon
- order RADIANS. This is for more efficient use of the projection
- code. If you need to access the original float[] values, then you
- should send in a copy. This is FAST!
-
-1998-07-24
-
- * changed OMPoly.setLocation() functions to take a units value
- since we allow both radians and decimal degrees (default) for
- coordinate units.
-
-1998-07-22
-
- * Added an isPlotable() method to Projection.java. This is meant
- to be used before projecting and rendering point objects like
- bitmaps. In some projections (Orthographic), the forward() will
- give you a valid point, but one that isn't on the visible
- hemisphere, thus you should first check to see if isPlotable().
- NOTE that you DO NOT need to do this check for non-point objects,
- (lines, polys, etc), they get normalized/clipped correctly
- already.
-
- * override getInsets() in the MapBean to return Insets(0,0,0,0).
- This fixes a problem of drawing graphics at a +2 x/y offset
- because of a Border around the Bean (added by OpenMap.java). Note
- that the border still gets drawn with this fix in place.
-
-1998-07-16
-
- * Added a drawBackground() function to the Projection classes.
- The BufferedMapBean now delegates background rendering to the
- current projection.
-
- * Removed WhoPanel. The InformationDelegator now controls the
- WhoLine screen real estate. Anything that used WhoPanel should
- use the InformationDelegator.
diff --git a/DeveloperHints.md b/DeveloperHints.md
new file mode 100644
index 000000000..55901aa83
--- /dev/null
+++ b/DeveloperHints.md
@@ -0,0 +1,386 @@
+# Introduction #
+
+The OpenMap Developer's Guide is an in-depth resource for how OpenMap components work. This page is a summary of the high points, to give you a quick idea of what's what.
+
+
+# Details #
+
+Consider OMGraphics...
+
+
+OMGraphics are important, because they are how you represent data as
+objects on a map. OMGraphics come in different flavors -
+OMBitmap, OMCircle, OMLine, OMPoint, OMPoly, OMRaster, OMRect,
+OMText. An OMGraphicList can be used to contain OMGraphics, and
+is also an OMGraphic itself. This allows you to nest
+OMGraphicLists.
+
+
+When considering how to represent your data as OMGraphics, there are a
+couple of things to think about:
+
+
+You can create customized OMGraphics by combining standard OMGraphics
+into a new object that contains an OMGraphicList, or extend
+OMGraphicList to contain the OMGraphics you need, adding methods you
+require. The com.bbn.openmap.layer.location.Location object is
+an example of creating an object to contain OMGraphics, combining a
+generic OMGraphic marking a location, and a OMText object for the
+location label.
+
+
+OMGraphics contain an attribute map that can contain any other objects you need to associate with the OMGraphic. You can access these attributes using the putAttribute(key, value) and getAttribute(key, value) methods. This can be really
+handy to use to store more information about the data you are
+representing with that OMGraphic (web page addresses, additional
+attributes, etc).
+
+
+OMGraphics can be rendered in three ways, which are
+represented by renderType.
+
+
+RENDERTYPE_LATLON means that the object should be placed
+on the map in its lat/lon location. You should expect the
+OMGraphic to scale the object as the map scale changes, and the
+object's location on the screen will change as the map location
+changes.
+
+
+RENDERTYPE_XY means the object should be placed at a
+screen pixel location on the map. The OMGraphic does not move or
+scale as the map projection changes.
+
+
+RENDERTYPE_OFFSET means the object should be placed at
+some screen pixel location offset from a lat/lon coordinate. The
+object will move with the map location changes, but will not scale if
+the map scale changes.
+
+
+There are three different line types associated with OMGraphics that
+have lines rendered in lat/lon space. These setting do not
+affect OMGraphics with RENDERTYPE_XY or RENDERTYPE_OFFSET:
+
+
+
+LINETYPE_STRAIGHT means the lines will be straight on
+the screen between points of the OMGraphic, regardless of the
+projection type.
+
+
+LINETYPE_GREATCIRCLE means that the lines drawn between
+points of the OMGraphic will be the shortest geographical distance
+between those points.
+
+
+LINETYPE_RHUMB means that the line drawn between points
+of the OMGraphics will be of constant bearing, or going in the same
+direction.
+
+
+Most importantly, there is a paradigm you have to work
+in with OMGraphics. Once an OMGraphic is created, it MUST be
+projected, which means that its representation, in relation to the
+map, needs to be calculated. This is done by taking the
+Projection object that arrives in the ProjectionChanged event, and
+using it on the OMGraphic.generate(Projection) method. If the
+projection changes, the OMGraphics will need to be generated().
+If the position of the OMGraphic has changed, or certain attributes of
+the OMGraphic are changed, the OMGraphics needs to be generated.
+The OMGraphics are smart enough to know when a attribute change
+requires a generation, so go ahead an call it, and the OMGraphic will
+decide to do the work or not. If you try to render an OMGraphic
+that has not been generated, it will not appear on the map.
+After the OMGraphic is generated, the java.awt.Graphics object
+that arrives in the Layer.paint() method can be passed to the
+OMGraphic.render(java.awt.Graphics) method. See the layer section
+below for more information about managing the Projection object for
+use with your OMGraphics.
+
+
+and Layers...
+
+
+Layers can do anything they want to in order to render
+their data on the map. When a layer is added to a map, it
+becomes a Java Swing component, so its rendering in relation to other
+layers on the map is taken care of automatically.
+
+
+When a layer is added to the MapBean, it automatically
+gets added as a ProjectionListener to the MapBean. That means
+that when the map changes, the layer will receive a ProjectionChanged
+event, letting it know what the new map projection looks like.
+It's then up to the layer to decide what it wants to draw on the
+screen based on that projection, and then call repaint() on itself
+when it is ready to have its paint() method called. The Java
+AWT event thread will then call paint() on the layer at the proper
+time. paint() can also be called automatically by the AWT
+thread, for map window repaints and when another layer asks to be
+repainted. paint() methods should not do more than simply render
+graphics that are currently on the map, in order to take up as little
+time as necessary with that AWT thread.
+
+
+The OMGraphicHandlerLayer is a super-class implementation of Layer that does a lot of work for you. You should extend any layer you write from this class, and simply override the prepare() method to create and return OMGraphics to display on the map. The prepare() method is called whenever the projection changes (pan, zoom, window resize). The current projection can be retrieved in the prepare method by calling getProjection(), and this can be used to call generate(projection) on your OMGraphics before they are returned from this method. You must do this. Look at the com.bbn.openmap.layer.learn package to see best practices of creating layers to do different things. The OMGraphicHandlerLayers in that package are well commented, and each demonstrate a certain aspect of managing and interacting with OMGraphics.
+
+The OMGraphicHandlerLayer automatically launches a separate thread when it calls prepare(), and automatically calls repaint() on itself when prepare() returns. If you want to force a new thread to be created to call prepare() on the layer, call doPrepare().
+
+
+You can also use the OpenMap layers as examples of different ways to
+create and manage OMGraphics. The GraticuleLayer creates its
+OMGraphics internally, while the ShapeLayer reads data from a
+file. The DTED and RpfLayers have image caches. The
+CSVLocationLayer uses a quadtree to store OMGraphics. You can
+also access a spatial database to create OMGraphics. Any
+technique of managing graphics can be used within a layer.
+
+
+The LayerHandler object is used in the OpenMap
+application to manage layers - both those visible on the map, and
+those available for the map. The LayerHandler uses the
+Layer.isVisible() attribute to decide which layers are active on the
+map. It has methods to change the visibility of layers, add
+layers, remove layers, and change their order. It does not have
+a user interface, so it can be used with any application.
+
+
+For the OpenMap application, layers are added or removed
+by modifying the openmap.properties file. The property file
+contains instructions on how to do this. For OpenMap layers,
+their unique properties that can be set to initialize them should be
+listed in the layer's JavaDocs.
+
+
+The Layer.getGUI() method provides a way for a layer to
+create its user interface which can control its attributes. The
+getGUI() method should just return a java.awt.Component, which means
+you can customize it any way you want. The parent Layer class
+returns null by default if you decide not to provide a
+GUI.
+
+
+and Mouse Events....
+
+
+MouseEvents can be managed by certain OpenMap
+components, directing them to layers and to OMGraphics.
+MouseModes describe how MouseEvents and MouseMotionEvents are
+interpreted and consumed.
+
+
+The MouseDelegator is the real MouseListener and
+MouseMotionListener on the MapBean. The MouseDelegator manages a
+list of MouseModes, and knows which one is 'active' at any given
+time. The MouseDelegator also asks the active Layers for their
+MapMouseListeners, and adds the ones that are interested in events
+from the active MouseMode as listeners to that mode.
+
+
+When a MouseEvent gets fired from the MapBean, it goes
+through the MouseDelegator to the active MouseMode, where the
+MouseMode starts providing the MouseEvent to its
+MapMouseListeners. Each listener is given the chance to consume
+the event. A MapMouseListener is free to act on an event and not
+consume it, so that it can continue to be passed on to other
+listeners.
+
+
+From the Layer point of view, it has a method where it
+can be asked for its MapMouseListener. The Layer can implement
+the MapMouseListener interface, or it can delegate that responsibility
+to another object, or can just return null if it's not interested in
+receiving events (the Layer default). The MapMouseListener
+provides a String array of all the MouseMode ID strings it is
+interested in receiving events from, and also has its own methods
+that the MouseEvents and MouseMotionEvents arrive in. The
+MapMouseListener can use these events, combined with the
+OMGraphicList, to find out if events have occurred over any OMGraphics,
+and respond if necessary. Remember, if something on the layer
+changes as a result of an event, the layer can call repaint() on
+itself.
+
+
+Once again, the OMGraphicHandlerLayer makes things easier for you" by handling MouseEvents over its OMGraphics. Look at thecom.bbn.openmap.layer.learn.InteractionLayerfor instructions on how to take advantage of this functionality.
+
+
+PlugIns can also provide and/or implement the
+MapMouseListener interface - the PlugInLayer passes the request
+through to the PlugIn.
+
+
+and the BeanContext, a.k.a. the MapHandler...
+
+
+Understanding the MapHandler is one of the most important aspects of
+customizing an OpenMap application if you want to make the whole
+process pretty trivial.
+
+
+The MapHandler is a Java BeanContext, which is a big bucket where you
+can add or remove objects. If an object is a
+BeanContextMembershipListener, it will receive events when other
+objects get added to or removed from the BeanContext.
+
+
+The reason that the MapHandler (as opposed to simply using the
+BeanContext) exists is that it is an extended BeanContext that keeps
+track of SoloMapComponents. SoloMapComponent is an interface,
+and can be used to say that there is only supposed to be one instance
+of a component type in the BeanContext at a time. For instance,
+the MapBean is a SoloMapComponent, and there can only be one MapBean
+in a MapHandler at a time. The SoloMapComponentPolicy is an
+object that tells the MapHandler what to do if another MapBean (or
+other duplicate SMC instance) is added to the MapHandler, either
+rejecting the second instance of the MapBean, or replacing the
+previous MapBean.
+
+
+So, a MapHandler can be thought of as a Map, complete with the
+MapBean, Layers, and other management components that are contained
+within.
+
+
+That said, the MapHandler is incredibly useful. It can be used
+by objects that need to get a hold of other objects and
+services. It can be used to add or remove components to the
+application, at runtime, and all the other objects added to the
+MapHandler get notified of the addition/removal automatically.
+
+
+In the OpenMap application, the openmap.properties file has an
+openmap.components property that lists all the components that make up
+the application. To change the components in the application,
+edit this list.
+
+
+If you want your component to be told of the BeanContext, make it a
+BeanContextChild. It will get added to the MapHandler so that
+other components can find it, if it is on the openmap.components
+property list. If you are creating your own components
+programmatically, simply add the BeanContextChild component to the
+MapHandler yourself.
+
+
+The com.bbn.openmap.MapHandlerChild is an abstract class that contains
+all the methods and fields necessary for an object to be a
+BeanContextChild and a BeanContextMembershipListener. If your
+object extends this class, you just have to implement the methods
+findAndInit() which is called whenever an object is added to the
+MapHandler, and childrenRemoved() which is called when objects are
+removed. You can use the Iterator that gets send to these
+methods to find other components that have been added to or removed
+from the application, and adjust your component accordingly.
+Make sure your component is stable if it doesn't find what it needs -
+you shouldn't assume that the other objects will be added in any
+particular order, or even added at all. Also, you should check
+that when objects are removed that the instance of the object is the
+same that is being used by your component before you disconnect from
+it (not just the same class type). As a MapHandlerChild, your
+component can be added to the OpenMap application without recompiling
+any OpenMap source code. You'll notice that the application
+class (com.bbn.openmap.app.OpenMap) is pretty basic, using the
+PropertyHandler to instantiate all the components and add them to the
+MapHandler.
+
+
+and the PropertyConsumer interface...
+
+
+The PropertyConsumer interface can be implemented by any component
+that wants to be able to configure itself with a java.awt.Properties
+object. It also has methods that let it provide information about the
+properties it can use, and what they mean.
+
+
+In general, Properties are a set of key-value pairs, each defined as
+Java Strings. The com.bbn.openmap.layer.util.LayerUtils class has
+methods that can be used to translate the value Java Strings into Java
+primitives and objects, like ints, floats, booleans, Color, etc.
+
+
+Several PropertyConsumers may have their properties defined in a
+single properties file, which is what happens when the OpenMap
+application uses the openmap.properties file. In order for each
+PropertyConsumer to be able to figure out which properties are
+intended for it, the PropertyConsumer can be given a unique scoping
+property prefix string. In the openmap.properties instructions, this
+scoping string is referred to as a marker name. If the property prefix
+is set in a PropertyConsumer, it should prepend that string to each
+property key, separating them with a period. For example a layer may
+have a property key called lineWidth, which tells it how thick to draw
+its line graphics. If it is given a property prefix of layer1, it
+should check its properties for a 'layer1.lineWidth' property. If the
+layer is given a null prefix (default), then it should look for a
+'lineWidth' property.
+
+
+The methods for the PropertyConsumer are:
+
+
+
+setPropertyPrefix(String prefix) - set the scoping prefix.
+
+setProperties(Properties props) - provide the properties, with a null prefix.
+
+setProperties(String prefix, Properties props) - provide the
+properties with a prefix.
+
+getProperties(Properties props) - set the current values of the
+properties in the Properties object provided. If Properties is null,
+create one to fill. The keys in this Properties object should be
+scoped with a prefix if one is set.
+
+getPropertyInfo(Properties props) - set the metadata for the
+properties in the Properties object. Again, if Properties is null,
+create one and fill it. The keys in this Properties object should
+NOT be scoped, and the values for the keys should be a short
+explaination for what the property means. The PropertyConsumer may
+also provide a 'key.editor' property here with the value a fully
+qualified class name of the
+com.bbn.openmap.util.propertyEditor.PropertyEditor to use to modify
+the value in a GUI, if needed.
+
+
+
+PropertyConsumers can use the
+com.bbn.openmap.util.propertyEditor.Inspector to provide an interface
+to the user to configure it at runtime. It also allows the
+PropertyConsumer to provide its current state for properties files
+being saved for later use.
+
+
+Lastly, when the OpenMap application is creating objects from the
+openmap.components property, the marker name on that list becomes the
+property prefix for components. The ComponentFactory, which creates
+the components on behalf of the PropertyHandler, checks to see if the
+component is a PropertyConsumer, and if so it calls
+setProperties(prefix, properties) on it to let the component configure itself.
+
+
+and hints to help with certain application Design Patterns...
+
+
+The OpenMap application is really a framework. The application can
+be adjusted and components swapped in and out by modifying the
+openmap.components property to create the components you want. If
+you want to create your own application, it's likely that you can
+still use the OpenMap application for it and still completely
+customize it.
+
+
+You don't have to use Properties - feel free to create any object you want, programmatically, and simply add it to the MapHandler.
+
+
+If you want your layer to be driven by an external object, check out
+the com.bbn.openmap.plugin.graphicLoader package. A GraphicLoader is
+an object that is able to provide OMGraphics to an OMGraphicHandler
+(which can be thought of as a receiver). The graphicLoader package
+contains the AbstractGraphicLoader, an abstract GraphicLoader
+implementation that has a Swing Timer in it to trigger itself to
+deliver OMGraphic updates. You can extend this class to customize how
+and when these updates occur. If you place the GraphicLoaderConnector
+in the MapHandler along with your GraphicLoaders, the
+GraphicLoaderConnector will create a GraphicLoaderPlugIn/PlugInLayer
+combination to listen to each GraphicLoader if the GraphicLoader
+doesn't already have a receiver specified.
\ No newline at end of file
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 93ac009fa..000000000
--- a/INSTALL
+++ /dev/null
@@ -1,57 +0,0 @@
--*- Mode: text-mode -*-
-$Source: /cvs/distapps/openmap/INSTALL,v $
-$RCSfile: INSTALL,v $
-$Revision: 1.17 $
-$Date: 2004/04/19 13:54:27 $
-$Author: bmackiew $
-
-Prerequisites
-=============
-
- You need to have a Java compiler and VM to build and run the
- OpenMap software. You will also need the Apache Ant Java-based
- build tool if you'd like to build OpenMap from scratch. Ant has
- been included in our distribution, but we have omitted the
- documentation package for the sake of space. If you would like
- the complete Ant package, you may download it from:
-
- http://ant.apache.org
-
- NOTE: From OpenMap 4.0 onwards, OpenMap requires Java 2 to build and run.
- If you need to use JDK 1.1, download OpenMap 3.7, the last
- JDK 1.1-compatible release. This release is available at the OpenMap
- web site, http://www.openmap.org
-
- From OpenMap 4.6 onwards, OpenMap requires JDK 1.4 or later.
- As of OpenMap 5.1.14, jdk 1.6 is required.
-
-Installation
-============
-
- With Ant, the basic installation of OpenMap has become much easier.
-
- If you would like to build OpenMap, you only need to set your
- OPENMAP_HOME and JAVA_HOME environment variables to point to your
- OpenMap directory and location of your Java installation, and run
- "ant". This will work through the different OpenMap directories,
- compile OpenMap classes with Ant, and store the resulting jar file
- in the lib/ directory of your OpenMap directory.
-
- To run OpenMap, whether you have compiled your own jar files or used
- the precompiled jars that came withe distribution, you need only cd
- to the bin/ directory in your OpenMap directory and run the "openmap"
- script.
-
- The above directions cover use of OpenMap on Unix-based systems, such
- as Linux, Solaris, and Mac OS X. For Windows-based systems, you'll
- want to read the INSTALL.win32 file, found in the same directory as
- this INSTALL file.
-
-Documentation
-=============
-
- The OpenMap API is available at: http://openmap-java.org/api/
-
- If you'd like to rebuild it, you can do it from the top-level
- OpenMap directory with "ant docs".
-
diff --git a/INSTALL.win32 b/INSTALL.win32
deleted file mode 100644
index 5f13ee821..000000000
--- a/INSTALL.win32
+++ /dev/null
@@ -1,61 +0,0 @@
-$Source: /cvs/distapps/openmap/INSTALL.win32,v $
-$RCSfile: INSTALL.win32,v $
-$Revision: 1.2 $
-$Date: 2004/04/19 13:54:27 $
-$Author: bmackiew $
-
-Installation under Windows
-==========================
-
-Quickstart
-==========
-
-Check the prerequisites section of the INSTALL file, then come back
-here.
-
-We have supplied pre-built JAR (Java ARchive) files of OpenMap, but
-you will still need to edit the `openmap.bat' file in the bin/
-subdirectory to get OpenMap to run.
-
- * Load the openmap.bat file in your favorite editor.
-
- * Change the path to the Java VM to match your
- local configuration.
-
- * Change the path to OpenMap to match your configuration.
-
- * Run the batch file.
-
-Compilation
-===========
-
-You may want to build OpenMap from the source code yourself. OpenMap includes
-Ant, the Java-based build tool from Apache, available at
-http://ant.apache.org
-
-If you'd like to build OpenMap using Ant, you'll need to:
-
- 1. Edit the ANT_ENV.BAT batch file in the OpenMap distribution:
- - Set your OPENMAP_HOME variable to point to your
- OpenMap directory.
- - Set your JAVA_HOME variable to point to your Java
- distribution.
-
- 2. Open an MS-DOS window and right-click on it to access the
- properties. Set Memory -> Initial Environment to a value of at
- least 768 or you'll see "Out of environment space" errors when you
- run Ant.
-
- 3. Close and re-open the MS-DOS window to gain the benefit of the
- updated initial environment settings.
-
- 4. Run the ANT_ENV.bat file to set your path and environment variables
- correctly.
-
- 5. Run "ant" from the top level of the OpenMap distribution to
- recompile the jar files. Run "ant clean" to clean out the
- directories, analogous to "make clean".
-
-Another possibility for recompiling under Windows is using the Cygwin toolkit,
-available from http://www.cygwin.com. This provides you with a Unix-like
-shell, but isn't as simple to use as Ant.
diff --git a/OpenMap.md b/OpenMap.md
new file mode 100644
index 000000000..5fe9d1448
--- /dev/null
+++ b/OpenMap.md
@@ -0,0 +1,15 @@
+# What is OpenMap? #
+
+OpenMap is a Java Beans based toolkit for building applications and applets needing geographic information. Using OpenMap components, you can access data from legacy applications, in-place, in a distributed setting. At its core, OpenMap is a set of Swing components that understand geographic coordinates. These components help you show map data, and help you handle user input events to manipulate that data.
+
+# What are the license terms for using OpenMap? #
+
+Take a look at the OpenMapLicense. We want you to be able to do pretty much anything with it as long as we get credit for our work and as long as you offer your changes to us so we can possibly add them to the standard version we distribute.
+
+# OpenMap is a trademark #
+
+OpenMap is a trademark of BBN Technologies.
+
+# Please help out! #
+
+There's much room for improvement of the OpenMap sources. We are interested in any changes you make to the core source, or layers you develop, or other derivative works.
\ No newline at end of file
diff --git a/OpenMapApplications.md b/OpenMapApplications.md
new file mode 100644
index 000000000..0d9d48b47
--- /dev/null
+++ b/OpenMapApplications.md
@@ -0,0 +1,53 @@
+# Introduction #
+
+The OpenMap package includes applications that demonstrate the capabilities of the toolkit. There are many layer examples that also demonstrate how to create custom layers for displaying your own data.
+
+
+# Applications #
+
+The application classes in OpenMap are in the {{com.bbn.openmap.app}}} package.
+
+The `com.bbn.openmap.app.Main` class was introduced in OpenMap 5.0. It uses the openmap.properties file for configuration, with the `main.components` defining the application components. The `openmap.layers` property defines the layers used in the application. This is the application that gets started by the scripts in the bin directory. You can start this application at the command line by typing:
+
+`java -classpath ./lib/openmap.jar:./share com.bbn.openmap.app.Main -properties ./openmap.properties`
+
+The `com.bbn.openmap.app.OpenMap` class is the legacy application that uses the `openmap.properties` file to define the components in the application. The `openmap.components` property in `openmap.properties` lists the components that will be added to the application, and the `openmap.layers` property defines the layers in the application.
+
+`java -classpath ./lib/openmap.jar:./share com.bbn.openmap.app.OpenMap -properties ./openmap.properties`
+
+Both applications are the best way to start getting to know OpenMap, and the best starting point for your own application. You can add or remove components in the application using the {{openmap.properties}}} file, which contains instructions for how to modify the various properties within it.
+
+If you want to a deeper understanding on how the OpenMap application framework should be used, the `com.bbn.openmap.app.example` package contains `SimpleMap` and `SimpleMap2`. Both examples are heavily commented, and provide examples of how to programmatically configure OpenMap mapping components.
+
+`java -classpath ./lib/openmap.jar:./share com.bbn.openmap.app.example.SimpleMap`
+
+`java -classpath ./lib/openmap.jar:./share com.bbn.openmap.app.example.SimpleMap2`
+
+# Layers #
+
+OpenMap includes many layers that work with standard map data formats. These layers are under the `com.bbn.openmap.layers` package. The `openmap.properties` file contains examples of how to configure properties for some of them, and the javadocs for a layer class should contain property settings and instructions for configuring the layer.
+
+If you want to learn to write your own layer, look at the layers in the `com.bbn.openmap.layers.learn` package:
+ * `BasicLayer` shows how to make a layer where the data doesn't change depending on time or map projection. A good first layer.
+ * `ProjectionResponseLayer` shows how to make a layer that responds to the map projection to display map features for the current view.
+ * `InteractionLayer` shows how to make the layer react to user input.
+ * `SimpleAnimationLayer` shows how to move features around on a map.
+
+Also, the `com.bbn.openmap.layer.DemoLayer` is an excellent tool, demonstrating almost anything you may want to do with a layer. It is heavily commented, and studying that layer will reveal how to respond to user input, use the drawing tool to edit map features, create a Layer gui to change properties of the layer, use the MIL-STD-2525 symbology components, and display various OMGraphic map features with labels. This layer is also part of the standard `OpenMap` and `Main` application configuration, so you can see that layer in action by running those applications.
+
+# Servlets #
+
+OpenMap can be used to power servlets (using glassfish or tomcat) that provide map data to other applications. From the src directory:
+
+ * `wmsservlet` provides a servlet that can be used to provide WMS images. In addition to whole map images, the wmsservlet can respond to request to create TMS (Tile Map Specification) sized images on the fly.
+ * `maptileservlet` provides a servlet that can handle requests for TMS (Tile Map Specification) layers, such as Leaflet, OpenLayers and Google Maps. These tile map sets are assumed to be pre-created using mapnik, TileMill, GDAL, or OpenMap's MapTileMaker. The OpenMap `MapTileLayer` can talk to this servlet (and any other TMS server). Also, when the `maptileservlet` is loaded with `MapTileSet` tiles, contacting the servlet at the top-level will bring up a Leaflet map allowing you to look at the tile sets.
+
+The `MapTileMaker` is a class that creates tile sets. It uses a properties file to define layers and lets zoom levels be defined to dictate which layers are active for different tile scales. The `MapTileMaker` has recently been updated to implement `EmptyTileHandler`, which means it can now be used by the `maptileservlet` to create tiles on the fly, and cache them for later use.
+
+The `vpfservlet` doesn't serve VPF data, it provides a way to explore VPF datasets.
+
+# Other #
+
+You can use OpenMap map components in any java application that supports Swing components (so mobile SDKs generally don't work with OpenMap). You can embed OpenMap into an existing application. Look at the `BasicMapPanel` and `OverlayMapPanel` as the main component to embed into another application.
+
+OpenMap runs as an applet. The share directory contains an omapplet.html page to get started. There is a jnlp file to run OpenMap as a Java WebStart application.
\ No newline at end of file
diff --git a/LICENSE b/OpenMapLicense.md
similarity index 52%
rename from LICENSE
rename to OpenMapLicense.md
index ef638d5cc..53a146ae9 100644
--- a/LICENSE
+++ b/OpenMapLicense.md
@@ -1,147 +1,153 @@
- OpenMap Software License Agreement
- ----------------------------------
-
-This Agreement sets forth the terms and conditions under which
-the software known as OpenMap(tm) will be licensed by BBN
-Technologies ("BBN") to you ("Licensee"), and by which Derivative
-Works (as hereafter defined) of OpenMap will be licensed by you to BBN.
-
-Definitions:
-
- "Derivative Work(s)" shall mean any revision, enhancement,
- modification, translation, abridgement, condensation or
- expansion created by Licensee or BBN that is based upon the
- Software or a portion thereof that would be a copyright
- infringement if prepared without the authorization of the
- copyright owners of the Software or portion thereof.
-
- "OpenMap" shall mean a programmer's toolkit for building map
- based applications as originally created by BBN, and any
- Derivative Works thereof as created by either BBN or Licensee,
- but shall include only those Derivative Works BBN has approved
- for inclusion into, and BBN has integrated into OpenMap.
-
- "Standard Version" shall mean OpenMap, as originally created by
- BBN.
-
- "Software" shall mean OpenMap and the Derivative Works created
- by Licensee and the collection of files distributed by the
- Licensee with OpenMap, and the collection of files created
- through textual modifications.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the Derivative Works.
-
- "Licensee" is you, only if you agree to be bound by the terms
- and conditions set forth in this Agreement.
-
- "Reasonable copying fee" is whatever you can justify on the
- basis of media cost, duplication charges, time of people
- involved.
-
- "Freely Available" means that no fee is charged for the item
- itself, though there may be fees involved in handling the item.
- It also means that recipients of the item may redistribute it
- under the same conditions that they received it.
-
-1. BBN maintains all rights, title and interest in and to
-OpenMap, including all applicable copyrights, trade secrets,
-patents and other intellectual rights therein. Licensee hereby
-grants to BBN all right, title and interest into the compilation
-of OpenMap. Licensee shall own all rights, title and interest
-into the Derivative Works created by Licensee (subject to the
-compilation ownership by BBN).
-
-2. BBN hereby grants to Licensee a royalty free, worldwide right
-and license to use, copy, distribute and make Derivative Works of
-OpenMap, and sublicensing rights of any of the foregoing in
-accordance with the terms and conditions of this Agreement,
-provided that you duplicate all of the original copyright notices
-and associated disclaimers.
-
-3. Licensee hereby grants to BBN a royalty free, worldwide right
-and license to use, copy, distribute and make Derivative Works of
-Derivative Works created by Licensee and sublicensing rights of
-any of the foregoing.
-
-4. Licensee's right to create Derivative Works in the Software is
-subject to Licensee agreement to insert a prominent notice in
-each changed file stating how and when you changed that file, and
-provided that you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or
- placing the modifications on a major archive site and by
- providing your modifications to the Copyright Holder.
-
- b) use the modified Package only within your corporation or
- organization.
-
- c) rename any non-standard executables so the names do not
- conflict with standard executables, which must also be
- provided, and provide a separate manual page for each
- non-standard executable that clearly documents how it
- differs from OpenMap.
-
- d) make other distribution arrangements with the Copyright
- Holder.
-
-5. Licensee may distribute the programs of this Software in
-object code or executable form, provided that you do at least ONE
-of the following:
-
- a) distribute an OpenMap version of the executables and
- library files, together with instructions (in the manual
- page or equivalent) on where to get OpenMap.
-
- b) accompany the distribution with the machine-readable
- source code with your modifications.
-
- c) accompany any non-standard executables with their
- corresponding OpenMap executables, giving the non-standard
- executables non-standard names, and clearly documenting
- the differences in manual pages (or equivalent), together
- with instructions on where to get OpenMap.
-
- d) make other distribution arrangements with the Copyright
- Holder.
-
-6. You may charge a reasonable copying fee for any distribution
-of this Software. You may charge any fee you choose for support
-of this Software. You may not charge a fee for this Software
-itself. However, you may distribute this Software in aggregate
-with other (possibly commercial) programs as part of a larger
-(possibly commercial) software distribution provided that you do
-not advertise this Software as a product of your own.
-
-7. The data and images supplied as input to or produced as output
-from the Software do not automatically fall under the copyright
-of this Software, but belong to whomever generated them, and may
-be sold commercially, and may be aggregated with this Software.
-
-8. BBN makes no representation about the suitability of OpenMap
-for any purposes. BBN shall have no duty or requirement to
-include any Derivative Works into OpenMap.
-
-9. Each party hereto represents and warrants that they have the
-full unrestricted right to grant all rights and licenses granted
-to the other party herein.
-
-10. THIS PACKAGE IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY
-KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING (BUT NOT LIMITED TO)
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND
-WITHOUT ANY WARRANTIES AS TO NONINFRINGEMENT.
-
-11. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT,
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER RESULTING
-FROM LOSS OF USE OF DATA OR PROFITS, WHETHER IN AN ACTION OF
-CONTRACT, NEGLIGENCE OR OTHER TORTIOUS CONDUCT, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS PACKAGE.
-
-12. Without limitation of the foregoing, You agree to commit no
-act which, directly or indirectly, would violate any U.S. law,
-regulation, or treaty, or any other international treaty or
-agreement to which the United States adheres or with which the
-United States complies, relating to the export or re-export of
-any commodities, software, or technical data.
+# OpenMap Software License Agreement #
+
+This Agreement sets forth the terms and conditions under which
+the software known as OpenMap(tm) will be licensed by BBN
+Technologies ("BBN") to you ("Licensee"), and by which Derivative
+Works (as hereafter defined) of OpenMap will be licensed by you to BBN.
+
+## Definitions ##
+
+> "Derivative Work(s)" shall mean any revision, enhancement,
+> modification, translation, abridgement, condensation or
+> expansion created by Licensee or BBN that is based upon the
+> Software or a portion thereof that would be a copyright
+> infringement if prepared without the authorization of the
+> copyright owners of the Software or portion thereof.
+
+> "OpenMap" shall mean a programmer's toolkit for building map
+> based applications as originally created by BBN, and any
+> Derivative Works thereof as created by either BBN or Licensee,
+> but shall include only those Derivative Works BBN has approved
+> for inclusion into, and BBN has integrated into OpenMap.
+
+> "Standard Version" shall mean OpenMap, as originally created by
+> BBN.
+
+> "Software" shall mean OpenMap and the Derivative Works created
+> by Licensee and the collection of files distributed by the
+> Licensee with OpenMap, and the collection of files created
+> through textual modifications.
+
+> "Copyright Holder" is whoever is named in the copyright or
+> copyrights for the Derivative Works.
+
+> "Licensee" is you, only if you agree to be bound by the terms
+> and conditions set forth in this Agreement.
+
+> "Reasonable copying fee" is whatever you can justify on the
+> basis of media cost, duplication charges, time of people
+> involved.
+
+> "Freely Available" means that no fee is charged for the item
+> itself, though there may be fees involved in handling the item.
+> It also means that recipients of the item may redistribute it
+> under the same conditions that they received it.
+
+1. BBN maintains all rights, title and interest in and to
+OpenMap, including all applicable copyrights, trade secrets,
+patents and other intellectual rights therein. Licensee hereby
+grants to BBN all right, title and interest into the compilation
+of OpenMap. Licensee shall own all rights, title and interest
+into the Derivative Works created by Licensee (subject to the
+compilation ownership by BBN).
+
+2. BBN hereby grants to Licensee a royalty free, worldwide right
+and license to use, copy, distribute and make Derivative Works of
+OpenMap, and sublicensing rights of any of the foregoing in
+accordance with the terms and conditions of this Agreement,
+provided that you duplicate all of the original copyright notices
+and associated disclaimers.
+
+3. Licensee hereby grants to BBN a royalty free, worldwide right
+and license to use, copy, distribute and make Derivative Works of
+Derivative Works created by Licensee and sublicensing rights of
+any of the foregoing.
+
+4. Licensee's right to create Derivative Works in the Software is
+subject to Licensee agreement to insert a prominent notice in
+each changed file stating how and when you changed that file, and
+provided that you do at least ONE of the following:
+
+> a) place your modifications in the Public Domain or otherwise
+> > make them Freely Available, such as by posting said
+> > modifications to Usenet or an equivalent medium, or
+> > placing the modifications on a major archive site and by
+> > providing your modifications to the Copyright Holder.
+
+
+> b) use the modified Package only within your corporation or
+> > organization.
+
+
+> c) rename any non-standard executables so the names do not
+> > conflict with standard executables, which must also be
+> > provided, and provide a separate manual page for each
+> > non-standard executable that clearly documents how it
+> > differs from OpenMap.
+
+
+> d) make other distribution arrangements with the Copyright
+> > Holder.
+
+5. Licensee may distribute the programs of this Software in
+object code or executable form, provided that you do at least ONE
+of the following:
+
+
+> a) distribute an OpenMap version of the executables and
+> > library files, together with instructions (in the manual
+> > page or equivalent) on where to get OpenMap.
+
+
+> b) accompany the distribution with the machine-readable
+> > source code with your modifications.
+
+
+> c) accompany any non-standard executables with their
+> > corresponding OpenMap executables, giving the non-standard
+> > executables non-standard names, and clearly documenting
+> > the differences in manual pages (or equivalent), together
+> > with instructions on where to get OpenMap.
+
+
+> d) make other distribution arrangements with the Copyright
+> > Holder.
+
+6. You may charge a reasonable copying fee for any distribution
+of this Software. You may charge any fee you choose for support
+of this Software. You may not charge a fee for this Software
+itself. However, you may distribute this Software in aggregate
+with other (possibly commercial) programs as part of a larger
+(possibly commercial) software distribution provided that you do
+not advertise this Software as a product of your own.
+
+7. The data and images supplied as input to or produced as output
+from the Software do not automatically fall under the copyright
+of this Software, but belong to whomever generated them, and may
+be sold commercially, and may be aggregated with this Software.
+
+8. BBN makes no representation about the suitability of OpenMap
+for any purposes. BBN shall have no duty or requirement to
+include any Derivative Works into OpenMap.
+
+9. Each party hereto represents and warrants that they have the
+full unrestricted right to grant all rights and licenses granted
+to the other party herein.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY
+KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING (BUT NOT LIMITED TO)
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND
+WITHOUT ANY WARRANTIES AS TO NONINFRINGEMENT.
+
+11. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT,
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE OF DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS CONDUCT, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS PACKAGE.
+
+12. Without limitation of the foregoing, You agree to commit no
+act which, directly or indirectly, would violate any U.S. law,
+regulation, or treaty, or any other international treaty or
+agreement to which the United States adheres or with which the
+United States complies, relating to the export or re-export of
+any commodities, software, or technical data.
\ No newline at end of file
diff --git a/ProjectHome.md b/ProjectHome.md
new file mode 100644
index 000000000..d8c8162d0
--- /dev/null
+++ b/ProjectHome.md
@@ -0,0 +1,13 @@
+BBN Technologies' OpenMap TM package is an Open Source JavaBeans TM based programmer's toolkit. Using OpenMap, you can quickly build applications and applets that access data from legacy databases and applications. OpenMap provides the means to allow users to see and manipulate geospatial information. OpenMap is under constant development - the latest version is **OpenMap 5.1.11, released July 20, 2015**. Note that with v5.0, you need to be using Java 5 or later. A complete list of updates is maintained in the [CHANGELOG](http://code.google.com/p/openmap/source/browse/CHANGELOG) file in the package.
+
+You can [download](https://drive.google.com/folderview?id=0B-Y9CwNIsUOHenpDWGhBSk42b1E&usp=sharing) a copy for free, use it, and make changes to it. Be sure to read the [license](OpenMapLicense.md) before you do.
+
+Follow [OpenMap on Twitter](http://twitter.com/openmap) for announcements about new releases and updates to the code base. If you need help, you can post questions on the [Google OpenMap-Users Group](https://groups.google.com/forum/#!forum/openmap-users) forum. For a historical perspective, the [old BBN openmap-users mailing list archive](http://openmap.bbn.com/mailArchives/openmap-users/thread.html) is still available.
+
+Google Code has removed the ability to provide downloadable compressed release files in the Download tab (as of version 5.0.3). The latest download packages are available via the External Links -> [Downloads](https://drive.google.com/folderview?id=0B-Y9CwNIsUOHenpDWGhBSk42b1E&usp=sharing) link to the left. The current Java API documents can be found [here](http://dietricks.com/openmap/api) or they can be [downloaded](https://drive.google.com/folderview?id=0B-Y9CwNIsUOHenpDWGhBSk42b1E&usp=sharing) as a zip file.
+
+Developer documentation can be found on the [Wiki page](http://code.google.com/p/openmap/w/list) and in the [Downloads section](http://code.google.com/p/openmap/downloads/list).
+
+Since OpenMap is open source, we welcome additions and changes from the user community. We've incorporated a number of contributions, with plenty of submissions available to the user community separate from the official distribution.
+
+BBN Technologies is an innovative research and development company, providing both advanced research and custom, research-based solutions for our customers. We have over 50 years of experience in technological innovation, and provide expertise in a number of technology focus areas, including acoustic technologies, agent-based systems, logistics, planning, and decision support, and speech and language processing, among others. For a complete list of our offerings, be sure to visit our corporate site.
\ No newline at end of file
diff --git a/README b/README
deleted file mode 100644
index d4508e7ae..000000000
--- a/README
+++ /dev/null
@@ -1,185 +0,0 @@
-$Source: /cvs/distapps/openmap/README,v $
-$RCSfile: README,v $
-$Revision: 1.11 $
-$Date: 2002/11/06 19:11:02 $
-$Author: bmackiew $
-
-
-OpenMap(tm)
-
-What is it?
------------
-OpenMap is a Java Beans based toolkit for building applications and
-applets needing geographic information. Using OpenMap components, you
-can access data from legacy applications, in-place, in a distributed
-setting. At its core, OpenMap is a set of Swing components that
-understand geographic coordinates. These components help you show map
-data, and help you handle user input events to manipulate that data.
-
-
-What are the license terms for using OpenMap?
----------------------------------------------
-Take a look at the file called LICENSE in the distribution. We want
-you to be able to do pretty much anything with it as long as we get
-credit for our work and as long as you offer your changes to us so we
-can possibly add them to the standard version we distribute.
-
-
-OpenMap is a trademark
-----------------------
-OpenMap is a trademark of BBN Corporation. Just so you're not
-confused, BBN Corporation is the legal entity, but we're actually part
-of Verizon Communications. Technically, we do business as "BBN Technologies,
-a part of Verizon".
-
-Downloads and home page
------------------------
-The homepage is at http://openmap-java.org/
-
-Downloads of the current distribution are available from the homepage.
-
-Where to start?
-------------------------
-
-- OpenMap Viewer
-
-The com.bbn.openmap.app.Main.java example is the default "face" of
-OpenMap. While it looks like a complex example to start with, it's
-really a simple framework that uses the MapHandler to add and connect
-the OpenMap components. See the old viewer User's Guide
-(http://openmap.bbn.com/doc/user-guide.html) for more information. You
-can check out the com.bbn.openmap.app.OpenMap application class for the older
-version of the main example class.
-
-You can write your own components that can display your data in the
-OpenMap Viewer. Once you've written the layer or plugin, all you need
-to do is to add a reference to it in your openmap.properties file.
-The OpenMap Viewer reads this file to get configuration information.
-The properties file has instructions for adding layers and plugins to
-the application. Check out the layers in com.bbn.openmap.layer.learn for
-examples and explanations on how to create your own layers.
-
-Likewise, you can change the look of the application by modifying the
-openmap.components property in the openmap.properties file. There are
-instructions in the properties file for modifying this property, but
-the main point is that changing the application does not require a
-code change. The components are defined in the openmap.properties
-file and are connected at runtime.
-
-If you want to get more into how the components interact with each
-other, you should take a look at the example applications in the
-com.bbn.openmap.app.example package, SimpleMap and SimpleMap2
-
-- SimpleMap
-
-This class is a very simple example that shows how you use the MapBean and a
-layer which shows a map of the world. This
-com/bbn/openmap/app/example/SimpleMap.java uses the MapBean to
-create a static political map in a window with these steps:
-
- 1. Create a JFrame window.
- 2. Create a MapBean.
- 3. Create the Political boundary Layer
- 4. Add the Layer to the MapBean.
- 5. Add the MapBean to the ContentPane of the JFrame.
- 6. Show the JFrame window.
-
-- SimpleMap2
-
-This com/bbn/openmap/app/example/SimpleMap2.java example is a
-little more complicated than the previous one, but is more usable. It
-shows the same political layer along with a background graticule layer
-(com/bbn/openmap/layer/GraticuleLayer.java) and a simple foreground
-layer (com/bbn/openmap/layer/learn/BasicLayer.java) which shows
-hypothetical data features.
-
-The openmap.properties file
-------------------------
-
-The OpenMap application is configured at runtime by the contents of
-the openmap.properties file. The openmap.properties file is located in
-the openmap directory, and has guidance inside it on how to modify
-various properties to change a) what components are part of the
-OpenMap application, including what layers are available, b) how those
-components are configured, and c) the initial map projection used by
-the application.
-
-When the OpenMap application starts up, the PropertyHandler object
-checks the CLASSPATH to find an openmap.properties file, and then
-checks the user's home directory for one. If an openmap.properties
-file was found in the home directory, all of its properties get added
-to any properties created previously from a CLASSPATH
-openmap.properties file. If there are duplicate properties, the last
-version read (from the home directory) will be the version used.
-
-By default, there is an openmap.properties file located at the top
-level of the openmap.jar file. When the jar file is created, the
-openmap.properties file located in the top level openmap directory
-gets copied to the classes/openmap directory, and then included into
-the openmap.jar file.
-
-If you make modifications to the openmap.properties file, those
-changes will not be reflected in the application unless:
-
-1. The top level openmap directory is included in the CLASSPATH of the
- OpenMap application. This can be done by modifying the openmap
- startup scripts located in the bin directory.
-
-2. The openmap.properties file is copied into your home directory. For
- unix users, this directory is usually /home/. For Mac OS
- X users, this directory is /Users/. For Windows users,
- this directory is D:\Documents and Settings\, where D: is
- the disk windows is installed on. If you are not sure where your
- home directory is, you can compile this code into a HomeDir.java
- file and run it:
-
- public class HomeDir {
- public static void main(String[] argv) {
- System.out.println("User home directory is " +
- System.getProperties().getProperty("user.home"));
- }
- }
-
-3. You put the openmap.properties file in the top level of the
- openmap.jar file, either by a) recompiling the openmap code, or b)
- unpacking the jar file, replacing the openmap.properties file, and
- repacking the jar file.
-
-The second option is usually the easiest, but your needs may require
-one of the other options.
-
-External Dependencies
----------------------
-
-The source code has been broken out into separate directories for code
-that depends on other packages.
-
-- src/openmap and src/ext: This code should compile without any special packages.
-- src/corba: The missing classes can be generated by building with ant. The idl files
- are used to create the generated class files.
-- src/j3d: This code will compile if the Java 3D package is installed.
-- src/svg: This code will compile if Batik (v 1.7) is installed.
-
-If you check OpenMap out from svn (instructions on the download page on the website), these
-external packages are included.
-
-Bugs and Problems
----------------------
-If you need some help, contact the mailing list at:
-
- https://groups.google.com/forum/#!forum/openmap-users
-
-The old mailing list at BBN is still available here:
-
- http://openmap.bbn.com/mailArchives/openmap-users/
-
-You can also submit issues at the OpenMap home on github at:
-
- https://github.com/OpenMap-java/openmap
-
-Please help out!
-----------------
-There's much room for improvement of the OpenMap sources. We are
-interested in any changes you make to the core source, or layers you
-develop, or other derivative works.
-
diff --git a/UsingMapTiles.md b/UsingMapTiles.md
new file mode 100644
index 000000000..4d39cba1c
--- /dev/null
+++ b/UsingMapTiles.md
@@ -0,0 +1,87 @@
+# Introduction #
+
+Map tiles are images stored in a directory structure, usually by zoom level, x coordinate and then named by their y coordinate (z/x/y.png).
+
+The _com.bbn.openmap.layer.imageTile.MapTileLayer_ can be used to display map tiles, stored locally on your computer or downloaded from a server. There are many options available for the MapTileLayer, and they can be set in the _openmap.properties_ file, or in a _tiles.omp_ file stored in the root directory of a tile set.
+
+# Configuration Options #
+
+The most basic configuration of a MapTileLayer simply define a **rootDir** property defining where the tiles are located and how they should be referenced.
+
+```
+class=com.bbn.openmap.layer.imageTile.MapTileLayer
+prettyName=Map Tiles
+rootDir=/data/tiles/MapTileSet1/{z}/{x}/{y}.png
+```
+
+Other options:
+
+**rootDir**: The rootDir can be a URL, absolute or relative path to the tile files. It can also be a jar file. If you use a jar file to hold the tiles, you should use a tiles.omp inside the jar to hold other properties, like another rootDir property for the relative path to the files within the jar. The **rootDir** can also point to a TileMill mbtiles file. If it does, you'll need to set the **tileFactory** to use the _com.bbn.openmap.dataAccess.mapTile.TileMillMapTileFactory_. You'll also need to include the sqlitejdbc jar file in the classpath to use the TileMillMapTileFactory.
+
+**localCacheRootDir**: If the **rootDir** is defined as a URL, you can also use a **localCacheRootDir** property to define local storage for the tiles. If the layer will check the **localCacheRootDir** first for tiles, and then move to the **rootDir** location if needed. This will drastically reduce the server load.
+
+**tileFactory**: The MapTileLayer uses a MapTileFactory to handle the fetching of tiles. For URLs and file paths, you generally don't have to set this, the layer will figure out which one to use. You can check out the _com.bbn.openmap.dataAccess.mapTile_ package for various MapTileFactory implementations, and look at their javadocs for more information about specific properties for those factory objects.
+
+**cacheSize**: the number of tiles to hold in memory for the layer, defaults to 50.
+
+**attribution**: if you aren't using your own tiles, this property can be used to display the tiles' owner's name in the lower left corner of the map.
+
+**mapTileTransform**: The default MapTileCoordinateTransform is the _com.bbn.openmap.dataAccess.mapTile.OSMMapTileTCoordinateTransform_ class, and that defines the tile coordinates from the upper left corner of the Mercator projection, with zoom levels starting at 0 and zooming into higher levels. If you are working with tiles defined differently, you can specify a different class to use for those tiles. For instance, if you use GDAL to create image tiles sets you may need to use the _com.bbn.openmap.dataAccess.mapTile.TMSMapTileCoordinateTransform_.
+
+**tileImagePreparer**: defines a class that can be used to process the images before display. The _com.bbn.openmap.dataAccess.mapTile.GreyscaleImagePreparer_ will convert all tiles to greyscale.
+
+**emptyTileHandler**: defines a class that determines what to do when a tile is missing. The _com.bbn.openmap.dataAccess.mapTile.ShpFileEmptyTileHandler uses a shape file to draw a basic shape onto a temporarily used tile._
+
+```
+emptyTileHandler=com.bbn.openmap.dataAccess.mapTile.ShpFileEmptyTileHandler
+shpFile=File, resource or URL to shape file for land representation.
+
+ # Properties to set how the shp file contents are rendered.
+ land.fillColor=hex RGB color
+ land.lineColor=hex RGB color
+ land.fillPattern=path to resource, file or URL of pattern to use for tile fill.
+
+ # From SimpleEmptyTileHandler superclass, handling the 'water'
+ # clear by default if not specified
+ background.fillColor=hex RGB color
+ background.lineColor=hex RGB color
+ background.fillPattern=path to resource, file or URL of pattern to use for tile fill.
+
+ # Zoom level to start using noCoverage attributes. Is 0 by default if the shape file
+ # is not specified. If the shape file is specified and this isn't the zoom level
+ # will be set to 20.
+ noCoverageZoom=zoom level when you don't want empty tiles, you want no coverage tiles
+
+ # How to render standard empty tiles, will be clear if not defined
+ noCoverage.fillColor=hex RGB color
+ noCoverage.lineColor=hex RGB color
+ noCoverage.fillPattern=path to resource, file or URL of pattern to use for tile fill.
+```
+
+# Adding a MapTileLayer to the Application #
+
+To add a MapTileLayer to the map, you can modify the _openmap.properties_ file. First, pick short word name for your layer, any little word, your choice. It should be unique compared to all of the other names listed in the _openmap.layers_ property. Next, add your name to that _openmap.layers_ list where you want your layer to be listed in the layer stack (first on the list is on top of the map). Then, add properties for your layer in the _openmap.properties_ file, using the name you picked for your layer as a scoping prefix for the properties. For example, let's say you chose 'osm\_tiles' for your name.
+
+```
+openmap.layers=... osm_tiles ...
+
+osm_tiles.class=com.bbn.openmap.layer.imageTile.MapTileLayer
+osm_tiles.prettyName=OSM Tiles
+osm_tiles.rootDir=http://c.tile.openstreetmap.org/
+
+# Add other properties, starting with 'osm_tiles.', as needed for your configuration
+```
+
+If you want the layer to show up when the application is started, also add the **osm\_tiles** name to the _openmap.startupLayers_ list.
+
+To add a MapTileLayer to the SimpleMap2 example, you don't really need a property prefix for the properties:
+
+```
+ // Just add this code
+ MapTileLayer mapTileLayer = new MapTileLayer();
+ Properties tileProperties = new Properties();
+ tileProperties.setProperty("rootDir", "http://c.tile.openstreetmap.org/");
+ mapTileLayer.setProperties(tileProperties);
+ mapTileLayer.setVisible(true);
+ mapHandler.add(mapTileLayer);
+```
\ No newline at end of file
diff --git a/bin/openmap b/bin/openmap
deleted file mode 100755
index 006127556..000000000
--- a/bin/openmap
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/sh
-
-# Modified from the ant startup script to start OpenMap instead.
-
-# Cygwin support. $cygwin _must_ be set to either true or false.
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- *) cygwin=false ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin; then
- [ -n "$OPENMAP_HOME" ] &&
- OPENMAP_HOME=`cygpath --unix "$OPENMAP_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-if [ "$OPENMAP_HOME" = "" ] ; then
- # try to find OPENMAP
- if [ -d /usr/local/openmap ] ; then
- OPENMAP_HOME=/usr/local/openmap
- fi
-
- if [ -d ${HOME}/openmap ] ; then
- OPENMAP_HOME=${HOME}/openmap
- fi
-
- ## resolve links - $0 may be a link to openmap's home
- PRG=$0
- progname=`basename $0`
-
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '.*/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname $PRG`/$link"
- fi
-
- done
-
- OPENMAP_HOME=`dirname "$PRG"`/..
-
-fi
-
-if [ "$JAVA_HOME" != "" ] ; then
- if [ "$JAVACMD" = "" ] ; then
- JAVACMD=$JAVA_HOME/bin/java
- fi
-else
- if [ "$JAVACMD" = "" ] ; then
- JAVACMD=java
- fi
-fi
-
-# add in the dependency .jar files
-DIRLIBS=${OPENMAP_HOME}/lib/*.jar
-
-# Change to match your installation
-
-# For SVG capabilities with the Batik package...
-BATIK_HOME=/usr/local/java/batik-1.5
-DIRLIBS=${DIRLIBS}" "${BATIK_HOME}/lib/*.jar
-
-# For CORBA capabilities using Visibroker...
-#VISIBROKER_HOME=/usr/local/openmap/vbroker-3.4
-#DIRLIBS=${DIRLIBS}" "${VISIBROKER_HOME}/lib/*.jar" "${JAVA_HOME}/jre/lib/rt.jar
-
-# For CORBA on Mac OS X
-#DIRLIBS=${DIRLIBS}" "${VISIBROKER_HOME}/lib/*.jar" "/System/Library/Frameworks/JavaVM.framework/Classes/*.jar"
-
-for i in ${DIRLIBS}
-do
- # if the directory is empty, then it will return the input string
- # this is stupid, so case for it
- if [ "$i" != "${DIRLIBS}" ] ; then
- if [ "$LOCALCLASSPATH" != "" ] ; then
- LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
- else
- LOCALCLASSPATH="$i"
- fi
- fi
-done
-
-# Add OPENMAP_HOME to catch changes to openmap.properties file, and
-# put the classes directories in front so that modified, compiled
-# classes will be picked up even if the openmap.jar is not re-created.
-
-LOCALCLASSPATH=${OPENMAP_HOME}/classes/openmap:${OPENMAP_HOME}/classes/omcorba_vb:$LOCALCLASSPATH:${OPENMAP_HOME}:${OPENMAP_HOME}/share
-
-if [ "$CLASSPATH" != "" ] ; then
- LOCALCLASSPATH=$CLASSPATH:$LOCALCLASSPATH
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- OPENMAP_HOME=`cygpath --path --windows "$OPENMAP_HOME"`
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
-fi
-
-#$JAVACMD -version
-
-ARGS=$@
-OPENMAP_ARGS=""
-JAVA_ARGS=""
-for i in ${ARGS}
-do
-# if [ "$i" = "-D" ] ; then
- JAVA_ARGS=$JAVA_ARGS" $i"
-# else
-# OPENMAP_ARGS=$OPENMAP_ARGS" $i"
-# fi
-done
-
-if [ "$VISIBROKER_HOME" = "" ] ; then
-# echo $JAVACMD -Xmx256m -classpath "$LOCALCLASSPATH" -Dopenmap.configDir=$OPENMAP_HOME/share $JAVA_ARGS com.bbn.openmap.app.OpenMap $OPENMAP_ARGS
- $JAVACMD -Xmx512m -classpath "$LOCALCLASSPATH" -Dopenmap.configDir=$OPENMAP_HOME/share -Ddebug.showprogress $JAVA_ARGS com.bbn.openmap.app.Main $OPENMAP_ARGS
-else
-# echo $JAVACMD -Xmx256m -Xbootclasspath:"$LOCALCLASSPATH" -Dopenmap.configDir=$OPENMAP_HOME/share $JAVA_ARGS com.bbn.openmap.app.OpenMap $OPENMAP_ARGS
- $JAVACMD -Xmx512m -Xbootclasspath:"$LOCALCLASSPATH" -Dopenmap.configDir=$OPENMAP_HOME/share -Ddebug.showprogress $JAVA_ARGS com.bbn.openmap.app.Main $OPENMAP_ARGS
-fi
-
-
diff --git a/bin/openmap.bat b/bin/openmap.bat
deleted file mode 100644
index 961cee7c4..000000000
--- a/bin/openmap.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-
-rem This will launch the OpenMap application
-rem YOU MUST EDIT THE SETTINGS IN THIS FILE TO MATCH YOUR CONFIGURATION
-
-rem Java Virtual Machine
-rem CHANGE THIS TO POINT TO YOUR JAVA INSTALLATION IF JAVA ISN"T IN YOUR PATH
-set JAVABIN=java.exe
-
-rem OpenMap top-level directory
-rem THIS POINTS TO THE DIRECTORY ABOVE "BIN". CHANGE THIS IF YOU MOVE THE
-rem BATCH FILE.
-set OPENMAP_HOME=.
-
-rem CLASSPATH points to toplevel OpenMap directory and share
-rem subdirectory. Add other jar files as available.
-set CLASSPATH=%OPENMAP_HOME%;%OPENMAP_HOME%\classes\openmap;%OPENMAP_HOME%\share;%OPENMAP_HOME%\lib\milStd2525_png.jar;%OPENMAP_HOME%\lib\openmap.jar;%OPENMAP_HOME%\lib\omsvg.jar;%OPENMAP_HOME%\lib\omj3d.jar;%OPENMAP_HOME%\lib\omcorba_vb.jar;
-
-rem OK, now run OpenMap
-%JAVABIN% -Xmx64m -Dopenmap.configDir=%OPENMAP_HOME%\share -Ddebug.showprogress com.bbn.openmap.app.Main
diff --git a/bin/simple b/bin/simple
deleted file mode 100644
index 8eec27a40..000000000
--- a/bin/simple
+++ /dev/null
@@ -1,91 +0,0 @@
-#! /bin/sh
-
-# Modified from the ant startup script to start HelloWorld instead.
-
-# Cygwin support. $cygwin _must_ be set to either true or false.
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- *) cygwin=false ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin; then
- [ -n "$OPENMAP_HOME" ] &&
- OPENMAP_HOME=`cygpath --unix "$OPENMAP_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-if [ "$OPENMAP_HOME" = "" ] ; then
- # try to find OPENMAP
- if [ -d /usr/local/openmap ] ; then
- OPENMAP_HOME=/usr/local/openmap
- fi
-
- if [ -d ${HOME}/openmap ] ; then
- OPENMAP_HOME=${HOME}/openmap
- fi
-
- ## resolve links - $0 may be a link to ant's home
- PRG=$0
- progname=`basename $0`
-
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '.*/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname $PRG`/$link"
- fi
-
- done
-
- OPENMAP_HOME=`dirname "$PRG"`/..
-
-fi
-
-if [ "$JAVA_HOME" != "" ] ; then
- if [ "$JAVACMD" = "" ] ; then
- JAVACMD=$JAVA_HOME/bin/java
- fi
-else
- if [ "$JAVACMD" = "" ] ; then
- JAVACMD=java
- fi
-fi
-
-# add in the dependency .jar files
-DIRLIBS=${OPENMAP_HOME}/lib/*.jar
-# Change to match your installation
-for i in ${DIRLIBS}
-do
- # if the directory is empty, then it will return the input string
- # this is stupid, so case for it
- if [ "$i" != "${DIRLIBS}" ] ; then
- if [ "$LOCALCLASSPATH" != "" ] ; then
- LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
- else
- LOCALCLASSPATH="$i"
- fi
- fi
-done
-
-LOCALCLASSPATH=$LOCALCLASSPATH:${OPENMAP_HOME}/share
-
-if [ "$CLASSPATH" != "" ] ; then
- LOCALCLASSPATH=$CLASSPATH:${OPENMAP_HOME}/classes/openmap:${OPENMAP_HOME}/classes/corba_vb$LOCALCLASSPATH
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- OPENMAP_HOME=`cygpath --path --windows "$OPENMAP_HOME"`
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
-fi
-
-$JAVACMD -Xmx256m -classpath "$LOCALCLASSPATH" -Dopenmap.configDir=$OPENMAP_HOME/share com.bbn.openmap.app.example.SimpleMap
-
-
diff --git a/bin/simple.bat b/bin/simple.bat
deleted file mode 100644
index ab36e87c7..000000000
--- a/bin/simple.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-
-rem This will launch the OpenMap application
-rem YOU MUST EDIT THE SETTINGS IN THIS FILE TO MATCH YOUR CONFIGURATION
-
-rem Java Virtual Machine
-rem CHANGE THIS TO POINT TO YOUR JAVA INSTALLATION IF JAVA ISN"T IN YOUR PATH
-set JAVABIN=java.exe
-
-rem OpenMap top-level directory
-rem THIS POINTS TO THE DIRECTORY ABOVE "BIN". CHANGE THIS IF YOU MOVE THE
-rem BATCH FILE.
-set OPENMAP_HOME=..
-
-rem CLASSPATH points to toplevel OpenMap directory and share subdirectory
-set CLASSPATH=%OPENMAP_HOME%\classes\openmap;%OPENMAP_HOME%\share;%OPENMAP_HOME%\lib\openmap.jar;
-
-rem OK, now run OpenMap
-%JAVABIN% -mx64m -Dopenmap.configDir=%OPENMAP_HOME%\share com.bbn.openmap.app.example.SimpleMap
diff --git a/bin/simple2 b/bin/simple2
deleted file mode 100644
index 48860813a..000000000
--- a/bin/simple2
+++ /dev/null
@@ -1,91 +0,0 @@
-#! /bin/sh
-
-# Modified from the ant startup script to start HelloWorld instead.
-
-# Cygwin support. $cygwin _must_ be set to either true or false.
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
- *) cygwin=false ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin; then
- [ -n "$OPENMAP_HOME" ] &&
- OPENMAP_HOME=`cygpath --unix "$OPENMAP_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-if [ "$OPENMAP_HOME" = "" ] ; then
- # try to find OPENMAP
- if [ -d /usr/local/openmap ] ; then
- OPENMAP_HOME=/usr/local/openmap
- fi
-
- if [ -d ${HOME}/openmap ] ; then
- OPENMAP_HOME=${HOME}/openmap
- fi
-
- ## resolve links - $0 may be a link to ant's home
- PRG=$0
- progname=`basename $0`
-
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '.*/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname $PRG`/$link"
- fi
-
- done
-
- OPENMAP_HOME=`dirname "$PRG"`/..
-
-fi
-
-if [ "$JAVA_HOME" != "" ] ; then
- if [ "$JAVACMD" = "" ] ; then
- JAVACMD=$JAVA_HOME/bin/java
- fi
-else
- if [ "$JAVACMD" = "" ] ; then
- JAVACMD=java
- fi
-fi
-
-# add in the dependency .jar files
-DIRLIBS=${OPENMAP_HOME}/lib/*.jar
-# Change to match your installation
-for i in ${DIRLIBS}
-do
- # if the directory is empty, then it will return the input string
- # this is stupid, so case for it
- if [ "$i" != "${DIRLIBS}" ] ; then
- if [ "$LOCALCLASSPATH" != "" ] ; then
- LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
- else
- LOCALCLASSPATH="$i"
- fi
- fi
-done
-
-LOCALCLASSPATH=$LOCALCLASSPATH:${OPENMAP_HOME}/share
-
-if [ "$CLASSPATH" != "" ] ; then
- LOCALCLASSPATH=$CLASSPATH:${OPENMAP_HOME}/classes/openmap:${OPENMAP_HOME}/classes/corba_vb$LOCALCLASSPATH
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- OPENMAP_HOME=`cygpath --path --windows "$OPENMAP_HOME"`
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
-fi
-
-$JAVACMD -Xmx256m -classpath "$LOCALCLASSPATH" -Dopenmap.configDir=$OPENMAP_HOME/share com.bbn.openmap.app.example.SimpleMap2
-
-
diff --git a/bin/simple2.bat b/bin/simple2.bat
deleted file mode 100644
index 4e8912881..000000000
--- a/bin/simple2.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-
-rem This will launch the OpenMap application
-rem YOU MUST EDIT THE SETTINGS IN THIS FILE TO MATCH YOUR CONFIGURATION
-
-rem Java Virtual Machine
-rem CHANGE THIS TO POINT TO YOUR JAVA INSTALLATION IF JAVA ISN"T IN YOUR PATH
-set JAVABIN=java.exe
-
-rem OpenMap top-level directory
-rem THIS POINTS TO THE DIRECTORY ABOVE "BIN". CHANGE THIS IF YOU MOVE THE
-rem BATCH FILE.
-set OPENMAP_HOME=..
-
-rem CLASSPATH points to toplevel OpenMap directory and share subdirectory
-set CLASSPATH=%OPENMAP_HOME%\classes\openmap;%OPENMAP_HOME%\share;%OPENMAP_HOME%\lib\openmap.jar;
-
-rem OK, now run OpenMap
-%JAVABIN% -mx64m -Dopenmap.configDir=%OPENMAP_HOME%\share com.bbn.openmap.app.example.SimpleMap2
diff --git a/build.xml b/build.xml
deleted file mode 100644
index a6d5ca8fc..000000000
--- a/build.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/.gitignore b/lib/.gitignore
deleted file mode 100644
index b9c0b59e6..000000000
--- a/lib/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/omcorba.jar
-/omj3d.jar
-/omsvg.jar
-/openmap.jar
diff --git a/lib/milStd2525_png.jar b/lib/milStd2525_png.jar
deleted file mode 100644
index 1f46e55d0..000000000
Binary files a/lib/milStd2525_png.jar and /dev/null differ
diff --git a/logging.properties b/logging.properties
deleted file mode 100644
index b44f74630..000000000
--- a/logging.properties
+++ /dev/null
@@ -1,63 +0,0 @@
-############################################################
-# Default Logging Configuration File
-#
-# You can use a different file by specifying a filename
-# with the java.util.logging.config.file system property.
-# For example java -Djava.util.logging.config.file=myfile
-############################################################
-
-############################################################
-# Global properties
-############################################################
-
-# "handlers" specifies a comma separated list of log Handler
-# classes. These handlers will be installed during VM startup.
-# Note that these classes must be on the system classpath.
-# By default we only configure a ConsoleHandler, which will only
-# show messages at the INFO and above levels.
-handlers= java.util.logging.ConsoleHandler
-
-# To also add the FileHandler, use the following line instead.
-handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
-
-# Default global logging level.
-# This specifies which kinds of events are logged across
-# all loggers. For any given facility this global level
-# can be overriden by a facility specific level
-# Note that the ConsoleHandler also has a separate level
-# setting to limit messages printed to the console.
-.level= INFO
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-# default file output is in user's home directory.
-java.util.logging.FileHandler.pattern = %h/openmap-%u.log
-#java.util.logging.FileHandler.limit = 50000
-java.util.logging.FileHandler.count = 1
-
-# There are options for formatting logging output
-#java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
-#java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
-java.util.logging.FileHandler.formatter = com.bbn.openmap.util.OMLoggingFormatter
-
-# Limit the message that are printed on the console to INFO and above.
-java.util.logging.ConsoleHandler.level = FINER
-#java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-java.util.logging.ConsoleHandler.formatter = com.bbn.openmap.util.OMLoggingFormatter
-
-
-############################################################
-# Facility specific properties.
-# Provides extra control for each logger.
-############################################################
-
-# CONFIG, INFO, FINE, FINER, FINEST, WARN, SEVERE
-# For example, set the com.bbn.openmap.MapBean logger to only log FINE
-# messages:
-#com.bbn.openmap.MapBean.level = FINE
-
-#Turns on map tile debugging
-#MAPTILE_DEBUGGING.level = FINE
\ No newline at end of file
diff --git a/openmap.properties b/openmap.properties
deleted file mode 100644
index abcc70af2..000000000
--- a/openmap.properties
+++ /dev/null
@@ -1,1038 +0,0 @@
-# **********************************************************************
-#
-#
-#
-# BBN Technologies
-# 10 Moulton Street
-# Cambridge, MA 02138
-# (617) 873-8000
-#
-# Copyright (C) BBNT Solutions LLC. All rights reserved.
-#
-#
-# **********************************************************************
-#
-# $Source: /cvs/distapps/openmap/openmap.properties,v $
-# $RCSfile: openmap.properties,v $
-# $Revision: 1.38.2.11 $
-# $Date: 2009/03/03 21:20:51 $
-# $Author: dietrick $
-#
-# **********************************************************************
-#
-# WHAT IS THIS FILE?
-#
-# This is a generic OpenMap properties file, which controls how
-# components are loaded into the OpenMap application. It specifies
-# the initial projection the map should have when OpenMap is started,
-# the layers that should be available, which ones should be turned on,
-# and lets you adjust all the layers' attributes for their startup
-# configuration. Most importantly, this file also lets you add and
-# remove different components from the application itself. You can
-# modify it with any text editor you like.
-#
-# WHAT ARE PROPERTIES?
-#
-# Java properties are a set of key=value pairs. The key is the name
-# of the thing you are setting, and the value is what you are setting
-# it to. There are a couple of things to look for that we do with key
-# values in this properties file.
-#
-# First, all the properties that can be set for a component are
-# *hopefully* listed in the Javadocs (Java API documentation). If a
-# component is specified as a com.bbn.openmap.PropertyConsumer, it
-# will be given a chance to configure itself based on the settings
-# within the properties file. Components can be layers or any other
-# part of the OpenMap application.
-#
-# Secondly, the keys are scoped to focus the value to a specific
-# instance of a components. If there are more that one layer of a
-# specific type (say, two ShapeLayers, one for roads and one for
-# rivers), the names of the keys will have a different prefix for the
-# key. For instance, ShapeLayers have a lineColor attribute you can
-# set in this file, and the value used is a hexadecimal value for an
-# ARGB color (transparency (A), red (R), green (G), blue (B)):
-#
-# For a red, non-transparent color for the line.
-# lineColor=FFFF0000
-#
-# But there are two layers - to scope the property for different
-# layers, a prefix must be added to the property, separated by a '.':
-#
-# roads.lineColor=FFFF0000
-# rivers.lineColor=FF0000FF
-#
-# In this case, the roads layer has a red line color and the rivers
-# layer has a blue line color. The prefix 'roads' and 'rivers' is
-# something picked to your liking and used only within this property
-# file, and is referred to in OpenMap documentation as a marker name.
-# Marker names are first used in a list - the openmap.layers property
-# is a perfect example:
-#
-# openmap.layers=first second third
-#
-# In this example, I've chosen first, second and third to be marker
-# names of three different layers. Later in the properties file, I
-# would use these marker names to define the layers and each layer's
-# attributes. For the 'first' layer, I'll define a ShapeLayer:
-#
-# # All layers require a class name that defines which one to use
-# first.class=com.bbn.openmap.layer.shape.ShapeLayer
-#
-# # And a pretty name to use in the GUI
-# first.prettyName=Roads
-#
-# # Now come properties that are particular to ShapeLayers:
-#
-# # These first two are mandatory for the ShapeLayer:
-# first.shapeFile=
-# first.spatialIndex=
-#
-# # These are optional, and override the defaults set in the ShapeLayer:
-# first.lineColor=FFFF0000
-# first.lineWidth=2
-#
-# You do this for each layer listed. To add a layer to the
-# application, you make up a marker name, add it to the list, and then
-# define a set of properties for it using the marker name as a prefix.
-#
-
-# This marker name list paradigm is used throughout the properties
-# file. It's an important concept to understand before modifying this
-# file.
-#
-# HOW MANY PROPERTIES FILES ARE THERE?
-#
-# OpenMap looks for this file in several different places. When it
-# finds one, it loads all the properties, and moves on. If two
-# properties have the same key, the last version read wins. The most
-# important place to keep a version of the openmap.properties file is
-# a personalized one in your home directory or profile directory.
-# This is the last one read. It also lets you personalize your
-# application setup and not affect anyone else using the OpenMap
-# installation.
-#
-# OK, lets define the map!
-#
-# ###################################################
-# These properties define the starting projection of the map.
-# These properties are listed in com.bbn.openmap.Environment.java,
-# and affect the initialization of the application.
-# ###################################################
-
-# MAP STARTUP PROJECTION PARAMETERS
-# Latitude and longitude in decimal degrees
-openmap.Latitude=20f
-openmap.Longitude=-20f
-# Scale: zoom level (1:scale)
-openmap.Scale=3000000000f
-# Projection type to start the map with. Use the class name of the
-# projection, such as com.bbn.openmap.proj.Mercator,
-# com.bbn.openmap.proj.CADRG, com.bbn.openmap.proj.Orthgraphic,
-# com.bbn.openmap.proj.LLXY or com.bbn.openmap.proj.Gnomonic
-openmap.Projection=com.bbn.openmap.proj.Mercator
-
-# APPLICATION WINDOW DIMENSIONS
-# Width and Height of map, in pixels
-openmap.Width=640
-openmap.Height=480
-
-# APPLICATION WINDOW TITLE
-# Change this for a different title in the main window.
-openmap.Title=OpenMap(tm)
-
-# WINDOW STARTUP LOCATION
-# pixel X/Y window position (if values < 0, then center the window on the screen)
-openmap.x=-1
-openmap.y=-1
-
-# MAP BACKGROUND
-# The background color of the map, in hex AARRGGBB values (AA is
-# transparency, RR, GG and BB are red, green and blue in hex values
-# between 00-FF (0-255)).
-openmap.BackgroundColor=99B3CC
-
-# Ironically, the "properties" property, which details where the
-# PropertyHandler is looking for its properties, won't work here.
-
-# ###################################################
-# These are miscellaneous variables for the OpenMap application.
-# ###################################################
-# How to launch a browser to display additional information.
-# Windows example: openmap.WebBrowser=C:\\program files\\internet explorer\\iexplore.exe
-openmap.WebBrowser=/usr/bin/netscape -install
-# Used for creating web pages for the browser
-openmap.TempDirectory=/tmp
-# Help web pages
-openmap.HelpURL=http://openmap.bbn.com/doc/user-guide.html
-# Use internal frames as an application - used to be gui.UseInternalFrames
-openmap.UseInternalFrames=false
-
-# DEBUGGING
-# OpenMap has a Debug messaging mechanism that lets you set certain
-# keywords as environment variables (-Ddebug.keyword) to enable
-# printouts from different objects. The code contains these keywords,
-# and by looking at a class's code, you can figure out what the
-# keywords are (look for Debug.message("keyword", "message") and 'if
-# (Debug.debugging("keyword")' statements). You can enable these
-# messages by putting those keywords in a space-separated list in this
-# property. If you don't want extra messages, you can ignore this
-# property and leave it empty.
-#openmap.Debug=
-
-# INTERNATIONALIZATION
-# If you are interested in modifying OpenMap to display internationalized
-# strings (or to change the strings that are used in the application GIU),
-# These are the Debug flags that need to be set before the various components
-# start asking the BasicI18n class for the displayed strings. The 'i18n.create'
-# flag tells the BasicI8n class to track the strings in the locale set on the
-# machine (for I18N_language_COUNTRY.properties files), and the 'i18n.default'
-# flag tells the BasicI8n class to only track generic properties (for
-# I18N.properties files). To actually create the properties files, you have
-# to add the I18nFileCreateMenuItem to the application, look for that below.
-#openmap.Debug=i18n.create i18n.default
-
-# OPENMAP COMPONENTS
-# ###################################################
-# These properties define the general components to use in the
-# application, OTHER than layers. Notice the marker name list. You
-# can add and remove parts of the application here, simply by
-# adjusting this marker name list and adding properties for that
-# marker name. Note the order in which menu objects are important,
-# except helpMenu which is always adjusted to be the last menu item.
-#
-# If you want to remove components from the application, simply remove
-# the marker name from the openmap.components list. You don't have to
-# delete the class definition property, too. If you want to add a
-# component to the list, add the marker name to the openmap.components
-# list when you want it to be created and added relative to the other
-# components, and then add a 'marker name'.class property for that
-# component to this file.
-# ###################################################
-
-openmap.components=informationDelegator projFactory mouseDelegator projectionstack addlayer glc menulist toolBar navpanel zoompanel scalepanel projectionstacktool mouseModePanel deleteButton omdtl overviewMapHandler layersPanel selectMouseMode navMouseMode distanceMouseMode panMouseMode omdrawingtool omlineloader omcircleloader omrectloader ompointloader omsplineloader ompolyloader omscalingrasterloader omdistloader layerHandler projkeys repaintPolicy srl
-
-# ###
-# Applet components, also alternative component configuration
-# with OMControlPanel on the left side of the applet. To enable this
-# list, simply uncomment it.
-# ###
-#openmap.components=informationDelegator projFactory mouseDelegator projectionstack addlayer glc menulist toolBar mouseModePanel selectMouseMode navMouseMode distanceMouseMode omdtl deleteButton omdrawingtool omlineloader omcircleloader omrectloader ompointloader omsplineloader omdecsplineloader ompolyloader omscalingrasterloader omdistloader controlpanel layerHandler projkeys repaintPolicy srl
-
-main.components=informationDelegator projFactory mouseDelegator addlayer glc menulist toolBar deleteButton omdtl overviewMapHandler layersPanel mouseMode omdrawingtool omlineloader omcircleloader omrectloader ompointloader omsplineloader ompolyloader omscalingrasterloader omdistloader layerHandler projkeys repaintPolicy srl scalepanel
-main.activeWidgets.fillColor=BBBBBB
-
-# ###################################################
-# Menu configuration, defining the menu items listed in the
-# openmap.components list.
-
-menulist.class=com.bbn.openmap.gui.menu.MenuList
-menulist.menus=fileMenu controlMenu navigateMenu layersMenu gotoMenu helpMenu
-fileMenu.class=com.bbn.openmap.gui.FileMenu
-controlMenu.class=com.bbn.openmap.gui.ControlMenu
-
-# INTERNATIONALIZATION
-# To get the BasicI18n class to create the internationalization property
-# files after you have set the Debug statements described above, you can add this
-# toolMenu to the menulist.menus list above:
-toolMenu.class=com.bbn.openmap.gui.menu.OMBasicMenu
-toolMenu.prettyName=Tools
-toolMenu.mnemonic=T
-toolMenu.items=i18ndump
-i18ndump.class=com.bbn.openmap.gui.menu.I18nFileCreateMenuItem
-
-###
-# Adding a menu item to toggle on/off the OMControlPanel if it is
-# added to the openmap.components list.
-controlMenu.items=controlPanelToggle
-controlPanelToggle.class=com.bbn.openmap.gui.menu.ControlPanelToggleMenuItem
-###
-
-navigateMenu.class=com.bbn.openmap.gui.NavigateMenu
-layersMenu.class=com.bbn.openmap.gui.LayersMenu
-gotoMenu.class=com.bbn.openmap.gui.GoToMenu
-gotoMenu.addDefaults=true
-
-### Add your own views to the GoToMenu
-#gotoMenu.views=Argentina India United_States
-#Argentina.latitude=-39.760445
-#Argentina.longitude=-65.92294
-#Argentina.name=Argentina
-#Argentina.projection=Mercator
-#Argentina.scale=5.0E7
-#India.latitude=20.895763
-#India.longitude=80.437485
-#India.name=India
-#India.projection=Mercator
-#India.scale=3.86688E7
-#United_States.latitude=38.82259
-#United_States.longitude=-96.74999
-#United_States.name=United States
-#United_States.projection=Mercator
-#United_States.scale=5.186114E7
-###
-
-helpMenu.class=com.bbn.openmap.gui.DefaultHelpMenu
-helpMenu.items=helpUserMenuItem
-helpUserMenuItem.class=com.bbn.openmap.gui.UserGuideMenuItems
-helpUserMenuItem.class=com.bbn.openmap.gui.menu.WebSiteHelpMenuItem
-
-# End menu item definitions
-# ###################################################
-
-# ###################################################
-# Defining the other components in the openmap.components list:
-
-# Key components, usually always want these.
-mouseDelegator.class=com.bbn.openmap.MouseDelegator
-informationDelegator.class=com.bbn.openmap.InformationDelegator
-layerHandler.class=com.bbn.openmap.LayerHandler
-
-# General function additions
-projkeys.class=com.bbn.openmap.event.ProjMapBeanKeyListener
-repaintPolicy.class=com.bbn.openmap.HintsMapBeanRepaintPolicy
-repaintPolicy.renderingHints=KEY_ANTIALIASING
-repaintPolicy.KEY_ANTIALIASING=VALUE_ANTIALIAS_ON
-repaintPolicy.KEY_RENDERING=VALUE_RENDER_SPEED
-projectionstack.class=com.bbn.openmap.proj.ProjectionStack
-layersPanel.class=com.bbn.openmap.gui.LayersPanel
-menuPanel.class=com.bbn.openmap.gui.MenuPanel
-dndCatcher.class=com.bbn.openmap.tools.dnd.DefaultDnDCatcher
-dropSupport.class=com.bbn.openmap.tools.dnd.DropListenerSupport
-
-# Mouse handling components
-mouseModePanel.class=com.bbn.openmap.gui.MouseModeButtonPanel
-selectMouseMode.class=com.bbn.openmap.event.SelectMouseMode
-distanceMouseMode.class=com.bbn.openmap.event.DistanceMouseMode
-panMouseMode.class=com.bbn.openmap.event.PanMouseMode
-panMouseMode.azPanningShapefile=data/shape/dcwpo-browse.shp
-# Floating number between 0-1, with 1 being opaque, default .5
-panMouseMode.opaqueness=1
-# True/false, to leave old map up behind panned version.
-panMouseMode.leaveShadow=false
-# There's a NavMouseMode, too. This one defines boxes from center
-navMouseMode.class=com.bbn.openmap.event.NavMouseMode2
-nullMouseMode.class=com.bbn.openmap.event.NullMouseMode
-# Only mouse mode in "Main" application
-mouseMode.class=com.bbn.openmap.event.OMMouseMode
-mouseMode.azPanningShapefile=data/shape/dcwpo-browse.shp
-
-# Drawing tool parts
-omdtl.class=com.bbn.openmap.tools.drawing.OMDrawingToolLauncher
-omcircleloader.class=com.bbn.openmap.tools.drawing.OMCircleLoader
-omdecsplineloader.class=com.bbn.openmap.tools.drawing.OMDecoratedSplineLoader
-omdistloader.class=com.bbn.openmap.tools.drawing.OMDistanceLoader
-omdrawingtool.class=com.bbn.openmap.tools.drawing.OMDrawingTool
-omlineloader.class=com.bbn.openmap.tools.drawing.OMLineLoader
-ompointloader.class=com.bbn.openmap.tools.drawing.OMPointLoader
-ompolyloader.class=com.bbn.openmap.tools.drawing.OMPolyLoader
-omrectloader.class=com.bbn.openmap.tools.drawing.OMRectLoader
-omscalingrasterloader.class=com.bbn.openmap.tools.drawing.OMScalingRasterLoader
-omsplineloader.class=com.bbn.openmap.tools.drawing.OMSplineLoader
-
-# ##
-# ToolPanel definitions for the first ToolPanel 'toolbar'
-toolBar.class=com.bbn.openmap.gui.ToolPanel
-# Tell the first ToolPanel to avoid putting the DrawingToolLayer GUI
-# in it:
-#toolBar.avoid=dtlayer
-
-# ToolPanel definitions for the second ToolPanel 'toolbar2'
-#toolBar2.class=com.bbn.openmap.gui.ToolPanel
-# Tell the second ToolPanel that you only want it to put the
-# DrawingToolLayer GUI in it:
-#toolBar2.components=dtlayer
-
-# You can set the location, but it interferes with the
-# InformationDelegator. Undefined, the ToolPanel goes North, but then
-# it interferes with the first ToolPanel.
-
-#toolBar2.preferredLocation=SOUTH
-
-# Specific Tools
-navpanel.class=com.bbn.openmap.gui.NavigatePanel
-deleteButton.class=com.bbn.openmap.gui.OMGraphicDeleteTool
-projectionstacktool.class=com.bbn.openmap.gui.ProjectionStackTool
-scalepanel.class=com.bbn.openmap.gui.ScaleTextPanel
-zoompanel.class=com.bbn.openmap.gui.ZoomPanel
-
-# ###
-
-projFactory.class=com.bbn.openmap.proj.ProjectionFactory
-projFactory.projectionLoaders=mercatorloader cadrgloader ortholoader llxyloader gnomonicloader
-projFactory.mercatorloader.class=com.bbn.openmap.proj.MercatorLoader
-projFactory.cadrgloader.class=com.bbn.openmap.proj.CADRGLoader
-projFactory.ortholoader.class=com.bbn.openmap.proj.OrthographicLoader
-projFactory.llxyloader.class=com.bbn.openmap.proj.LLXYLoader
-projFactory.gnomonicloader.class=com.bbn.openmap.proj.GnomonicLoader
-
-# Not used by default, in secondary openmap.components list, puts controls in panel left of map.
-controlpanel.class=com.bbn.openmap.gui.OMControlPanel
-controlpanel.OverviewMapHandler.overviewLayers=overviewLayer
-controlpanel.OverviewMapHandler.isTool=false
-controlpanel.OverviewMapHandler.overviewScaleFactor=30f
-controlpanel.OverviewMapHandler.overviewMinScale=50000000f
-controlpanel.OverviewMapHandler.overviewStatusLayer=com.bbn.openmap.layer.OverviewMapAreaLayer
-controlpanel.OverviewMapHandler.lineColor=FFFF0000
-controlpanel.OverviewMapHandler.fillColor=33FF0000
-controlpanel.LayersPanel.controls=com.bbn.openmap.gui.LayerControlButtonPanel
-controlpanel.LayersPanel.controls.orientation=horizontal
-controlpanel.LayersPanel.controls.configuration=NORTH
-
-# ###
-# BeanPanel properties - the BeanPanel isn't defined in the
-# openmap.components list above, you would add 'beanpanel' to that
-# list and uncomment these properties:
-# ###
-#beanpanel.class=com.bbn.openmap.tools.beanbox.BeanPanel
-#beanpanel.beans.path=path to directory containing jar files
-#beanpanel.tabs=tab1 tab2 tab3
-#beanpanel.tab1.name=Generic
-#beanpanel.tab1.beans=com.bbn.openmap.examples.beanbox.SimpleBeanObject
-#beanpanel.tab2.name=Container
-#beanpanel.tab2.beans=com.bbn.openmap.examples.beanbox.SimpleBeanContainer
-#beanpanel.tab3.name=Military
-#beanpanel.tab3.beans=com.bbn.openmap.examples.beanbox.Fighter
-
-# ###
-# MIL-STD-2525B SYMBOLOGY COMPONENT
-# SymbolReferenceLibrary properties - the SymbolReferenceLibrary
-# openmap.components list above, you would add 'srl' to that
-# list and uncomment these properties:
-# ###
-srl.class=com.bbn.openmap.tools.symbology.milStd2525.SymbolReferenceLibrary
-# Uncomment the one that fits the dataset you are using
-#srl.imageMakerClass=com.bbn.openmap.tools.symbology.milStd2525.SVGSymbolImageMaker
-srl.imageMakerClass=com.bbn.openmap.tools.symbology.milStd2525.PNGSymbolImageMaker
-# Optional property:
-#srl.path=
-
-# Defining the DTED frame cache. 'dtedframecache' needs to be added
-# to the openmap.components list, and the path to a dted directory
-# needs to be modified to fit your installation.
-dtedframecache.class=com.bbn.openmap.dataAccess.dted.DTEDFrameCache
-dtedframecache.directoryHandlers=dted1
-dtedframecache.dted1.path=/data/dted
-
-# Defining a VPF VMAP level 0 tile cache. 'vpfcache' needs to be
-# added to the openmap.components list, and the path to your vmap level
-# 0 needs to be modified to fit your installation. In the VPFLayer
-# that uses this tile cache, the layer's libraryBean property would be
-# set to VMAPLEVEL0, the name of this cache.
-vpfcache.class=com.bbn.openmap.layer.vpf.LibraryBean
-vpfcache.name=VMAPLEVEL0
-vpfcache.vpfPath=/data/vpf/vmaplv0/disk0;/data/vpf/vmaplv0/disk1
-
-# ###
-# Properties defined for the overview map handler.
-# ###
-overviewMapHandler.class=com.bbn.openmap.gui.OverviewMapHandler
-# marker name list defining background layers used on overview map.
-# The layers are defined as any other layer is below, look
-# for 'overviewLayer' properties. This is a space-separated list of
-# marker names.
-overviewMapHandler.overviewLayers=overviewLayer
-# how zoomed out to keep the overview map versus the main map
-overviewMapHandler.overviewScaleFactor=10f
-# when to stop zooming in
-overviewMapHandler.overviewMinScale=10000000f
-# the layer to use to render on top, showing where the main map covers.
-overviewMapHandler.overviewStatusLayer=com.bbn.openmap.layer.OverviewMapAreaLayer
-overviewMapHandler.lineColor=ffff0000
-overviewMapHandler.fillColor=66ff0000
-# ###
-
-# The AddLayerPanel allows certain layers to be added to the
-# application dynamically. Only certain layers have been
-# updated to be able to work with the Inspector to set their initial
-# parameters. The 'addlayer' marker name was added to the
-# openmap.components list, and this component looks for the
-# openmap.addableLayers property to figure out what layers to make
-# available for dynamic addition. To add a layer to this list, create
-# a unique marker name for a generic instance of the layer, and then
-# supply the .class field and .prettyName (see
-# below) for that object. The class name will be the type of
-# layer created by the LayerAddPanel, and this prettyName will
-# be the generic description of the layer presented to the user. The
-# user will have an opportunity to name the specific layer that gets
-# created.
-
-# Define the class for the component listed in the openmap.components
-# list:
-addlayer.class=com.bbn.openmap.gui.LayerAddPanel
-
-# Define a list of addable layers:
-openmap.addableLayers=mptle mptleutil shape grat utmgrid rpf shispi eipi wmsp epi
-
-# Define the properties of the addable layers:
-shape.class=com.bbn.openmap.layer.shape.ShapeLayer
-shape.prettyName=Shape Layer
-grat.class=com.bbn.openmap.layer.GraticuleLayer
-grat.prettyName=Graticule Layer
-utmgrid.class=com.bbn.openmap.layer.UTMGridLayer
-utmgrid.prettyName=UTM Grid Overlay
-rpf.class=com.bbn.openmap.layer.rpf.RpfLayer
-rpf.prettyName=RPF Layer
-shispi.class=com.bbn.openmap.layer.image.SHISLayer
-shispi.prettyName=Simple Http Image Server (SHIS) Layer
-eipi.class=com.bbn.openmap.layer.image.EarthImageLayer
-eipi.prettyName=Earth Image Layer
-wmsp.class=com.bbn.openmap.layer.image.WMSLayer
-wmsp.prettyName=WMS Layer
-epi.class=com.bbn.openmap.layer.shape.EsriLayer
-epi.prettyName=Shape Layer with Attributes
-mptle.class=com.bbn.openmap.layer.imageTile.MapTileLayer
-mptle.prettyName=Map Tile Layer
-mptleutil.class=com.bbn.openmap.layer.imageTile.MapTileUtilLayer
-mptleutil.prettyName=Map Tile Grid Layer
-
-# To test how fast your application redraws, use this and add anime to your
-# components list. A layer will be created for it, and the palette for the layer
-# controls the component. You can add sprites and adjust the redrawing timer. The
-# GraphicLoaderConnector needs to be added to the components list as well.
-anime.class=com.bbn.openmap.graphicLoader.AnimationTester
-
-# End component definitions
-# ###################################################
-
-# IMAGE SERVER SETTINGS
-# ###################################################
-# These properties define the formatters the Simple Http
-# Image Server uses. The default formatter is the first one
-# in the list.
-# The layers property can be used to override the
-# openmap.startUpLayers property as the default layers.
-# ###################################################
-
-formatters=gif jpeg png png8 png32
-gif.class =com.bbn.openmap.image.AcmeGifFormatter
-jpeg.class=com.bbn.openmap.image.SunJPEGFormatter
-png.class=com.bbn.openmap.image.PNGImageIOFormatter
-png8.class=com.bbn.openmap.image.PNG8ImageFormatter
-png32.class=com.bbn.openmap.image.PNG32ImageFormatter
-#layers=date drawing daynight graticule shapePolitical
-
-# ###################################################
-# You can refer to other properties files and have their properties
-# loaded as well. This is good for defining a set of layers that work
-# with a particular type of data, for instance, and then override some
-# of those properties defined in those files to localize them for your
-# setup. This works with a marker name list. By default, nothing defined.
-# ###################################################
-
-#openmap.include=include1 include2
-#include1.URL=
-#include2.URL=
-
-# OPENMAP LAYERS
-# ###################################################
-# Here is the list of layers to add to the map. The properties for
-# each marker name are defined later.
-#
-# If you want to remove a layer from the application, remove its
-# marker name from the openmap.layers property list. You do not have
-# to delete all of its properties as well.
-#
-# If you want to add a layer to the application, add its marker name
-# to the openmap.layers property list, and then add its properties to
-# this file. As a minimum, Layers all need a 'marker name'.class
-# property, and a 'marker name'.prettyName property (for the GUI
-# components). Consult the JavaDocs for a layer to see what other
-# properties can be set for that layer.
-# ###################################################
-
-# Layers listed here appear on the Map in the order of their names.
-openmap.layers=date dtlayer distlayer daynight cities test graticule demo tiles shapePolitical
-
-# If you get more data, you can add other layers defined in this file.
-# You'll want to look at the properties for each layer and modify them
-# as needed. Check the javadocs for definitions of the available
-# properties for each layer.
-
-#openmap.layers=date daynight test graticule terrain demo dtedcov jdted jrpf shapePolitical ScaledPolitical ScaledFillPolitical
-
-# These layers are turned on when the map is first started. Order
-# does not matter here...
-openmap.startUpLayers=graticule shapePolitical
-
-# ###################################################
-# These are the properties for individual layers. Consult the
-# javadocs (Java API pages) for the individual layers for options.
-# ###################################################
-
-### Drawing version of the EditorLayer. An EditorLayer, when active,
-### places tools in the ToolPanel that creates/manipulates the
-### OMGraphics on this particular layer.
-dtlayer.class=com.bbn.openmap.layer.editor.EditorLayer
-dtlayer.prettyName=Drawing Layer
-dtlayer.editor=com.bbn.openmap.layer.editor.DrawingEditorTool
-#dtlayer.showAttributes=false
-dtlayer.loaders=lines polys rects circles points text
-dtlayer.mouseModes=Gestures
-dtlayer.distance.class=com.bbn.openmap.tools.drawing.OMDistanceLoader
-dtlayer.lines.class=com.bbn.openmap.tools.drawing.OMLineLoader
-dtlayer.polys.class=com.bbn.openmap.tools.drawing.OMPolyLoader
-dtlayer.rects.class=com.bbn.openmap.tools.drawing.OMRectLoader
-dtlayer.circles.class=com.bbn.openmap.tools.drawing.OMCircleLoader
-dtlayer.points.class=com.bbn.openmap.tools.drawing.OMPointLoader
-dtlayer.text.class=com.bbn.openmap.tools.drawing.OMTextLoader
-
-### Another Drawing version of the EditorLayer, with the editor set up
-### to only create OMDistance objects.
-distlayer.class=com.bbn.openmap.layer.editor.EditorLayer
-distlayer.prettyName=Distance Layer
-distlayer.showAttributes=false
-distlayer.editor=com.bbn.openmap.layer.editor.DrawingEditorTool
-distlayer.loaders=distance
-distlayer.distance.class=com.bbn.openmap.tools.drawing.OMDistanceLoader
-distlayer.distance.attributesClass=com.bbn.openmap.omGraphics.DrawingAttributes
-distlayer.distance.lineColor=FFAA0000
-distlayer.distance.mattingColor=66333333
-distlayer.distance.matted=true
-
-### Layer to catch Drag and Drop events from the DefaultDnDCatcher and
-### DropListenerSupport
-simpleBeanLayer.class=com.bbn.openmap.examples.beanbox.SimpleBeanLayer
-simpleBeanLayer.prettyName=Simple Bean Layer
-
-### Layer used by the overview handler
-overviewLayer.class=com.bbn.openmap.layer.shape.ShapeLayer
-overviewLayer.prettyName=Overview
-overviewLayer.shapeFile=data/shape/dcwpo-browse.shp
-overviewLayer.spatialIndex=data/shape/dcwpo-browse.ssx
-overviewLayer.lineColor=ff000000
-overviewLayer.fillColor=DAD5CB
-
-###
-# Demo layer - the layer's palette has a bunch of buttons to call
-# the Drawing Tool.
-demo.class=com.bbn.openmap.layer.DemoLayer
-demo.prettyName=Demo
-
-###
-# DrawingToolLayer - no palette, just a generic layer to catch
-# graphics from the OMDrawingToolLauncher, and to call the OMDrawingTool
-# to edit graphics already part of the layer.
-drawing.class=com.bbn.openmap.layer.DrawingToolLayer
-drawing.prettyName=Drawing Tool Layer
-drawing.addToBeanContext=true
-
-### ShapeFile layers
-shapePolitical.class=com.bbn.openmap.layer.shape.ShapeLayer
-shapePolitical.prettyName=Political Boundaries
-# Specify shapefile and spatial-index file as a filename or pathname.
-# If the former, you must reference the directory where this file
-# lives in your CLASSPATH
-#shapePolitical.shapeFile=data/shape/dcwpo-browse.shp
-#shapePolitical.spatialIndex=data/shape/dcwpo-browse.ssx
-shapePolitical.shapeFile=data/shape/cntry02/cntry02.shp
-# Colors (32bit ARGB)
-shapePolitical.lineColor=ff000000
-shapePolitical.fillColor=DAD5CB
-shapePolitical.background=true
-shapePolitical.rules=1 2 3 4 5 6 7 8
-# rule0 definition:
-shapePolitical.1.key=COLOR_MAP
-shapePolitical.1.op=equals
-shapePolitical.1.val=1
-shapePolitical.1.fillColor=F0F0F0
-shapePolitical.1.render=true
-shapePolitical.2.key=COLOR_MAP
-shapePolitical.2.op=equals
-shapePolitical.2.val=2
-shapePolitical.2.fillColor=e9e9e9
-shapePolitical.2.render=true
-shapePolitical.3.key=COLOR_MAP
-shapePolitical.3.op=equals
-shapePolitical.3.val=3
-shapePolitical.3.fillColor=e0e0e0
-shapePolitical.3.render=true
-shapePolitical.4.key=COLOR_MAP
-shapePolitical.4.op=equals
-shapePolitical.4.val=4
-shapePolitical.4.fillColor=d9d9d9
-shapePolitical.4.render=true
-shapePolitical.5.key=COLOR_MAP
-shapePolitical.5.op=equals
-shapePolitical.5.val=5
-shapePolitical.5.fillColor=d0d0d0
-shapePolitical.5.render=true
-shapePolitical.6.key=COLOR_MAP
-shapePolitical.6.op=equals
-shapePolitical.6.val=6
-shapePolitical.6.fillColor=c9c9c9
-shapePolitical.6.render=true
-shapePolitical.7.key=COLOR_MAP
-shapePolitical.7.op=equals
-shapePolitical.7.val=7
-shapePolitical.7.fillColor=c0c0c0
-shapePolitical.7.render=true
-shapePolitical.8.key=COLOR_MAP
-shapePolitical.8.op=equals
-shapePolitical.8.val=8
-shapePolitical.8.fillColor=b9b9b9
-shapePolitical.8.render=true
-
-# ScaleFilterLayer switches between the layers at the transisition scales.
-ScaledPolitical.class=com.bbn.openmap.layer.ScaleFilterLayer
-ScaledPolitical.prettyName=Political Boundaries
-# List 2 or more layers
-ScaledPolitical.layers=ThinShapePolitical ShapePolitical
-# List the transition scales to switch between layers
-ScaledPolitical.transitionScales=5000000
-
-# ScaleFilterLayer switches between the layers at the transisition scales.
-ScaledFillPolitical.class=com.bbn.openmap.layer.ScaleFilterLayer
-ScaledFillPolitical.prettyName=Political Areas
-# List 2 or more layers
-ScaledFillPolitical.layers=ThinShapeFillPolitical ShapeFillPolitical
-# List the transition scales to switch between layers
-ScaledFillPolitical.transitionScales=5000000
-
-### ShapeFile layer, full resolution converted vmap political boundaries
-ShapePolitical.class=com.bbn.openmap.layer.shape.ShapeLayer
-ShapePolitical.prettyName=Political Edge
-ShapePolitical.shapeFile=data/shape/vmap_edge.shp
-ShapePolitical.spatialIndex=data/shape/vmap_edge.ssx
-
-### ShapeFile layer, thinned converted vmap political boundaries
-ThinShapePolitical.class=com.bbn.openmap.layer.shape.ShapeLayer
-ThinShapePolitical.prettyName=Political Edge
-ThinShapePolitical.shapeFile=data/shape/vmap_edge_thin.shp
-ThinShapePolitical.spatialIndex=data/shape/vmap_edge_thin.ssx
-
-### ShapeFile layer, full resolution converted vmap political areas
-ShapeFillPolitical.class=com.bbn.openmap.layer.shape.ShapeLayer
-ShapeFillPolitical.prettyName=Political Solid
-ShapeFillPolitical.shapeFile=data/shape/vmap_area.shp
-ShapeFillPolitical.spatialIndex=data/shape/vmap_area.ssx
-ShapeFillPolitical.lineColor=BDDE83
-ShapeFillPolitical.fillColor=BDDE83
-
-### ShapeFile layer, thinned converted vmap political areas
-ThinShapeFillPolitical.class=com.bbn.openmap.layer.shape.ShapeLayer
-ThinShapeFillPolitical.prettyName=Political Solid
-ThinShapeFillPolitical.shapeFile=data/shape/vmap_area_thin.shp
-ThinShapeFillPolitical.spatialIndex=data/shape/vmap_area_thin.ssx
-ThinShapeFillPolitical.lineColor=BDDE83
-ThinShapeFillPolitical.fillColor=BDDE83
-
-### ShapeFile layer, thinned converted vmap political boundaries,
-# muiltiple shape files on one layer...
-politicalCombo.class=com.bbn.openmap.layer.shape.MultiShapeLayer
-politicalCombo.prettyName=Political Boundaries 2
-politicalCombo.shapeFileList=pol_edges pol_fill
-
-politicalCombo.pol_edges.shapeFile=data/shape/vmap_edge_thin.shp
-politicalCombo.pol_edges.prettyName=Borders
-politicalCombo.pol_edges.buffered=false
-
-politicalCombo.pol_fill.shapeFile=data/shape/vmap_area_thin.shp
-politicalCombo.pol_fill.prettyName=Areas
-politicalCombo.pol_fill.lineColor=FFAAAA66
-politicalCombo.pol_fill.fillColor=FFAAAA66
-politicalCombo.pol_fill.buffered=false
-
-### Graticule layer
-graticule.class=com.bbn.openmap.layer.GraticuleLayer
-graticule.prettyName=Graticule
-# Show lat / lon spacing labels
-graticule.showRuler=true
-graticule.show1And5Lines=true
-# Controls when the five degree lines and one degree lines kick in
-#- when there is less than the threshold of ten degree lat or lon
-#lines, five degree lines are drawn. The same relationship is there
-#for one to five degree lines.
-graticule.threshold=2
-# the color of 10 degree spacing lines (ARGB)
-graticule.10DegreeColor=99000000
-# the color of 5 degree spacing lines (ARGB)
-graticule.5DegreeColor=99009900
-# the color of 1 degree spacing lines (ARGB)
-graticule.1DegreeColor=99003300
-# the color of the equator (ARGB)
-graticule.equatorColor=99FF0000
-# the color of the international dateline (ARGB)
-graticule.dateLineColor=99000000
-# the color of the special lines (ARGB)
-graticule.specialLineColor=99000000
-# the color of the labels (ARGB)
-graticule.textColor=99000000
-
-### Date & Time layer
-date.class=com.bbn.openmap.layer.DateLayer
-date.prettyName=Date & Time
-# display font as a Java font string
-date.font=SansSerif-Bold
-# like XWindows geometry: [+-]X[+-]Y, `+' indicates relative to
-# left edge or top edges, `-' indicates relative to right or bottom
-# edges, XX is x coordinate, YY is y coordinate
-date.geometry=+20+30
-# background rectangle color ARGB
-date.color.bg=ff808080
-# foreground text color ARGB
-date.color.fg=ff000000
-# date format (using java.text.SimpleDateFormat patterns)
-date.date.format=EEE, d MMM yyyy HH:mm:ss z
-
-
-### Day/Night shading layer properties
-daynight.class=com.bbn.openmap.layer.daynight.DayNightLayer
-daynight.prettyName=Day/Night Shading
-# draw terminator as poly (faster calculation than image, defaults to
-# true).
-daynight.doPolyTerminator=true
-# number of vertices for polygon terminator line. this is only valid
-# if doPolyTerminator is true...
-daynight.terminatorVerts=512
-# termFade - the distance of the transition of fade, as a percentage of PI.
-daynight.termFade=.1
-# currentTime - true to display the shading at the computer's current time.
-daynight.currentTime=true
-# updateInterval - time in milliseconds between updates. currentTime has to be
-# true for this to be used. 1000*60*5 = 300000 = 5min updates
-daynight.updateInterval=300000
-# Shading Colors (32bit ARGB)
-daynight.nighttimeColor=64000000
-daynight.daytimeColor=00FFFFFF
-
-### Test layer
-test.prettyName=Test
-test.class=com.bbn.openmap.layer.test.TestLayer
-test.line.visible=true
-test.circ.visible=true
-test.rect.visible=true
-test.text.visible=true
-test.poly.visible=true
-#test.poly.vertices=80 -180 80 -90 80 0 80 90 80 180 70 180 70 90 70 0 70 -90 70 -180
-
-### VMAP Political layer - Run the com.bbn.openmap.layer.vpf.VPFConfig
-### class to create properties for a set of features.
-vmapPolitical.class=com.bbn.openmap.layer.vpf.VPFLayer
-vmapPolitical.prettyName=VMAP Political
-vmapPolitical.vpfPath=data/vmap/vmaplv0
-vmapPolitical.coverageType=bnd
-vmapPolitical.featureTypes=edge area text
-# just display coastlines and political boundaries
-#vmapPolitical.edge= polbndl coastl depthl
-vmapPolitical.edge= polbndl coastl
-# just display political areas and not oceans
-#vmapPolitical.area= oceansea polbnda
-vmapPolitical.area= polbnda
-
-# Use this property for a better focus on feature types, especially
-# for more fine-grained databases
-#vmapPolitical.searchByFeature=true
-
-### VMAP Coastline layer
-vmapCoast.class=com.bbn.openmap.layer.vpf.VPFLayer
-vmapCoast.prettyName=VMAP Coastline Layer
-vmapCoast.vpfPath=data/vmap/vmaplv0
-## a predefined layer from the VPF predefined layer set found in
-## com/bbn/openmap/layer/vpf/defaultVPFLayers.properties
-vmapCoast.defaultLayer=vmapCoastline
-
-# Basic political boundaries with DCW
-dcwPolitical.class=com.bbn.openmap.layer.vpf.VPFLayer
-dcwPolitical.prettyName=DCW Political Boundaries
-dcwPolitical.vpfPath=path to DCW data
-dcwPolitical.coverageType=po
-dcwPolitical.featureTypes=edge area
-
-# For creating other VPF layer definitions, use the
-# com.bbn.openmap.layer.vpf.VPFConfig class, running it directly on a
-# VPF data directory.
-
-# For instance, for inland water, the following properties could be
-# used, and 'vmapIW' would be added to the openmap.layers property.
-
-vmapIW.prettyName=VPF Inland Water
-vmapIW.inwatera.selectColor=ff000000
-vmapIW.searchByFeature=true
-vmapIW.inwatera.lineWidth=1.0
-
-# If you are using a VPF tile cache, specify the library bean name
-# here:
-vmapIW.libraryBean=VMAPLEVEL0
-# Otherwise, you have to specify the path to the data (parent of the
-# .lat file):
-#vmapIW.vpfPath=/data/vpf/vmaplv0/disk0
-vmapIW.inwatera.lineColor=ff000000
-vmapIW.inwatera.dashPhase=
-vmapIW.inwatera.textColor=ff000000
-vmapIW.coverageType=hydro
-vmapIW.inwatera.fillPattern=
-vmapIW.class=com.bbn.openmap.layer.vpf.VPFLayer
-vmapIW.area=inwatera
-vmapIW.inwatera.fillColor=FF0000FF
-vmapIW.featureTypes=area
-vmapIW.inwatera.dashPattern=
-vmapIW.inwatera.matted=false
-
-
-### Java RPF properties
-jrpf.class=com.bbn.openmap.layer.rpf.RpfLayer
-jrpf.prettyName=CADRG
-# This property should reflect the paths to the RPF directories
-jrpf.paths=data/RPF
-# Number between 0-255: 0 is transparent, 255 is opaque
-jrpf.opaque=255
-# Number of colors to use on the maps - 16, 32, 216
-jrpf.number.colors=216
-# Display maps on startup
-jrpf.showmaps=true
-# Display attribute information on startup
-jrpf.showinfo=false
-# Scale images to fit the map scale
-jrpf.scaleImages=true
-jrpf.coverage=true
-
-### Another Java RPF Layer - usually keep CADRG and CIB separate,
-# although you don't have to.
-jcib.class=com.bbn.openmap.layer.rpf.RpfLayer
-jcib.prettyName=CIB
-# This property should reflect the paths to the RPF directories
-jcib.paths=data/CIB/RPF
-# Number between 0-255: 0 is transparent, 255 is opaque
-jcib.opaque=255
-# Number of colors to use on the maps - 16, 32, 216
-jcib.number.colors=216
-# Display maps on startup
-jcib.showmaps=true
-# Display attribute information on startup
-jcib.showinfo=false
-# Scale images to fit the map scale
-jcib.scaleImages=true
-
-
-### Java DTED Coverage properties
-dtedcov.class=com.bbn.openmap.layer.dted.DTEDCoverageLayer
-dtedcov.prettyName=DTED Coverage
-# This property should reflect the paths to the DTED level 0 and 1
-# directories. These levels can be combined.
-dtedcov.paths=data/dted
-# DTED Level 2 data!
-dtedcov.level2.paths=data/dted2
-# Number between 0-255: 0 is transparent, 255 is opaque
-dtedcov.opaque=255
-
-# *NOTE* This property needs to be changed to specify a DTED coverage file,
-# or the location where you want one created if the layer doesn't find
-# it here. If you add or remove coverage from your dted collection,
-# you should delete this file so that an accurate one will be created.
-dtedcov.coverageFile=
-
-# This is an optional property. You can substitute a URL for the
-# coverage file instead. This is checked first before the coverage
-# file, and if a valid file is found at the URL, then the coverage
-# file is ignored. The layer does not try to create a file at this
-# URL!
-#dtedcov.coverageURL=http://dstl.bbn.com/openmap/data/dted/coverage.dat
-
-### Java DTED properties
-jdted.class=com.bbn.openmap.layer.dted.DTEDLayer
-jdted.prettyName=DTED
-# This property should reflect the paths to the DTED level 0, 1 and 2
-# directories. These levels can be combined.
-jdted.paths=data/dted
-# Number between 0-255: 0 is transparent, 255 is opaque
-jdted.opaque=255
-# Number of colors to use on the maps - 16, 32, 216
-jdted.number.colors=216
-# Level of DTED data to use on startup (0, 1, 2)
-jdted.level=0
-# Type of display for the data on startup
-# 0 = no shading at all
-# 1 = greyscale slope shading
-# 2 = band shading, in meters
-# 3 = band shading, in feet
-# 4 = subframe testing
-# 5 = elevation, colored
-jdted.view.type=5
-# Contrast setting on startup, 1-5
-jdted.contrast=3
-# height (meters or feet) between color changes in band shading on startup
-jdted.band.height=25
-# Minimum scale to display images. Larger numbers mean smaller scale,
-# and are more zoomed out.
-jdted.min.scale=20000000
-
-###
-# Java DTED Layer that uses the central DTEDFrameCache. The
-# DTEDFrameCache has to be added to the openmap.components list.
-jdted2.class=com.bbn.openmap.layer.dted.DTEDFrameCacheLayer
-jdted2.prettyName=DTED
-# and are more zoomed out.
-jdted2.min.scale=50000000
-jdted2.generators=greys colors band
-jdted2.greys.class=com.bbn.openmap.omGraphics.grid.SlopeGeneratorLoader
-jdted2.greys.prettyName=Slope Shading
-jdted2.greys.colorsClass=com.bbn.openmap.omGraphics.grid.GreyscaleSlopeColors
-jdted2.colors.class=com.bbn.openmap.omGraphics.grid.SlopeGeneratorLoader
-jdted2.colors.prettyName=Elevation Shading
-jdted2.colors.colorsClass=com.bbn.openmap.omGraphics.grid.ColoredShadingColors
-jdted2.band.class=com.bbn.openmap.omGraphics.grid.ElevationBandGeneratorLoader
-jdted2.band.prettyName=Elevation Bands
-jdted2.band.colorsClass=com.bbn.openmap.omGraphics.grid.GreyscaleSlopeColors
-
-###
-# Terrain layer. Requires the DTEDFrameCache being added to the
-# openmap.components list.
-terrain.class=com.bbn.openmap.layer.terrain.TerrainLayer
-terrain.prettyName=Terrain Tools
-# The default tool to use for the terrain layer. Can be PROFILE or LOS.
-terrain.default.mode=PROFILE
-
-###
-# LocationLayer that holds cities. The palette for this layer lets
-# you turn on the names and declutter matrix, if you want. The
-# declutter matrix can get expensive at small scales.
-cities.class=com.bbn.openmap.layer.location.LocationLayer
-cities.prettyName=World Cities
-cities.locationHandlers=csvcities
-cities.useDeclutter=false
-cities.declutterMatrix=com.bbn.openmap.layer.DeclutterMatrix
-
-csvcities.class=com.bbn.openmap.layer.location.csv.CSVLocationHandler
-csvcities.prettyName=World Cities
-csvcities.locationFile=data/cities.csv
-csvcities.csvFileHasHeader=true
-csvcities.locationColor=FF0000
-csvcities.nameColor=008C54
-csvcities.showNames=false
-csvcities.showLocations=true
-csvcities.nameIndex=0
-csvcities.latIndex=5
-csvcities.lonIndex=4
-csvcities.csvFileHasHeader=true
-
-# Map Tile Layer, using OpenStreetMap tiles
-tiles.class=com.bbn.openmap.layer.imageTile.MapTileLayer
-tiles.prettyName=OpenStreetMap Tiles
-
-# Can define root directory of tiles, using absolute or relative path.
-# This path example assumes z/x/y.png path to tiles from the root.
-#tiles.rootDir=tiles
-
-# Can also define server, but don't abuse this server! This path definition example uses
-# regex to specify format of tile query
-tiles.rootDir=http://a.tile.openstreetmap.org/{z}/{x}/{y}.png
-
-# For remote server, you can also store tiles locally, to reduce load on server.
-# You should update this with a valid path local to your machine.
-#tiles.localCacheRootDir=./share/data/tiles/osmtiles
-
-# What to do about empty tiles for bottom-most layer? Set
-# up an EmptyTileHandler. Saves disk space for tile storage. Usually
-# only applies for homegrown tile sets.
-tiles.emptyTileHandler=com.bbn.openmap.dataAccess.mapTile.ShpFileEmptyTileHandler
-# Define ocean/background colors for tiles
-tiles.background.fillColor=FFFFFF
-tiles.background.lineColor=FFFFFF
-# Define land color for tiles (empty tiles on land, too)
-tiles.land.fillColor=DECD8B
-tiles.land.lineColor=DECD8B
-# Define zoom level to limit handler response - zoom in past this provides empty coverage (clear)
-tiles.noCoverageZoom=13
-# Use shape file to determine which tiles are over land.
-tiles.shpFile=data/shape/cntry02/cntry02.shp
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index ea4a3f320..000000000
--- a/pom.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
- 4.0.0
- org.openmap-java
- openmap-all
- pom
- 6.0
- openmap-all
- A Java Beans based toolkit for building applications and applets needing geographic information
- http://openmap-java.org
-
-
-
- OpenMap Software License
- https://github.com/OpenMap-java/openmap/blob/master/LICENSE
- repo
-
-
-
- BBN Technologies
- http://www.bbn.com
-
-
-
- Don Dietrick
- dfdietrick@gmail.com
-
-
-
- scm:git:https://github.com/OpenMap-java/openmap.git
- scm:git:https://github.com/OpenMap-java/openmap
- https://github.com/OpenMap-java/openmap
-
-
-
- https://groups.google.com/forum/#!forum/openmap-users
-
-
- http://openmap-java.org/openmap-users-archives/index.html
-
-
-
-
-
- thirdparty-releases
- JBoss Thirdparty Releases
- https://repository.jboss.org/nexus/content/repositories/thirdparty-releases
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.1
-
- 1.7
- 1.7
-
-
-
- org.apache.maven.plugins
- maven-release-plugin
- 2.4.1
-
- true
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
- 3.2.1
-
-
- attach-sources
- install
-
- jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 3.2.0
-
- false
- private
-
-
-
- attach-javadocs
- install
-
- jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
- 3.1.1
-
-
- copy-dependencies
- package
-
- copy-dependencies
-
-
-
-
-
-
-
-
-
- src/core
-
- src/wmsservlet
- src/maptileservlet
- src/vpfbrowseservlet
-
-
-
-
-
-
diff --git a/share/data/cities.csv b/share/data/cities.csv
deleted file mode 100644
index 4a908371f..000000000
--- a/share/data/cities.csv
+++ /dev/null
@@ -1,607 +0,0 @@
-CITY_NAME,COUNTRY,POP,CAP,LONGITUDE,LATITUDE
-Murmansk,Russia,468000,N,33.0860405,68.96354675
-Arkhangelsk,Russia,416000,N,40.64616013,64.52066803
-Saint Petersburg,Russia,5825000,N,30.45332718,59.95188904
-Magadan,Russia,152000,N,150.780014,59.57099915
-Perm',Russia,1160000,N,56.23246384,58.00023651
-Yekaterinburg,Russia,1620000,N,60.61013031,56.84654236
-Nizhniy Novgorod,Russia,2025000,N,43.94067001,56.28967667
-Glasgow,UK,1800000,N,-4.269947529,55.86280823
-Kazan',Russia,1140000,N,49.14546585,55.73300552
-Chelyabinsk,Russia,1325000,N,61.39261246,55.14500046
-Omsk,Russia,1175000,N,73.25028992,55.0633049
-Novosibirsk,Russia,1600000,N,82.94284821,55.03210068
-Ufa,Russia,1100000,N,56.09612656,54.82173538
-Vilnius,Lithuania,582000,Y,25.27596664,54.68856812
-Belfast,UK,685000,N,-5.909660339,54.58692551
-Gdansk,Poland,909000,N,18.62494278,54.36620331
-Minsk,Byelarus,1650000,Y,27.57556725,53.89993668
-Leeds,UK,1540000,N,-1.49752748,53.80871201
-Hamburg,Germany,2225000,N,10.02760601,53.57112122
-Manchester,UK,2775000,N,-2.261778593,53.47966385
-Sheffield,UK,710000,N,-1.462989211,53.37404251
-Dublin,Ireland,1140000,Y,-6.25734663,53.34156036
-Samara,Russia,1505000,N,50.09617996,53.13859558
-Bremen,Germany,800000,N,8.857625961,53.08010483
-Berlin,Germany,5061248,Y,13.32757282,52.5162735
-Birmingham,UK,2675000,N,-1.863347769,52.49275208
-Amsterdam,Netherlands,1860000,N,4.894833088,52.37304306
-Irkutsk,Russia,626000,N,104.2478333,52.3174324
-Warsaw,Poland,2323000,Y,21.01187897,52.24494553
-Rotterdam,Netherlands,1110000,N,4.485152245,51.92559433
-Lodz,Poland,1061000,N,19.47644043,51.77790833
-Dortmund,Germany,568164,N,7.466418266,51.51381302
-Duisburg,Germany,514628,N,6.775304317,51.48933792
-London,UK,11100000,Y,-0.177998126,51.48791122
-Essen,Germany,3867000,N,7.122435093,51.35404205
-Leipzig,Germany,700000,N,12.39807415,51.3493309
-Antwerpen,Belgium,1100000,N,4.426054478,51.20734787
-Wroclaw,Poland,640200,N,17.0381279,51.12181854
-Gent,Belgium,465000,N,3.73629117,51.04755402
-Dresden,Germany,670000,N,13.70535755,51.045681
-Calgary,Canada,671326,N,-114.0500031,51.02999878
-Koln,Germany,1760000,N,6.934871674,50.94234467
-Bruxelles,Belgium,2385000,Y,4.367612362,50.83704758
-Bonn,Germany,570000,N,7.099818707,50.73455811
-Lille,France,1020000,N,3.062901258,50.63208389
-Liege,Belgium,750000,N,5.569435596,50.62252808
-Kiev,Ukraine,2900000,Y,30.50211143,50.44815826
-Frankfurt am Main,Germany,1855000,N,8.668167114,50.12999725
-Praha,Czech Repub,1325000,Y,14.45652008,50.105896
-Krakow,Poland,828000,N,19.94505692,50.0622406
-Winnipeg,Canada,625304,N,-97.12444305,49.92116928
-Karaganda,Kazakhstan,614000,N,73.20263672,49.87920761
-Lvov,Ukraine,790000,N,24.0345211,49.83731079
-Brno,Czech Repub,450000,N,16.61624527,49.20298004
-Paris,France,9775000,Y,2.432832718,48.88155365
-Volgograd,Russia,1360000,N,44.48363113,48.71024704
-Strasbourg,France,400000,N,7.767994404,48.58343506
-Linz,Austria,335000,N,14.29390144,48.29759598
-Vienna,Austria,1875000,Y,16.32098579,48.20211792
-Munchen,Germany,1955000,N,11.54295349,48.14097595
-Donets'k,Ukraine,2200000,N,37.73705292,48.04014587
-Ulaanbaatar,Mongolia,548400,Y,106.9123535,47.9285965
-Budapest,Hungary,2565000,Y,19.09424973,47.51462555
-Qiqihar,China,1150000,N,123.9649658,47.34400558
-Innsbruck,Austria,185000,N,11.34998226,47.26546097
-Rostov-na-Donu,Russia,1165000,N,39.68803787,47.23209763
-Nantes,France,464857,N,-1.561561227,47.21943283
-Graz,Austria,325000,N,15.43110085,47.06492233
-Bern,Switzerland,298800,Y,7.445736408,46.94820786
-Quebec,Canada,603267,N,-71.24493408,46.80207443
-Odessa,Ukraine,1185000,N,30.68393707,46.57220078
-Harbin,China,2670000,N,126.6226349,45.75521851
-Lyon,France,1275000,N,4.855400562,45.74708176
-Montreal,Canada,2921357,N,-73.65353394,45.54101563
-Milano,Italy,3750000,N,9.19046402,45.47338104
-Venezia,Italy,420000,N,12.37071991,45.42477417
-Ottawa,Canada,819263,Y,-75.65074921,45.37421799
-Torino,Italy,1550000,N,7.666426182,45.07487488
-Minneapolis,US,2012400,N,-93.30779266,44.92418671
-Bordeaux,France,640012,N,-0.599498749,44.84147263
-Beograd,Serbia,1400000,Y,20.41255569,44.79968262
-Bucuresti,Romania,2250000,Y,26.1229763,44.43048477
-Changchung,China,1740000,N,125.3126526,43.88131714
-Jilin,China,1170000,N,126.5670624,43.85021591
-Urumqi,China,1040000,N,87.58651733,43.78266525
-Firenze,Italy,640000,N,11.20774555,43.78157425
-Toronto,Canada,3427168,N,-79.4126358,43.72076797
-Toulouse,France,541271,N,1.437983036,43.59996033
-Bilbao,Spain,985000,N,-2.973783255,43.2821579
-Almaty,Kazakhstan,1190000,Y,76.91262817,43.2550621
-Rochester,US,816200,N,-77.63561249,43.21046448
-Milwaukee,US,1374700,N,-87.99073792,43.06794739
-Sapporo,Japan,1900000,N,141.3454742,43.05525208
-Buffalo,US,1483000,N,-78.84843445,42.89866257
-Sofiya,Bulgaria,1205000,Y,23.33187103,42.70726395
-Detroit,US,4691900,N,-83.07892609,42.39431381
-Boston,US,3971700,N,-71.10258484,42.37529755
-Fushun,China,1270000,N,123.905571,41.85915756
-Chicago,US,7717100,N,-87.64130402,41.82654572
-Shenyang,China,3840000,N,123.3830566,41.80216217
-T'Bilisi,Georgia,1460000,Y,44.78312683,41.72180939
-Zaragoza,Spain,575317,N,-0.878205061,41.65126419
-Cleveland,US,2218400,N,-81.72750854,41.39071655
-Tirane,Albania,210800,Y,19.83180428,41.33165359
-Anshan,China,1300000,N,122.9770126,41.11524582
-Istanbul,Turkey,5750000,N,29.00606918,41.06595612
-Salt Lake City,US,682400,N,-111.8921738,40.69392014
-Pittsburgh,US,2218800,N,-79.99708557,40.49720383
-Madrid,Spain,4650000,Y,-3.690969467,40.44221878
-Baku,Azerbaijan,2020000,Y,49.8162384,40.32429886
-Yerevan,Armenia,1315000,Y,44.53266907,40.20802307
-Columbus,US,963600,N,-82.9927063,40.0446434
-Ankara,Turkey,2400000,Y,32.85327148,39.92932892
-Philadelphia,US,5208600,N,-75.21822357,39.92755127
-Beijing,China,6450000,Y,116.3880386,39.90619278
-Erzurum,Turkey,246053,N,41.29182434,39.90445328
-Samarkand,Uzbekistan,366000,N,66.94760132,39.65758133
-Tangshan,China,1060000,N,118.1802139,39.61544418
-Valencia,Spain,1270000,N,-0.367400944,39.47091675
-Baltimore,US,1960400,N,-76.61837769,39.32188416
-Cagliari,Italy,305000,N,9.108909607,39.22514343
-Cincinnati,US,1480100,N,-84.47702026,39.14801025
-Tianjin,China,4880000,N,117.1852264,39.12841415
-Pyongyang,Korea D P Rp,1600000,Y,125.757515,39.02851486
-Kansas City,US,1272400,N,-94.62656403,38.99411774
-Washington D.C.,US,3221400,Y,-76.95383453,38.8909111
-St. Louis,US,2203000,N,-90.34197998,38.6388855
-Sacramento,US,866400,N,-121.4227066,38.5670166
-Tabriz,Iran,971482,N,46.29011917,38.08097839
-Shijiazhuang,China,1190000,N,114.5597076,38.07709503
-Ashkhabad,Turkmenistan,398000,Y,58.3901329,37.95042038
-Taiyuan,China,1660000,N,112.5517044,37.89305496
-Seoul,Korea Rep,15850000,Y,126.9352493,37.54235077
-Sevilla,Spain,945000,N,-5.970831871,37.37264633
-Adana,Turkey,777554,N,35.32436371,36.99998093
-Norfolk,US,795600,N,-76.26856995,36.87929153
-Tunis,Tunisia,1225000,Y,10.16596031,36.81881332
-Zibo,China,830000,N,118.0620422,36.79149628
-Jinan,China,1460000,N,116.9670563,36.65553665
-Mosul,Iraq,570926,N,43.13712692,36.33556747
-Mashhad,Iran,1463508,N,59.59685135,36.29006958
-Aleppo,Syria,1216000,N,37.15928268,36.21554565
-Lanzhou,China,1270000,N,103.5995941,36.11343002
-Taegu,Korea Rep,2206000,N,128.5913849,35.86353683
-Tehran,Iran,6400000,Y,51.44765091,35.7744751
-Tokyo,Japan,23620000,Y,139.8091888,35.68305588
-Kawasaki,Japan,1088624,N,139.7272186,35.50457001
-Oklahoma City,US,742000,N,-97.53029633,35.48958969
-Yokohama,Japan,2992926,N,139.6196594,35.43738556
-Charlotte,US,479200,N,-80.83568573,35.20581436
-Pusan,Korea Rep,3800000,N,129.0546875,35.15786743
-Nagoya,Japan,4800000,N,136.9205933,35.15492249
-Memphis,US,852900,N,-90.00032806,35.11472702
-Kyoto,Japan,1479218,N,135.7548218,35.00912857
-Zhengzhou,China,1170000,N,113.641777,34.7576828
-Homs,Syria,431000,N,36.71817398,34.73387527
-Luoyang,China,740000,N,112.3612366,34.67134857
-Osaka,Japan,15040000,N,135.5191193,34.63552856
-Kabul,Afghanistan,1179000,Y,69.1367569,34.53090668
-Hiroshima,Japan,1575000,N,132.4447784,34.37755585
-Xian,China,2050000,N,108.8833618,34.26569748
-Fes,Morocco,535000,N,-4.995547771,34.04356766
-Atlanta,US,1962500,N,-84.34922791,33.79570007
-Islamabad,Pakistan,204364,Y,73.06054688,33.71815109
-Rawalpindi,Pakistan,836000,N,73.04374695,33.60580444
-Damascus,Syria,1850000,Y,36.31345367,33.51930237
-Phoenix,US,1482400,N,-112.11026,33.50902176
-Baghdad,Iraq,3841268,Y,44.39783478,33.33403778
-Dallas,US,2727300,N,-96.66368866,32.7637291
-Esfahan,Iran,986753,N,51.67918777,32.65139008
-Nanjing,China,2290000,N,118.7689056,32.04836655
-Amman,Jordan,1250000,Y,35.9329071,31.94938278
-Amritsar,India,594844,N,74.87155151,31.63088989
-Lahore,Pakistan,3025000,N,74.34067535,31.54505348
-Faisalabad,Pakistan,1104209,N,73.08345795,31.40895081
-Shanghai,China,9300000,N,121.4726563,31.24786949
-Chengdu,China,1810000,N,104.0712738,30.67006874
-Wuhan,China,3490000,N,114.2792206,30.57249832
-Al Basra,Iraq,616700,N,47.76086426,30.50349045
-Hangzhou,China,1270000,N,120.1650772,30.25262451
-Cairo,Egypt,9300000,Y,31.25079727,30.07791138
-New Orleans,US,1185000,N,-90.09868622,29.95637894
-Houston,US,2755100,N,-95.40711212,29.77182961
-Lhasa,China,84400,N,91.13208771,29.65070343
-Chongqing,China,2450000,N,106.5226898,29.54410362
-San Antonio,US,968200,N,-98.52457428,29.4299221
-Nanchang,China,1030000,N,115.8894119,28.67123985
-New Delhi,India,273036,Y,77.2167511,28.56872559
-Delhi,India,7200000,N,77.22437286,28.52645874
-Changsha,China,1190000,N,112.968483,28.19764137
-Kathmandu,Nepal,320000,Y,85.31295013,27.71201706
-Thimbu,Bhutan,12000,Y,89.66732788,27.44260597
-Jaipur,India,1025000,N,75.80127716,26.90511322
-Lucknow,India,1060000,N,80.91972351,26.84942818
-Guiyang,China,1010000,N,106.7003021,26.57194138
-Kanpur,India,1875000,N,80.31786346,26.45783043
-Fuzhou,China,890000,N,119.3035202,26.07101631
-Miami,US,2827300,N,-80.2702179,25.83213043
-Monterrey,Mexico,2015000,N,-100.3170853,25.67735291
-Patna,India,1025000,N,85.13534546,25.61389732
-Hyderabad,Pakistan,800000,N,68.36647034,25.38018608
-Benares,India,925000,N,82.95633698,25.28201103
-Doha,Qatar,310000,Y,51.49723434,25.20364189
-Kunming,China,1280000,N,102.7021255,25.05103302
-Taipei,Taiwan,6130000,Y,121.5067291,25.0350914
-T`ai-chung,Taiwan,715107,N,120.6702805,24.14364243
-Dhaka,Bangladesh,3430312,Y,90.40714264,23.70991898
-Guangzhou,China,3050000,N,113.2936096,23.09619522
-Ahmadabad,India,2400000,N,72.56686401,23.03979111
-Khulna,Bangladesh,648359,N,89.5582428,22.84264755
-Calcutta,India,11100000,N,88.33422089,22.54353714
-Tampico,Mexico,435000,N,-97.84262848,22.24323463
-Mandalay,Burma,532895,N,96.08415222,21.97594452
-Mecca,Saudi Arabia,550000,N,39.81483841,21.42738152
-Nagpur,India,1302066,N,79.08911133,21.1557579
-Hanoi,Vietnam,1500000,Y,105.8199081,21.03194809
-Haiphong,Vietnam,385210,N,106.6797943,20.86135864
-Merida,Mexico,400142,N,-89.55286407,20.8218689
-Guadalajara,Mexico,2325000,N,-103.3437958,20.67359161
-Bur Sudan,Sudan,206727,N,37.21968842,19.61571312
-Mexico City,Mexico,14100000,Y,-99.12757111,19.42704582
-Puebla de Zaragoza,Mexico,1055000,N,-98.19294739,19.04863167
-Pune,India,1775000,N,73.85227203,18.53574753
-Port-au-Prince,Haiti,880000,Y,-72.34310913,18.52661705
-San Juan,Puerto Rico,1775260,Y,-66.08175659,18.40061569
-Kingston,Jamaica,770000,Y,-76.79730225,18.01571274
-Hyderabad,India,2750000,N,78.48503113,17.39454651
-Rangoon,Burma,2800000,Y,96.12489319,16.8722229
-Sanaa,Yemen,427150,Y,44.20950317,15.36144447
-Guatemala,Guatemala,1400000,Y,-90.52490234,14.61800766
-Tegucigalpa,Honduras,551606,Y,-87.20309448,14.09905052
-Bangkok,Thailand,6450000,Y,100.5526657,13.74557114
-San Salvador,El Salvador,920000,Y,-89.20023346,13.7014122
-Niamey,Niger,398265,Y,2.083449841,13.60454369
-Madras,India,4475000,N,80.24782562,13.06150341
-Bangalore,India,2950000,N,77.58773041,12.97475052
-Bamako,Mali,646163,Y,-7.986481667,12.65295029
-Managua,Nicaragua,682000,Y,-86.27303314,12.15147305
-Phnom Penh,Cambodia,700000,Y,104.9131927,11.56473637
-Ho Chi Minh City,Vietnam,3100000,N,106.6624527,10.75918198
-Maracaibo,Venezuela,890643,N,-71.637146,10.64504337
-Caracas,Venezuela,3600000,Y,-66.89828491,10.49604893
-Barquisimeto,Venezuela,497635,N,-69.33919525,10.06566525
-San Jose,Costa Rica,670000,Y,-84.07861328,9.930476189
-Madurai,India,960000,N,78.12172699,9.913986206
-Ibadan,Nigeria,1144000,N,3.895278454,7.378840446
-Davao,Philippines,408775,N,125.613678,7.080080032
-Enugu,Nigeria,252500,N,7.492080212,6.450538635
-Medellin,Colombia,2095000,N,-75.59203339,6.241146564
-Accra,Ghana,1250000,Y,-0.200923637,5.558562756
-Abidjan,Ivory Coast,1950000,Y,-4.021886826,5.324857235
-Bogota,Colombia,4260000,Y,-74.080513,4.630219936
-Bangui,Cent Af Rep,473817,Y,18.56234169,4.365856171
-Yaounde,Cameroon,653670,Y,11.51364136,3.865123034
-Medan,Indonesia,1373747,N,98.67559814,3.585242033
-Cali,Colombia,1400000,N,-76.52243805,3.456855297
-Kuala Lumpur,Malaysia,1475000,Y,101.7076721,3.150210381
-Muqdisho,Somalia,600000,Y,45.34414291,2.041177511
-Kisangani,Zaire,282650,N,25.19614792,0.519284904
-Quito,Ecuador,1050000,Y,-78.52428436,-0.229498133
-Iquitos,Peru,178738,N,-73.19149017,-3.752895355
-Fortaleza,Brazil,1825000,N,-38.58890152,-3.783321857
-Brazzaville,Congo,585812,Y,15.28514862,-4.285186768
-Kananga,Zaire,290898,N,22.40277863,-5.89221096
-Dar es Salaam,Tanzania,1300000,Y,39.2533493,-6.817358971
-Bandung,Indonesia,1800000,N,107.6069031,-6.912430286
-Recife,Brazil,2625000,N,-34.91463852,-8.085167885
-Benguela,Angola,155000,N,13.46487999,-12.71773529
-Brasilia,Brazil,1567709,Y,-47.89774704,-15.79210949
-Arequipa,Peru,446942,N,-71.52274323,-16.39753914
-La Paz,Bolivia,992592,Y,-68.14624786,-16.49900627
-Goiania,Brazil,990000,N,-49.25481033,-16.72669983
-Santa Cruz de La Sierra,Bolivia,441717,N,-63.19741821,-17.78879166
-Sucre,Bolivia,86609,N,-65.25588226,-19.04213524
-Belo Horizonte,Brazil,2950000,N,-43.90906906,-19.85172081
-Rio de Janeiro,Brazil,10150000,N,-43.45517731,-22.72157288
-Sao Paulo,Brazil,15175000,N,-46.6228981,-23.58130455
-Santos,Brazil,1065000,N,-46.30949402,-23.95470047
-Gaborone,Botswana,95163,Y,25.79480171,-24.6614418
-Curitiba,Brazil,1700000,N,-49.28450775,-25.43047905
-Pretoria,South Africa,960000,Y,28.21837234,-25.73134613
-Maputo,Mozambique,1069727,Y,32.57369232,-25.96215439
-Johannesburg,South Africa,3650000,N,28.0043087,-26.17895699
-Brisbane,Australia,1149401,N,153.0264893,-27.45391273
-Durban,South Africa,1550000,N,30.94218826,-29.83637238
-Porto Alegre,Brazil,2600000,N,-51.20798874,-30.03953362
-Cordoba,Argentina,1070000,N,-64.17985535,-31.31627846
-Santa Fe,Argentina,292165,N,-60.69784164,-31.61689758
-Mendoza,Argentina,650000,N,-68.8297348,-32.89743805
-Rosario,Argentina,1045000,N,-60.66394043,-32.93773651
-Santiago,Chile,4100000,Y,-70.64751434,-33.47502518
-Port Elizabeth,South Africa,690000,N,25.48429871,-33.88157654
-Sydney,Australia,3364858,N,151.0281982,-33.88977432
-Buenos Aires,Argentina,10750000,Y,-58.40959167,-34.66540146
-Canberra,Australia,271362,Y,149.041626,-35.34992599
-Auckland,New Zealand,850000,N,174.8010559,-36.89325333
-Melbourne,Australia,2832893,N,145.0751038,-37.85295868
-Bahia Blanca,Argentina,223818,N,-62.27406693,-38.72527313
-Christchurch,New Zealand,320000,N,172.6836548,-43.54891586
-Helsinki,Finland,900000,Y,24.97669983,60.19642258
-Sfax,Tunisia,310000,N,10.75925827,34.74523163
-Kobe,Japan,1410834,N,135.181839,34.66384125
-Jerusalem,Israel,490000,N,35.22521973,31.77374649
-Valencia,Venezuela,616224,N,-68.00311279,10.17822075
-Guayaquil,Ecuador,1255000,N,-79.90939331,-2.203816175
-San Francisco,US,4053800,N,-122.308815,37.72751236
-Edinburgh,UK,630000,N,-3.298783302,55.87525177
-Trieste,Italy,239031,N,13.93283749,45.70028305
-Fukuoka,Japan,1750000,N,130.3171844,33.30990601
-Kita Kyushu,Japan,1525000,N,130.7974548,33.68186569
-N'Djamena,Chad,303000,Y,15.24082375,12.10413933
-Tripoli,Libya,990697,Y,13.21182251,32.75161743
-Izmir,Turkey,1550000,N,27.20576859,38.43891907
-Kinshasa,Zaire,3000000,Y,15.46929359,-4.388674736
-Adelaide,Australia,977721,N,138.8706818,-34.91853714
-Jakarta,Indonesia,8600000,Y,106.7624664,-6.293904305
-Semarang,Indonesia,1024940,N,110.4442596,-7.027844429
-Callao,Peru,264133,N,-76.83563232,-12.04354
-Belem,Brazil,1200000,N,-48.31627655,-1.605329037
-Qingdao,China,1270000,N,120.4341278,36.14835358
-Vientiane,Laos,377409,Y,102.6802368,18.00173187
-Salzburg,Austria,220000,N,13.09089851,47.80117035
-Zagreb,Croatia,697925,Y,15.96438599,45.8070755
-Bujumbura,Burundi,273000,Y,29.5335865,-3.269083738
-Nicosia,Cyprus,185000,Y,33.38516235,35.16506958
-Kigali,Rwanda,181600,Y,29.9914856,-2.117935181
-Ljubljana,Slovenia,233200,Y,14.6396122,46.06830215
-Maseru,Lesotho,109382,Y,27.89038849,-29.25671005
-Luxembourg,Luxembourg,133000,Y,6.273255825,49.74040604
-The Hague,Netherlands,770000,Y,4.300624371,51.90362167
-Bratislava,Slovakia,435499,Y,17.26980591,48.27450943
-Saskatoon,Canada,200665,N,-106.6299973,52.11000061
-Regina,Canada,186521,N,-104.6500015,50.40999985
-El Paso,US,1037700,N,-106.4499969,31.78000069
-Jacksonville,US,635900,N,-81.66000366,30.32999992
-Moosonee,Canada,-99,N,-80.73000336,51.33000183
-Schefferville,Canada,1997,N,-67.01000214,54.86000061
-Goose Bay,Canada,-99,N,-60.54999924,53.31000137
-Porto Velho,Brazil,202011,N,-63.90000153,-8.75
-Cuzco,Peru,184550,N,-71.86000061,-13.60000038
-Cuiaba,Brazil,279651,N,-56.04999924,-15.55000019
-Resistencia,Argentina,220104,N,-58.90000153,-27.39999962
-Tombouctoo,Mali,31925,N,-3.00999999,16.76000023
-Maiduguri,Niger,255100,N,13.26000023,11.88000011
-Matadi,Zaire,144742,N,13.44999981,-5.809999943
-Huambo,Angola,203000,N,15.77999973,-12.72999954
-Kimberley,South Africa,145000,N,24.82999992,-28.65999985
-East London,South Africa,320000,N,27.89999962,-33.02999878
-Kahemba,Zaire,-99,N,19,-7.329999924
-Dodoma,Tanzania,54000,N,35.75,-6.179999828
-Narvik,Norway,19080,N,17.29999924,68.34999847
-Herat,Afghanistan,160000,N,62.20999908,34.45999908
-Druzba,Russia,-99,N,37.75,55.88000107
-Kashi,China,146300,N,76,39.47999954
-Chingmei,Taiwan,-99,N,121.5299988,24.97999954
-Hue,Vietnam,165710,N,107.6999969,16.45999908
-Kuching,Malaysia,72555,N,110.4300003,1.5
-Balikpapan,Indonesia,208040,N,116.8600006,-1.210000038
-Chatanga,Russia,-99,N,110.75,50.33000183
-Chita,Russia,-99,N,113.5800018,52.04999924
-Verkhoyvensk,Russia,-99,N,133.4100037,67.58000183
-Yakutsk,Russia,187000,N,129.8300018,62.00999832
-Okhotsk,Russia,-99,N,143.25,59.33000183
-Nikolayevsk,Russia,-99,N,45.52999878,50.08000183
-Yuzhno-Sakhalinsk,Russia,-99,N,142.75,46.95999908
-Alice Springs,Australia,-99,N,133.9299927,-23.62999916
-Cairns,Australia,39096,N,145.7100067,-16.85000038
-Townsville,Australia,106416,N,146.8300018,-19.29999924
-Rockhampton,Australia,59056,N,150.4799957,-23.43000031
-Newcastle,Australia,405089,N,151.9100037,-33
-Hobart,Australia,175082,N,147.5,-43
-Dunedin,New Zealand,109000,N,170.5,-45.86000061
-Victoria,Canada,255547,N,-123.5691071,48.65456772
-Porto Novo,Benin,164000,Y,2.632502794,6.601096153
-Douala,Cameroon,1029731,N,9.706374168,4.136650085
-Vjuag Padang,Indonesia,708465,N,119.7227936,-5.190430164
-Ambon,Indonesia,111914,N,129.3129272,-3.386553288
-Inch`on,Korea Rep,1604000,N,126.7674408,37.58945084
-Dalian,China,1680000,N,121.5981979,39.03171539
-Portland,US,1227200,N,-122.6416779,45.44213104
-Manaus,Brazil,809914,N,-60.01461792,-3.122304916
-Santarem,Brazil,226618,N,-54.61000061,-2.460000038
-Invercargill,New Zealand,52807,N,168.4499969,-46.40999985
-Mtwara,Tanzania,48510,N,40.18000031,-10.26000023
-Toamasina,Madagascar,100000,N,49.40999985,-18.22999954
-Bloemfontein,South Africa,235000,N,26.26000023,-29.14999962
-Bulawayo,Zimbabwe,413814,N,28.70999908,-20.20000076
-Livingstone,Zambia,61296,N,25.87999916,-17.82999992
-Al Madinah,Saudi Arabia,290000,N,39.70000076,24.43000031
-Wadi Halfa,Sudan,-99,N,31.28000069,21.76000023
-Aswan,Egypt,191461,N,32.95000076,24.07999992
-Murzuq,Libya,-99,N,13.90999985,25.90999985
-Tindouf,Algeria,-99,N,-8.159999847,27.70000076
-Agadez,Niger,50164,N,7.980000019,16.95999908
-El Obeid,Sudan,140000,N,30.15999985,13.18000031
-Mbandaka,Zaire,125263,N,18.45999908,0.050000001
-Whitehorse,Canada,15199,N,-135.0099945,60.65000153
-Punte Arenas,Chile,95332,N,-70.80000305,-53.15000153
-Puerto Montt,Chile,84410,N,-73,-41.47999954
-Rio Gallegos,Argentina,-99,N,-69.41000366,-51.70999908
-Comodoro Rivadavia,Argentina,96817,N,-67.5,-45.83000183
-Suez,Egypt,326820,N,32.56000137,29.95999908
-Alexandria,Egypt,3350000,N,29.97780991,31.07460403
-Mocambique,Mozambique,-99,N,40.70000076,-15.05000019
-Bombay,India,9950000,N,73.17234802,19.04534721
-Algiers,Algeria,2547983,Y,2.993693113,36.59649277
-Kharkov,Ukraine,1940000,N,36.20831299,49.98967361
-Dnepropetrovsk,Ukraine,1600000,N,35.13789368,48.42288971
-Tallinn,Estonia,482000,Y,24.75205612,59.27757263
-Uliastay,Mongolia,-99,N,97,47.81000137
-Santo Domingo,Dominican Rp,1313172,Y,-69.91049194,18.49972916
-Bandar Seri Begawan,Brunei,64000,Y,114.9670029,4.933000088
-Banjul,Gambia,95000,Y,-16.49461555,13.44527245
-Port of Spain,Trinidad,370000,Y,-61.49006271,10.63973427
-Acapulco,Mexico,301902,N,-99.93149567,16.97438622
-Anadyr,Russia,-99,N,177.130188,64.40016174
-Angmagssalik,Greenland,2618,N,-37.31186676,65.66999817
-Antofagasta,Chile,185486,N,-70.22544861,-23.8325367
-Aomori,Japan,294045,N,140.6699982,40.75
-Banghazi,Libya,435886,N,20.30867577,32.04305267
-Birdum,Australia,-99,N,133.2200012,-15.75
-Boa Vista,Brazil,-99,N,-60.5,2.75
-Chiclayo,Peru,279527,N,-79.83000183,-6.619999886
-Chimbote,Peru,223341,N,-78.45314789,-8.930100441
-Churchill,Canada,1304,N,-94.18000031,58.71076584
-Cochin,India,685836,N,76.52178192,9.987988472
-Concepcion,Chile,675000,N,-72.85163879,-36.88329697
-Coquimbo,Chile,62186,N,-71.01999664,-31
-Darwin,Australia,72937,N,130.9945526,-12.70149994
-Djibouti,Djibouti,120000,Y,43.09999847,11.5
-Fremantle,Australia,22484,N,115.9345703,-32.04416656
-George Town,Malaysia,495000,N,100.547142,5.349999905
-Godhavn,Greenland,1012,N,-53.63000107,69.38314056
-Godthab,Greenland,12426,Y,-51.58000183,64.27118683
-Halifax,Canada,295990,N,-63.58000183,44.63000107
-Hammerfest,Norway,7208,N,23.90634155,70.3913269
-Igarka,Russia,-99,N,86.55000305,67.34999847
-In Salah,Algeria,18800,N,2.529999971,27.20000076
-Inuvik,Canada,-99,N,-133.6699982,68.26999664
-Kigoma,Tanzania,50044,N,30,-4.949999809
-Kotlas,Russia,69000,N,47,61.15000153
-Laayoune,W Sahara,93875,N,-13.18000031,27
-Manado,Indonesia,217091,N,124.8842392,1.420086145
-Mangalore,India,306078,N,75.16088104,12.94999981
-Marrakech,Morocco,535000,N,-8,31.14999962
-Mbabne,Swaziland,38290,Y,31.19129753,-26.30338097
-Nagasaki,Japan,449382,N,129.8574677,32.88274765
-Natal,Brazil,510106,N,-35.25,-5.78000021
-Nelson,New Zealand,33304,N,173.2700043,-41.29999924
-Nome,US,3500,N,-165.2700043,64.58628082
-Noril`sk,Russia,174000,N,88.09999847,69.33000183
-Nouadnibou,Mauritania,21961,N,-16.82564735,20.89999962
-Novokuznetsk,Russia,600000,N,87.16999817,53.70000076
-Olympia,US,97400,N,-122.8799973,46.91999817
-Padang,Indonesia,296675,N,100.4750595,-0.917578816
-Palembang,Indonesia,786607,N,104.8300018,-3
-Patrai,Greece,154596,N,21.88316917,38.14123917
-Petropavloski-Kamchatskiy,Russia,269000,N,158.7200012,53.20000076
-Podgorica,Montenegro,82500,Y,19.39999962,42.5
-Pointe Noire,Congo,294203,N,12.05809307,-4.638708115
-Port Gentil,Gabon,124400,N,9.153344154,-0.819999993
-Prince Rupert,Canada,16197,N,-130.0480804,54.42028046
-Saint John,Canada,121265,N,-65.64994812,45.33813477
-Saint Louis,Senegal,91485,N,-16.29783821,15.95121002
-Salekhard,Russia,-99,N,66.58000183,66.56999969
-Samsun,Turkey,240674,N,36.36999893,41.31999969
-Sao Luis,Brazil,600000,N,-44.43005753,-2.5
-Sarajevo,Bosnia/Herz,341200,Y,18.43000031,43.86999893
-Scoresbyund,Greenland,-99,N,-22.99632263,70.52857208
-Sept-Iles,Canada,29262,N,-66.40254211,50.282547
-Seward,US,2699,N,-149.4499969,60.11999893
-Skopje,Macedonia,444900,Y,21.53000069,42
-Tamanrasset,Algeria,-99,N,5.550000191,22.82999992
-Thule,Greenland,-99,N,-69,77.66999817
-Tiksi,Russia,-99,N,128.75,71.69999695
-Toliara,Madagascar,55000,N,44.01909256,-23.29015541
-Trujillo,Peru,354301,N,-79,-7.929999828
-Vishakhapatnam,India,603630,N,83.33000183,17.75
-Vorkuta,Russia,116000,N,64.33000183,67.80000305
-Yazd,Iran,230483,N,54.45000076,31.96999931
-Zahedan,Iran,281923,N,60.83000183,29.60000038
-Aden,Yemen,318000,N,45.18000031,12.86115932
-Adis Abeba,Ethiopia,1500000,Y,38.70000076,9.029999733
-Al Kuwayt,Kuwait,1375000,Y,48.0027771,29.19499016
-Antananarivo,Madagascar,663000,Y,47.5,-18.87000084
-Ar Riyad,Saudi Arabia,1250000,Y,46.77000046,24.64999962
-Asmara,Eritrea,275385,Y,38.97000122,15.32999992
-Asuncion,Paraguay,700000,Y,-57.66999817,-25.21999931
-Athinai,Greece,3027331,Y,23.65486336,38.1216011
-Baotou,China,1120000,N,109.9800034,40.65000153
-Barcelona,Spain,4040000,N,2.170000076,41.52999878
-Barranquilla,Colombia,1140000,N,-74.68000031,11.01429462
-Beira,Mozambique,291604,N,35.02317047,-19.76928329
-Beirut,Lebanon,1675000,Y,35.65794373,33.77999878
-Belmopan,Belize,4500,Y,-88.80000305,17.12000084
-Bergen,Norway,239000,N,5.49067831,60.34999847
-Bissau,GuineaBissau,109486,Y,-15.64999962,11.91098976
-Cape Town,South Africa,1790000,N,18.69043159,-33.80400848
-Cardiff,UK,625000,N,-3.150000095,51.5
-Casablanca,Morocco,2475000,N,-7.534091949,33.54441071
-Cayenne,Fr Guiana,38091,Y,-52.40000153,4.920000076
-Chittagong,Bangladesh,1391877,N,91.83279419,22.47999954
-Colombo,Sri Lanka,2050000,Y,80.08833313,7.019999981
-Conakry,Guinea,800000,Y,-12.80000019,9.520000458
-Dakar,Senegal,1428084,Y,-16.84809494,14.63000011
-Denver,US,1405300,N,-105.0699997,39.75
-Dushanfe,Tajikistan,595000,Y,68.90000153,38.63000107
-Edmonton,Canada,785465,N,-113.2699966,53.56999969
-El-Giza,Egypt,1870508,N,30.85000038,30.46999931
-Freetown,Sierra Leone,525000,Y,-12.91027641,8.382770538
-Frunze,Kyrgyzstan,616000,Y,74.76999664,42.88000107
-Genova,Italy,805000,N,8.92229557,44.45508957
-Georgetown,Guyana,188000,Y,-58.16999817,6.769999981
-Goteborg,Sweden,710894,N,12,57.75
-Harare,Zimbabwe,890000,Y,31.02000046,-17.82999992
-Havana,Cuba,2125000,Y,-82.4164505,23.0489521
-Jiddah,Saudi Arabia,1300000,N,39.37330627,21.62000084
-Kampala,Uganda,460000,Y,32.58000183,0.319999993
-Kano,Nigeria,538300,N,8.520000458,11.92000008
-Kao-Hsiung,Taiwan,1845000,N,120.3414841,22.67341614
-Karachi,Pakistan,5300000,N,67.02999878,24.85000038
-Khabarovsk,Russia,601000,N,135.0700073,48.52999878
-Khartoum,Sudan,924000,Y,32.52999878,15.55000019
-Kishinev,Moldova,665000,Y,28.82999992,47
-Kobenhavn,Denmark,1685000,Y,12.55000019,55.72000122
-Lagos,Nigeria,3800000,Y,3.299999952,6.449999809
-Le Havre,France,254595,N,0.219999999,49.32402039
-Libreville,Gabon,235700,Y,9.490456581,-0.504144549
-Lilongwe,Malawi,233973,Y,33.81999969,-13.92000008
-Lima,Peru,4344000,Y,-76.82355499,-12.06799603
-Lisboa,Portugal,2250000,Y,-9.130000114,38.72999954
-Liverpool,UK,1525000,N,-2.766836405,53.42268753
-Lome,Togo,400000,Y,1.350000024,6.28000021
-Los Angeles,US,9763600,N,-118.25,34
-Luanda,Angola,1459900,Y,13.46177864,-9
-Lumumbashi,Zaire,543268,N,27.54999924,-11.68000031
-Lusaka,Zambia,535830,Y,28.17000008,-15.43000031
-Malabo,Eq Guinea,30710,Y,8.819999695,3.644684792
-Manila,Philippines,5474000,Y,121.1734085,14.55000019
-Marseille,France,1225000,N,5.380000114,43.29999924
-Masqat,Oman,50000,Y,58.62747955,23.51663971
-Mazatlan,Mexico,199830,N,-106.2699966,23.36151123
-Mombasa,Kenya,442369,N,39.66999817,-4.019999981
-Monrovia,Liberia,465000,Y,-10.77000046,6.517439365
-Montevideo,Uruguay,1550000,Y,-56.16999817,-34.91999817
-Moskva,Russia,13100000,Y,37.70000076,55.75
-Nairobi,Kenya,1286200,Y,36.83000183,-1.169999957
-Napoli,Italy,2875000,N,14.27000046,40.83000183
-New York,US,16472000,N,-74.09999847,40.75
-Newark,US,329248,N,-74.19999695,40.72000122
-Nouakchott,Mauritania,285000,Y,-15.78286076,18.03000069
-Odense,Denmark,138400,N,9.902998924,55.57453537
-Omdurman,Sudan,526287,N,32.47999954,15.61999989
-Oran,Algeria,628558,N,-0.519999981,35.75
-Oslo,Norway,720000,Y,10.72000027,59.93000031
-Ouagadouou,Burkina Faso,441514,Y,-1.669999957,12.47999954
-Palermo,Italy,723732,N,13.39999962,38.13000107
-Panama,Panama,625000,Y,-79.40000153,8.949999809
-Paramaribo,Suriname,241000,Y,-55.22999954,5.929999828
-Perth,Australia,994472,N,115.9233704,-31.97586441
-Port Moresby,Papua N Guin,152100,Y,147.4145203,-9.550000191
-Porto,Portugal,1225000,N,-8.487948418,41.15000153
-Qandahar,Afghanistan,203000,N,65.5,31.60000038
-Quezon City,Philippines,1326035,N,121.0299988,14.64999962
-Rabat,Morocco,980000,Y,-6.748040676,33.92019653
-Reykjavik,Iceland,137941,Y,-21.3368206,64.31326294
-Riga,Latvia,1005000,Y,24.04999924,56.88000107
-Roma,Italy,3175000,Y,12.52000046,41.88000107
-Salvador,Brazil,2050000,N,-38.47999954,-12.60025692
-Shiraz,Iran,848289,N,52.56999969,29.62999916
-Stockholm,Sweden,1449972,Y,18.08426857,59.24463272
-Surabaja,Indonesia,2027913,N,112.6843719,-7.400000095
-T`ai-nan,Taiwan,656927,N,120.2300034,23.17000008
-Tampa,US,594500,N,-82.59302521,27.99735832
-Tel Aviv-Yafo,Israel,1670000,Y,34.85683441,31.91719818
-Thessaloniki,Greece,706180,N,22.79999924,40.63000107
-Toshkent,Uzbekistan,2325000,Y,69.34986877,41.24793243
-Tripoli,Lebanon,198000,N,36.00706863,34.34375763
-Valparaiso,Chile,675000,N,-71.29933929,-32.90000153
-Vancouver,Canada,1380729,N,-122.9630661,49.27429962
-Vladivostok,Russia,648000,N,131.960434,43.13000107
-Walvis Bay,South Africa,16607,N,14.61710453,-23.10186768
-Windhoek,Namibia,114500,Y,17.10000038,-22.56999969
-Wellington,New Zealand,350000,Y,175.1449432,-41.21039581
-Seattle,US,2077100,N,-122.3166504,47.58855438
-San Diego,US,2098500,N,-117.1254959,32.76145935
-Iquique,Chile,110153,N,-69.91326141,-20.26000023
-Abu Zaby,Untd Arab Em,242975,Y,54.61927032,24.23600769
-San Cristobal,Venezuela,198793,N,-72.00545502,7.576601028
-Astrakhan,Russia,509000,N,48,46.25
-Ghadamis,Libya,-99,N,9.818350792,30.13860321
-Salto,Uruguay,77400,N,-57.70877457,-31.30515289
-Yellowknife,Canada,11753,N,-114.0613632,62.52061462
-Hilo,US,43200,N,-155.0672913,19.71481514
-Honolulu,US,762600,N,-157.8061829,21.32117653
-Anchorage,US,184300,N,-149.1729736,61.18864822
-Fairbanks,US,39900,N,-147.6511841,64.83874512
-Juneau,US,19528,N,-134.1324768,58.39100647
-San Jose,US,629400,N,-121.8474579,37.30810547
-Chihuaha,Mexico,385603,N,-105.9666367,28.5581398
-Veracruz,Mexico,385000,N,-96.08406067,19.00967598
-Oaxaca,Mexico,154223,N,-96.94203949,16.92090607
-Longyearbyen,Norway,-99,N,15.65999985,78.19999695
-Hong Kong,UK,5395997,Y,114.1457062,22.42840576
-Kowloon,UK,774781,N,114.2301178,22.37989616
-Singapore,Singapore,3025000,N,104.1771164,1.229793549
diff --git a/share/data/scenario/org-activities.csv b/share/data/scenario/org-activities.csv
deleted file mode 100755
index aff760e2c..000000000
--- a/share/data/scenario/org-activities.csv
+++ /dev/null
@@ -1,131 +0,0 @@
-org_row,org_id,org_name,phase_col,phase_id,phase_name,start_hour,time,vicinity_id,latitude,longitude,mode,activity,optempo,other,,
-7,UA-HQ,UA-HQ,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,MARNEULI-AFLD,41.453,44.809,prepare,,low,,,
-8,BIC,BIC,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,MARNEULI-AFLD,41.453,44.809,prepare,,low,,,
-9,1-CABN,1-CABN,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,MARNEULI-AFLD,41.453,44.809,prepare,,low,,,
-10,2-CABN,2-CABN,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,MARNEULI-AFLD,41.453,44.809,prepare,,low,,,
-11,3-CABN,3-CABN,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,VAZIANI-AFLD,41.614,45.048,prepare,,low,,,
-12,AVNDET,AVNDET,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,VAZIANI-AFLD,41.614,45.048,prepare,,low,,,
-13,NLOS,NLOS,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,VAZIANI-AFLD,41.614,45.048,prepare,,low,,,
-14,FSB,FSB,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,VAZIANI-AFLD,41.614,45.048,prepare,,low,,,
-15,159-AVNCO,159-AVNCO,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,VAZIANI-AFLD,41.614,45.048,prepare,,low,,,
-16,7-158-AVNCO,7-158-AVNCO,2,1,Early-Entry -Airfield,0.00,15-Jan-2005 00:00,VAZIANI-AFLD,41.614,45.048,prepare,,low,,,
-7,UA-HQ,UA-HQ,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,MARNEULI-AFLD,41.453,44.809,move,,medium,,,
-8,BIC,BIC,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,MARNEULI-AFLD,41.453,44.809,move,,medium,,,
-9,1-CABN,1-CABN,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,MARNEULI-AFLD,41.453,44.809,move,,medium,,,
-10,2-CABN,2-CABN,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,MARNEULI-AFLD,41.453,44.809,move,,medium,,,
-11,3-CABN,3-CABN,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,VAZIANI-AFLD,41.614,45.048,move,,medium,,,
-12,AVNDET,AVNDET,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,VAZIANI-AFLD,41.614,45.048,move,,medium
-13,NLOS,NLOS,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,VAZIANI-AFLD,41.614,45.048,move,,medium
-14,FSB,FSB,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,VAZIANI-AFLD,41.614,45.048,move,,medium
-15,159-AVNCO,159-AVNCO,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,VAZIANI-AFLD,41.614,45.048,move,,medium
-16,7-158-AVNCO,7-158-AVNCO,3,2,Move-to-Border,1.00,15-Jan-2005 01:00,VAZIANI-AFLD,41.614,45.048,move,,medium
-7,UA-HQ,UA-HQ,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-8,BIC,BIC,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-9,1-CABN,1-CABN,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-10,2-CABN,2-CABN,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-11,3-CABN,3-CABN,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-12,AVNDET,AVNDET,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-13,NLOS,NLOS,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-14,FSB,FSB,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-15,159-AVNCO,159-AVNCO,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-16,7-158-AVNCO,7-158-AVNCO,4,3,Tactical-High-Speed-Approach,3.00,15-Jan-2005 03:00,SHYKHLY,41.305,45.117,move,,high
-7,UA-HQ,UA-HQ,5,3A,Defense-0,5.00,15-Jan-2005 05:00,KIROVABAD-ALFA,40.713,46.252,prepare,,low
-8,BIC,BIC,5,3A,Defense-0,5.00,15-Jan-2005 05:00,KIROVABAD-BRAVO,40.736,46.219,prepare,,low
-9,1-CABN,1-CABN,5,3A,Defense-0,5.00,15-Jan-2005 05:00,KIROVABAD-CHARLIE,40.964,46.323,prepare,,low
-10,2-CABN,2-CABN,5,3A,Defense-0,5.00,15-Jan-2005 05:00,KIROVABAD-DELTA,40.673,46.313,prepare,,low
-11,3-CABN,3-CABN,5,3A,Defense-0,5.00,15-Jan-2005 05:00,SAFARALIYEV,40.78,46.397,prepare,,low
-12,AVNDET,AVNDET,5,3A,Defense-0,5.00,15-Jan-2005 05:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-13,NLOS,NLOS,5,3A,Defense-0,5.00,15-Jan-2005 05:00,SHAMKHOR,40.826,46.018,prepare,,low
-14,FSB,FSB,5,3A,Defense-0,5.00,15-Jan-2005 05:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-15,159-AVNCO,159-AVNCO,5,3A,Defense-0,5.00,15-Jan-2005 05:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-16,7-158-AVNCO,7-158-AVNCO,5,3A,Defense-0,5.00,15-Jan-2005 05:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-7,UA-HQ,UA-HQ,6,4,Assault-COG,8.00,15-Jan-2005 08:00,KIROVABAD-ALFA,40.713,46.252,assault,,high
-8,BIC,BIC,6,4,Assault-COG,8.00,15-Jan-2005 08:00,KIROVABAD-BRAVO,40.736,46.219,assault,,high
-9,1-CABN,1-CABN,6,4,Assault-COG,8.00,15-Jan-2005 08:00,KIROVABAD-CHARLIE,40.964,46.323,assault,,high
-10,2-CABN,2-CABN,6,4,Assault-COG,8.00,15-Jan-2005 08:00,KIROVABAD-DELTA,40.673,46.313,assault,,high
-11,3-CABN,3-CABN,6,4,Assault-COG,8.00,15-Jan-2005 08:00,SAFARALIYEV,40.78,46.397,assault,,high
-12,AVNDET,AVNDET,6,4,Assault-COG,8.00,15-Jan-2005 08:00,DALLYAR-AFLD,40.885,45.95,assault,,high
-13,NLOS,NLOS,6,4,Assault-COG,8.00,15-Jan-2005 08:00,SHAMKHOR,40.826,46.018,assault,,high
-14,FSB,FSB,6,4,Assault-COG,8.00,15-Jan-2005 08:00,DALLYAR-AFLD,40.885,45.95,assault,,high
-15,159-AVNCO,159-AVNCO,6,4,Assault-COG,8.00,15-Jan-2005 08:00,DALLYAR-AFLD,40.885,45.95,assault,,high
-16,7-158-AVNCO,7-158-AVNCO,6,4,Assault-COG,8.00,15-Jan-2005 08:00,DALLYAR-AFLD,40.885,45.95,assault,,high
-7,UA-HQ,UA-HQ,7,5,Defense-1,18.00,15-Jan-2005 18:00,GYANDZHA-AFLD,40.734,46.319,prepare,,low
-8,BIC,BIC,7,5,Defense-1,18.00,15-Jan-2005 18:00,GYANDZHA-AFLD,40.734,46.319,prepare,,low
-9,1-CABN,1-CABN,7,5,Defense-1,18.00,15-Jan-2005 18:00,DALMAMEDLI,40.689,46.567,prepare,,low
-10,2-CABN,2-CABN,7,5,Defense-1,18.00,15-Jan-2005 18:00,KHANLAR,40.578,46.328,prepare,,low
-11,3-CABN,3-CABN,7,5,Defense-1,18.00,15-Jan-2005 18:00,SAFARALIYEV,40.78,46.397,prepare,,low
-12,AVNDET,AVNDET,7,5,Defense-1,18.00,15-Jan-2005 18:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-13,NLOS,NLOS,7,5,Defense-1,18.00,15-Jan-2005 18:00,SHAMKHOR,40.826,46.018,prepare,,low
-14,FSB,FSB,7,5,Defense-1,18.00,15-Jan-2005 18:00,GYANDZHA-AFLD,40.734,46.319,prepare,,low
-15,159-AVNCO,159-AVNCO,7,5,Defense-1,18.00,15-Jan-2005 18:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-16,7-158-AVNCO,7-158-AVNCO,7,5,Defense-1,18.00,15-Jan-2005 18:00,DALLYAR-AFLD,40.885,45.95,prepare,,low
-7,UA-HQ,UA-HQ,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,GYANDZHA-AFLD,40.734,46.319,pursuit,,high
-8,BIC,BIC,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,GYANDZHA-AFLD,40.734,46.319,pursuit,,high
-9,1-CABN,1-CABN,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,DALMAMEDLI,40.689,46.567,pursuit,,high
-10,2-CABN,2-CABN,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,KHANLAR,40.578,46.328,pursuit,,high
-11,3-CABN,3-CABN,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,KIROVABAD-E,40.673,46.313,pursuit,,high
-12,AVNDET,AVNDET,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,DALLYAR-AFLD,40.885,45.95,pursuit,,high
-13,NLOS,NLOS,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,SHAMKHOR,40.826,46.018,pursuit,,high
-14,FSB,FSB,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,GYANDZHA-AFLD,40.734,46.319,pursuit,,high
-15,159-AVNCO,159-AVNCO,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,DALLYAR-AFLD,40.885,45.95,pursuit,,high
-16,7-158-AVNCO,7-158-AVNCO,8,6,Pursuit-Exploit,24.00,16-Jan-2005 00:00,DALLYAR-AFLD,40.885,45.95,pursuit,,high
-7,UA-HQ,UA-HQ,9,7,Defense-2,34.00,16-Jan-2005 10:00,YEVLAKH-ALFA,40.536,47.143,prepare,,low
-8,BIC,BIC,9,7,Defense-2,34.00,16-Jan-2005 10:00,YEVLAKH-BRAVO,40.561,47.145,prepare,,low
-9,1-CABN,1-CABN,9,7,Defense-2,34.00,16-Jan-2005 10:00,BARDA-BRAVO,40.427,47.122,prepare,,low
-10,2-CABN,2-CABN,9,7,Defense-2,34.00,16-Jan-2005 10:00,BARDA-CHARLIE,40.315,47.396,prepare,,low
-11,3-CABN,3-CABN,9,7,Defense-2,34.00,16-Jan-2005 10:00,BARDA-ALFA,40.401,47.121,prepare,,low
-12,AVNDET,AVNDET,9,7,Defense-2,34.00,16-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-13,NLOS,NLOS,9,7,Defense-2,34.00,16-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-14,FSB,FSB,9,7,Defense-2,34.00,16-Jan-2005 10:00,YEVLAKH-AFLD,40.628,47.141,prepare,,low
-15,159-AVNCO,159-AVNCO,9,7,Defense-2,34.00,16-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-16,7-158-AVNCO,7-158-AVNCO,9,7,Defense-2,34.00,16-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-7,UA-HQ,UA-HQ,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,YEVLAKH-ALFA,40.536,47.143,assault,,high
-8,BIC,BIC,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,YEVLAKH-BRAVO,40.561,47.145,assault,,high
-9,1-CABN,1-CABN,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,BARDA-BRAVO,40.427,47.122,assault,,high
-10,2-CABN,2-CABN,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,BARDA-CHARLIE,40.315,47.396,assault,,high
-11,3-CABN,3-CABN,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,BARDA-ALFA,40.401,47.121,assault,,high
-12,AVNDET,AVNDET,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-13,NLOS,NLOS,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-14,FSB,FSB,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,YEVLAKH-AFLD,40.628,47.141,assault,,high
-15,159-AVNCO,159-AVNCO,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-16,7-158-AVNCO,7-158-AVNCO,10,8,Urban-Assault,40.00,16-Jan-2005 16:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-7,UA-HQ,UA-HQ,11,9,Defense-3,52.00,17-Jan-2005 04:00,YEVLAKH-ALFA,40.536,47.143,prepare,,low
-8,BIC,BIC,11,9,Defense-3,52.00,17-Jan-2005 04:00,YEVLAKH-BRAVO,40.561,47.145,prepare,,low
-9,1-CABN,1-CABN,11,9,Defense-3,52.00,17-Jan-2005 04:00,BARDA-BRAVO,40.427,47.122,prepare,,low
-10,2-CABN,2-CABN,11,9,Defense-3,52.00,17-Jan-2005 04:00,BARDA-CHARLIE,40.315,47.396,prepare,,low
-11,3-CABN,3-CABN,11,9,Defense-3,52.00,17-Jan-2005 04:00,BARDA-ALFA,40.401,47.121,prepare,,low
-12,AVNDET,AVNDET,11,9,Defense-3,52.00,17-Jan-2005 04:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-13,NLOS,NLOS,11,9,Defense-3,52.00,17-Jan-2005 04:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-14,FSB,FSB,11,9,Defense-3,52.00,17-Jan-2005 04:00,YEVLAKH-AFLD,40.628,47.141,prepare,,low
-15,159-AVNCO,159-AVNCO,11,9,Defense-3,52.00,17-Jan-2005 04:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-16,7-158-AVNCO,7-158-AVNCO,11,9,Defense-3,52.00,17-Jan-2005 04:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-7,UA-HQ,UA-HQ,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,BARDA-ALFA,40.401,47.121,assault,,high
-8,BIC,BIC,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,BARDA-BRAVO,40.427,47.122,assault,,high
-9,1-CABN,1-CABN,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,MIR-BASHIR,40.332,46.934,assault,,high
-10,2-CABN,2-CABN,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,BARDA-CHARLIE,40.315,47.396,assault,,high
-11,3-CABN,3-CABN,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,BARDA-DELTA,40.352,47.038,assault,,high
-12,AVNDET,AVNDET,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-13,NLOS,NLOS,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-14,FSB,FSB,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,YEVLAKH-AFLD,40.628,47.141,assault,,high
-15,159-AVNCO,159-AVNCO,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-16,7-158-AVNCO,7-158-AVNCO,12,10,Mech-Move-Air-Assault,58.00,17-Jan-2005 10:00,NAETALAN-AFLD,40.508,46.834,assault,,high
-7,UA-HQ,UA-HQ,13,11,Reconstitution,70.00,17-Jan-2005 22:00,BARDA-ALFA,40.401,47.121,prepare,,low
-8,BIC,BIC,13,11,Reconstitution,70.00,17-Jan-2005 22:00,BARDA-BRAVO,40.427,47.122,prepare,,low
-9,1-CABN,1-CABN,13,11,Reconstitution,70.00,17-Jan-2005 22:00,MIR-BASHIR,40.332,46.934,prepare,,low
-10,2-CABN,2-CABN,13,11,Reconstitution,70.00,17-Jan-2005 22:00,BARDA-CHARLIE,40.315,47.396,prepare,,low
-11,3-CABN,3-CABN,13,11,Reconstitution,70.00,17-Jan-2005 22:00,BARDA-DELTA,40.352,47.038,prepare,,low
-12,AVNDET,AVNDET,13,11,Reconstitution,70.00,17-Jan-2005 22:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-13,NLOS,NLOS,13,11,Reconstitution,70.00,17-Jan-2005 22:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-14,FSB,FSB,13,11,Reconstitution,70.00,17-Jan-2005 22:00,YEVLAKH-AFLD,40.628,47.141,prepare,,low
-15,159-AVNCO,159-AVNCO,13,11,Reconstitution,70.00,17-Jan-2005 22:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-16,7-158-AVNCO,7-158-AVNCO,13,11,Reconstitution,70.00,17-Jan-2005 22:00,NAETALAN-AFLD,40.508,46.834,prepare,,low
-7,UA-HQ,UA-HQ,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-8,BIC,BIC,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-9,1-CABN,1-CABN,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-10,2-CABN,2-CABN,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-11,3-CABN,3-CABN,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-12,AVNDET,AVNDET,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-13,NLOS,NLOS,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-14,FSB,FSB,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-15,159-AVNCO,159-AVNCO,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
-16,7-158-AVNCO,7-158-AVNCO,14,12,Redeploy,72.00,18-Jan-2005 00:00,TANRYKULULAR-AFLD,40.735,46.859,redeploy,,low
diff --git a/share/data/scenario/org-list.csv b/share/data/scenario/org-list.csv
deleted file mode 100755
index f14fa8703..000000000
--- a/share/data/scenario/org-list.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-org_id,org_name,UIC,org_long_name,org_comment,icon_url
-UA-HQ,UA-HQ,,UA Headquarters,,/Users/dietrick/Desktop/testicon.gif
-BIC,BIC,,Brigade Intel and Comm,,/Users/dietrick/Desktop/testicon.gif
-1-CABN,1-CABN,,1st Combined Arms Battalion,,/Users/dietrick/Desktop/testicon.gif
-2-CABN,2-CABN,,2nd Combined Arms Battalion,,/Users/dietrick/Desktop/testicon.gif
-3-CABN,3-CABN,,3rd Combined Arms Battalion,,/Users/dietrick/Desktop/testicon.gif
-AVNDET,AVNDET,,Aviation detachment,,/Users/dietrick/Desktop/testicon.gif
-NLOS,NLOS,,Non-Line of Sight Battalion,,/Users/dietrick/Desktop/testicon.gif
-FSB,FSB,,Forward Support Battalion,,/Users/dietrick/Desktop/testicon.gif
-159-AVNCO,159-AVNCO,WC5LAA,159th Av Co Hvy Hel,(CH-47s or Chinooks),/Users/dietrick/Desktop/testicon.gif
-7-158-AVNCO,7-158-AVNCO,WC3EAA,7/158 AV Co Aslt Hel,(UH-60s or Blackhawks),/Users/dietrick/Desktop/testicon.gif
diff --git a/share/data/shape/cntry02/cntry02.avl b/share/data/shape/cntry02/cntry02.avl
deleted file mode 100755
index 0b7656250..000000000
--- a/share/data/shape/cntry02/cntry02.avl
+++ /dev/null
@@ -1,350 +0,0 @@
-/3.1
-(ODB.1
- FirstRootClassName: "Legend"
- Roots: 2
- Version: 31
-)
-
-(Legend.2
- SymType: 0x02
- LegType: 0x08
- ClassType: 0x03
- FieldNames: 3
- Symbols: 4
- Class: 41
- Class: 42
- Class: 43
- Class: 44
- Class: 45
- Class: 46
- Class: 47
- Class: 48
- Class: 49
- StdDevs: 1.00000000000000
- NullSym: 50
- NullValues: 54
- StatValues: 55
- Precision: -3
-)
-
-(AVStr.3
- S: "Color_map"
-)
-
-(SymList.4
- Child: 5
- Child: 9
- Child: 13
- Child: 17
- Child: 21
- Child: 25
- Child: 29
- Child: 33
- Child: 37
-)
-
-(BShSym.5
- Color: 6
- Outline: 1
- OutlineColor: 7
- OutlineWidth: 0.10000000000000
- BgColor: 8
-)
-
-(TClr.6
- Red: 0xd2d2
- Green: 0xd2d2
- Blue: 0xd2d2
-)
-
-(TClr.7
-)
-
-(TClr.8
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.9
- Color: 10
- Outline: 1
- OutlineColor: 11
- OutlineWidth: 0.10000000000000
- BgColor: 12
-)
-
-(TClr.10
- Red: 0x9d90
- Green: 0xc0ff
- Blue: 0xc0fd
-)
-
-(TClr.11
-)
-
-(TClr.12
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.13
- Color: 14
- Outline: 1
- OutlineColor: 15
- OutlineWidth: 0.10000000000000
- BgColor: 16
-)
-
-(TClr.14
- Red: 0xdfff
- Green: 0xc765
- Blue: 0xaa9f
-)
-
-(TClr.15
-)
-
-(TClr.16
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.17
- Color: 18
- Outline: 1
- OutlineColor: 19
- OutlineWidth: 0.10000000000000
- BgColor: 20
-)
-
-(TClr.18
- Red: 0xa1c6
- Green: 0xd1ff
- Blue: 0x97c1
-)
-
-(TClr.19
-)
-
-(TClr.20
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.21
- Color: 22
- Outline: 1
- OutlineColor: 23
- OutlineWidth: 0.10000000000000
- BgColor: 24
-)
-
-(TClr.22
- Red: 0xe2ff
- Green: 0xa6b3
- Blue: 0xa6b3
-)
-
-(TClr.23
-)
-
-(TClr.24
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.25
- Color: 26
- Outline: 1
- OutlineColor: 27
- OutlineWidth: 0.10000000000000
- BgColor: 28
-)
-
-(TClr.26
- Red: 0xcbb1
- Green: 0xa68b
- Blue: 0xcbff
-)
-
-(TClr.27
-)
-
-(TClr.28
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.29
- Color: 30
- Outline: 1
- OutlineColor: 31
- OutlineWidth: 0.10000000000000
- BgColor: 32
-)
-
-(TClr.30
- Red: 0xfeff
- Green: 0xa45a
- Blue: 0xa45a
-)
-
-(TClr.31
-)
-
-(TClr.32
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.33
- Color: 34
- Outline: 1
- OutlineColor: 35
- OutlineWidth: 0.10000000000000
- BgColor: 36
-)
-
-(TClr.34
- Red: 0xa829
- Green: 0xacc0
- Blue: 0xd1ff
-)
-
-(TClr.35
-)
-
-(TClr.36
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(BShSym.37
- Color: 38
- Outline: 1
- OutlineColor: 39
- OutlineWidth: 0.10000000000000
- BgColor: 40
-)
-
-(TClr.38
- Name: "Transparent"
-)
-
-(TClr.39
- Name: "Transparent"
-)
-
-(TClr.40
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(LClass.41
- IsText: 1
- Label: "1"
- MinStr: "1"
- MaxStr: "1"
- Precision: -3
-)
-
-(LClass.42
- IsText: 1
- Label: "2"
- MinStr: "2"
- MaxStr: "2"
- Precision: -3
-)
-
-(LClass.43
- IsText: 1
- Label: "3"
- MinStr: "3"
- MaxStr: "3"
- Precision: -3
-)
-
-(LClass.44
- IsText: 1
- Label: "4"
- MinStr: "4"
- MaxStr: "4"
- Precision: -3
-)
-
-(LClass.45
- IsText: 1
- Label: "5"
- MinStr: "5"
- MaxStr: "5"
- Precision: -3
-)
-
-(LClass.46
- IsText: 1
- Label: "6"
- MinStr: "6"
- MaxStr: "6"
- Precision: -3
-)
-
-(LClass.47
- IsText: 1
- Label: "7"
- MinStr: "7"
- MaxStr: "7"
- Precision: -3
-)
-
-(LClass.48
- IsText: 1
- Label: "8"
- MinStr: "8"
- MaxStr: "8"
- Precision: -3
-)
-
-(LClass.49
- IsNoData: 1
- IsText: 1
- Label: "No Data"
- Precision: -3
-)
-
-(BShSym.50
- Color: 51
- Outline: 1
- OutlineColor: 52
- OutlineWidth: 0.10000000000000
- BgColor: 53
-)
-
-(TClr.51
- Name: "Transparent"
-)
-
-(TClr.52
- Name: "Transparent"
-)
-
-(TClr.53
- Red: 0xffff
- Green: 0xffff
- Blue: 0xffff
-)
-
-(NameDict.54
-)
-
-(NameDict.55
-)
-
diff --git a/share/data/shape/cntry02/cntry02.dbf b/share/data/shape/cntry02/cntry02.dbf
deleted file mode 100755
index e2780cec2..000000000
Binary files a/share/data/shape/cntry02/cntry02.dbf and /dev/null differ
diff --git a/share/data/shape/cntry02/cntry02.prj b/share/data/shape/cntry02/cntry02.prj
deleted file mode 100755
index c0c079216..000000000
Binary files a/share/data/shape/cntry02/cntry02.prj and /dev/null differ
diff --git a/share/data/shape/cntry02/cntry02.sbn b/share/data/shape/cntry02/cntry02.sbn
deleted file mode 100755
index 12d608f90..000000000
Binary files a/share/data/shape/cntry02/cntry02.sbn and /dev/null differ
diff --git a/share/data/shape/cntry02/cntry02.sbx b/share/data/shape/cntry02/cntry02.sbx
deleted file mode 100755
index dbe7f83c6..000000000
Binary files a/share/data/shape/cntry02/cntry02.sbx and /dev/null differ
diff --git a/share/data/shape/cntry02/cntry02.shp b/share/data/shape/cntry02/cntry02.shp
deleted file mode 100755
index cf5daa5f8..000000000
Binary files a/share/data/shape/cntry02/cntry02.shp and /dev/null differ
diff --git a/share/data/shape/cntry02/cntry02.shp.xml b/share/data/shape/cntry02/cntry02.shp.xml
deleted file mode 100755
index d53fde2c8..000000000
--- a/share/data/shape/cntry02/cntry02.shp.xml
+++ /dev/null
@@ -1,2180 +0,0 @@
-
-
-
-
- {1F7DDF21-BC01-4C20-8AA5-243B33ED0B1E}
- 20000920
- 15021200
- 20020215
- 23045100
- 20020215
- 23045100
- FALSE
- {77372682-270E-11D6-84B2-0080C7991770}
-
- Microsoft Windows 2000 Version 5.0 (Build 2195) Service Pack 2; ESRI ArcCatalog 8.1.3.679
-
- en
- World Countries 2002 represents the boundaries for the countries of the world, as they existed in 2002.
- World Countries 2002 provides political boundaries for the world in 2002. To display World Political Organization Membership attributes or CountryWatch Demographics attributes, join these tables to this attribute table using Fips_cntry or Cntry_name as the common field.
- Largest scale when displaying the data: 1:15,000,000.
-
-
-
- 20020401
- World Countries 2002
- cntry02
- vector digital data
- 2002
-
- ESRI Data & Maps
- 2002
-
-
- Redlands, California, USA
- Environmental Systems Research Institute, Inc. (ESRI)
-
- Location: ESRI Data & Maps 2002 (CD 1) \world
- Environmental Systems Research Institute, Inc. (ESRI)
-
-
-
- publication date: 1996, 1998, Winter 1993/1994, 20000101, 20000225, 20010128, 20000612; ground condition: 1994
-
-
-
-
- Matches software update releases
-
-
-
- -180.000000
- 180.000000
- 83.623596
- -90.000000
-
-
- -180.000000
- 180.000000
- -90.000000
- 83.623596
-
-
-
-
- None
- polygon
- countries
- international boundaries
- coastlines
- area
- international codes
- currencies
- sovereignties
- population
- landlocked information
- boundaries
- society
-
-
- World
- None
-
-
- None
- 1996
- 1998
- 1993/1994
- 2000
- 1994
- 2000
- 2001
- 2000
-
-
- Access granted to Licensee only.
- The data are provided by multiple, third party data vendors under license to ESRI for inclusion on ESRI Data & Maps CD–ROMs for use with ESRI® software. Each data vendor has its own data licensing policies and may grant varying redistribution rights to end users. Please consult the redistribution rights below for this data set provided on ESRI Data & Maps CD–ROMs. As used herein, “Geodata†shall mean any digital data set consisting of geographic data coordinates and associated attributes.
-
-The redistribution rights for this data set: Redistribution rights are granted by the data vendor for hard-copy renditions or static, electronic map images (e.g. .gif, .jpeg, etc.) that are plotted, printed, or publicly displayed with proper metadata and source/copyright attribution to the respective data vendor(s). Geodata is redistributable with a Value-Added Software Application developed by ESRI Business Partners on a royalty-free basis with proper metadata and source/copyright attribution to the respective data vendor(s). Geodata is redistributable without a Value-Added Software Application (i.e., adding the sample data to an existing, [non]commercial data set for redistribution) with proper metadata and source/copyright attribution to the respective data vendor(s).
-
-The terms and conditions below apply to all the data sets provided on the ESRI Data & Maps CD–ROMs.
-
-Proprietary Rights and Copyright: Licensee acknowledges that the Data and Related Materials contain proprietary and confidential property of ESRI and its licensor(s). The Data and Related Materials are owned by ESRI and its licensor(s) and are protected by United States copyright laws and applicable international copyright treaties and/or conventions.
-
-Limited Warranty and Disclaimer: ESRI warrants that the media upon which the Data and Related Materials are provided will be free from defects in materials and workmanship under normal use and service for a period of ninety (90) days from the date of receipt.
-
-THE DATA AND RELATED MATERIALS ARE EXCLUDED FROM THE LIMITED WARRANTY, AND THE LICENSEE EXPRESSLY ACKNOWLEDGES THAT THE DATA CONTAINS SOME NONCONFORMITIES, DEFECTS, OR ERRORS. ESRI DOES NOT WARRANT THAT THE DATA WILL MEET LICENSEE'S NEEDS OR EXPECTATIONS; THAT THE USE OF THE DATA WILL BE UNINTERRUPTED; OR THAT ALL NONCONFORMITIES, DEFECTS, OR ERRORS CAN OR WILL BE CORRECTED. ESRI IS NOT INVITING RELIANCE ON THIS DATA, AND THE LICENSEE SHOULD ALWAYS VERIFY ACTUAL DATA.
-
-EXCEPT FOR THE LIMITED WARRANTY SET FORTH ABOVE, THE DATA AND RELATED MATERIALS CONTAINED THEREIN ARE PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-Exclusive Remedy and Limitation of Liability: The entire liability of ESRI or its licensor(s) and Licensee's exclusive remedy shall be to terminate the Agreement upon Licensee returning the Data and Related Materials to ESRI with a copy of Licensee's invoice/receipt and ESRI returning the license fees paid to Licensee.
-
-IN NO EVENT SHALL ESRI AND/OR ITS LICENSOR(S) BE LIABLE FOR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOST PROFITS, LOST SALES, OR BUSINESS EXPENDITURES, INVESTMENTS, OR COMMITMENTS IN CONNECTION WITH ANY BUSINESS; LOSS OF ANY GOODWILL; OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT OR USE OF THE DATA AND RELATED MATERIALS, HOWEVER CAUSED, ON ANY THEORY OF LIABILITY, AND WHETHER OR NOT ESRI OR ITS LICENSOR(S) HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY EXCLUSIVE REMEDY.
-
-Third Party Beneficiary: ESRI's licensor(s) has (have) authorized ESRI to (sub)distribute and (sub)license its (their) data as incorporated into the Data and Related Materials. As an intended third party beneficiary to this Agreement, the ESRI licensor(s) is (are) entitled to directly enforce, in its own name, the rights and obligations undertaken by the Licensee and to seek all legal and equitable remedies as are afforded to ESRI.
-
-In the event that the data vendor(s) has (have) granted the end user permission to redistribute the Geodata, please use proper proprietary or copyright attribution for the various data vendor(s), and provide the associated metadata file(s) with the Geodata. In compliance with FGDC metadata standards, ESRI has attempted to practice proper metadata methodologies by providing any data source information, descriptions, and file names to assist in this effort.
- Shapefile
-
-
-
- Environmental Systems Research Institute, Inc. (ESRI)
- Data Team
-
-
- mailing and physical address
- 380 New York Street
- Redlands
- California
- 92373-8100
- USA
-
- 909-793-2853
- 909-793-5953
- info@esri.com
- 8:00 a.m.–5:30 p.m. Pacific time, Monday–Friday
- In the United States–
-Please direct all inquiries regarding software/data pricing and consulting services to your local ESRI Regional Office. For support, you may contact Technical Support by telephone (voice) between 6:00 a.m. and 6:00 p.m. Pacific time, Monday through Friday, by dialing 909-793-3774; facsimile (fax) available at 909-792-0960; electronic mail (e-mail) support@esri.com; or visit http://support.esri.com; ESRI holidays excluded.
-
-Outside the United States–
-Please direct all inquiries regarding software/data pricing, sales, support, and consulting services to your local ESRI International Distributor. This information can be found at http://gis.esri.com/intldist/contactint.cfm.
-
-For other questions or comments, you may contact ESRI headquarters by e-mail, telephone, or fax or write to us.
-
-
- National Geographic Society
-
-
- en
- FGDC Content Standards for Digital Geospatial Metadata
- FGDC-STD-001-1998
- local time
-
-
-
- Data Team
- Environmental Systems Research Institute, Inc. (ESRI)
-
-
- mailing and physical address
- Redlands
- California
- 92373-8100
- 380 New York Street
- USA
-
- 909-793-2853
- 909-793-5953
- info@esri.com
- 8:00 a.m.–5:30 p.m. Pacific time, Monday–Friday
-
-
- 20020215
-
- http://www.esri.com/metadata/esriprof80.html
- ESRI Metadata Profile
-
-
-
- Vector
-
-
- Simple
- Polygon
- FALSE
- 251
- TRUE
- FALSE
- World Country (2002)
-
-
- G-polygon
- 251
-
-
-
-
-
-
- GCS_WGS_1984
-
-
- Decimal degrees
- 0.000001
- 0.000001
-
-
- D_WGS_1984
- WGS_1984
- 6378137.000000
- 298.257224
-
-
-
-
-
-
- cntry02
- Feature Class
- 251
- The polygons represent the boundaries for the countries of the world, as they existed in 2002.
- ESRI
-
-
- FID
- FID
- OID
- 4
- 0
- 0
- Internal feature number.
- ESRI
-
- Sequential unique whole numbers that are automatically generated.
-
-
-
- Shape
- Shape
- Geometry
- 0
- 0
- 0
- Feature geometry.
- ESRI
-
- Coordinates defining the features.
-
-
-
- FIPS_CNTRY
- FIPS_CNTRY
- String
- 2
- The FIPS code (two-letter) for the country.
- Department of Commerce, National Institute of Standards and Technology
-
-
- Federal Information Processing Standards Publication 10-4
- National Institute of Standards and Technology
-
-
-
-
- GMI_CNTRY
- GMI_CNTRY
- String
- 3
-
-
- Global Mapping International Codes
- Global Mapping International
-
-
- The country code (three-letter) for the country from Global Mapping International.
- Global Mapping International
-
-
- ISO_2DIGIT
- ISO_2DIGIT
- String
- 2
-
-
- ISO 3166-1 Alpha-2 codes
- International Organization for Standardization
-
-
- The country code (two-letter) for the country from the International Organization for Standardization.
- International Organization for Standardization
-
-
- ISO_3DIGIT
- ISO_3DIGIT
- String
- 3
-
-
- ISO 3166-1 Alpha-3 codes
- International Organization for Standardization
-
-
- The country code (three-letter) for the country from the International Organization for Standardization.
- International Organization for Standardization
-
-
- CNTRY_NAME
- CNTRY_NAME
- String
- 40
-
- Names for the features.
-
- The country name.
- ArcWorld Supplement, Geographic and Global Issues, CIA Factbook
-
-
- LONG_NAME
- LONG_NAME
- String
- 40
- The official country name.
-
- Names for the features.
-
- ArcWorld Supplement, Geographic and Global Issues, CIA Factbook
-
-
- SOVEREIGN
- SOVEREIGN
- String
- 40
- The name of the sovereign for the country.
- ArcWorld Supplement, CIA Factbook
-
- Names for the features.
-
-
-
- POP_CNTRY
- POP_CNTRY
- Number
- 10
- The 1994 estimated population of the country.
- National Center for Geographic Information and Analysis
-
-
- -99999
- No population data available.
- ESRI
-
-
-
-
- CURR_TYPE
- CURR_TYPE
- String
- 16
- The type of currency for the country.
- ArcWorld Supplement
-
- Names for the features.
-
-
-
- CURR_CODE
- CURR_CODE
- String
- 4
- The abbreviation (three-letter) for the currency of the country.
- ArcWorld Supplement
-
- Names for the features.
-
-
-
- LANDLOCKED
- LANDLOCKED
- String
- 1
- Indicates if the country is landlocked.
-
-
- Y
- The country is landlocked.
- ArcWorld Supplement
-
-
- The country is not landlocked.
- ArcWorld Supplement
- N
-
-
- ArcWorld Supplement
-
-
- SQKM
- SQKM
- Number
- 12
- 2
- The country area in square kilometers using an equal area projection.
- ESRI
-
- Calculated areas for the features.
-
-
-
- SQMI
- SQMI
- Number
- 12
- 2
- The country area in square miles using an equal area projection.
- ESRI
-
- Calculated areas for the features.
-
-
-
- COLOR_MAP
- COLOR_MAP
- String
- 1
- The number allows the country to be shaded unique from its neighbors.
- ESRI
-
-
- 1
- 8
-
-
-
-
-
-
-
-
-
- 3.830
- 3.830
- SHP
- no compression applied
- The SHP file contains the geospatial data. The SHX file contains the index of the geospatial data. The DBF file contains the attribute data in dBASE format. The PRJ file contains the coordinate system information (optional). The AVL file contains the legend information (optional). The SBN and SBX files contain the spatial index of the geospatial data (optional). The XML file contains the metadata describing the data set <data set name>.shp.xml (optional).
-
-
-
- ESRI Data & Maps 2002 CD–ROM Set is available only as part of ESRI® software.
-
- 650
- MB (megabytes)
-
- ISO 9660
-
-
-
- Software purchase price
-
-
-
-
- Environmental Systems Research Institute, Inc. (ESRI); ESRI International Distributors
-
- In the United States, contact the ESRI Telesales staff at 800-447-9778 for more information about our software and data.
-
-Outside the United States, please direct all inquiries to your local ESRI International Distributor. This information can be found at http://gis.esri.com/intldist/contactint.cfm.
-
- mailing and physical address
- 380 New York Street
- Redlands
- California
- 92373-8100
- USA
-
- 800-447-9778
-
-
- To use this data requires software that supports ArcView® GIS shapefiles.
- See use constraints.
- Offline Data
-
-
-
-
-
-
- ArcWorld Supplement
- Environmental Systems Research Institute, Inc. (ESRI)
- 1996
- 1
- vector digital data
-
-
- Environmental Systems Research Institute, Inc. (ESRI)
- Redlands, California, USA
-
-
-
- 3000000
- CD–ROM
-
-
-
- 1996
-
-
- publication date
-
- ArcWorld Supplement
- Attribute and geospatial data
-
-
- The following steps were performed by ESRI for Data & Maps 2002: Updated Saudi Arabia - Yemen border. Updated attributes for East Timor, Yugoslavia, Saudi Arabia, and Yemen. Recalculated attributes based on area. Created ArcGISâ„¢ layer file (.lyr) and ArcView legend file (.avl). Copied projection file (.prj) and created spatial indices.
-
-The following steps were performed by ESRI: Extracted the features from ESRI Data & Maps 1999 data set–cntry98.shp. Updated political boundaries and attributes for 2000 for Macau, Hong Kong, and East Timor. Extended political boundaries into the Caspian Sea and removed the shoreline. Created ArcGIS™ layer file (.lyr). Created ArcView legend file (.avl). Created projection file (.prj). Created spatial indices.
- ArcInfo, ArcView 3.x, ArcGIS 8.x
- ArcWorld Supplement
- 20020212
- Geographic and Global Issues
- CIA Factbook
- World Demography Project
- ESFN FIPS 10-4 20000225
- ESFN FIPS 10-4 20010128
- TREATY OF JEDDAH, 2000
-
-
- Geographic and Global Issues
- Attribute data
-
-
- United States Department of State, Bureau of Intelligence and Research
- Winter 1993/1994
- Geographic and Global Issues Quarterly
- Volume 3, Number 4
-
- Geographic and Global Issues Quarterly
- Volume 3, Number 4
-
-
- Washington, DC, USA
- United States Department of State, Bureau of Intelligence and Research
-
-
-
- paper
-
-
-
- Winter 1993/1994
-
-
- publication date
-
-
-
-
-
- The World Factbook 2000
- United States Central Intelligence Agency
- 20000101
- 2000
-
- The World Factbook
- 2000
-
-
- Washington, DC, USA
- United States Central Intelligence Agency
-
-
-
- online
-
-
-
- 20000101
-
-
- publication date
-
- CIA Factbook
- Attribute data
-
-
- paper
- NCGIA
-
-
- National Center for Geographic Information and Analysis
- 199504
- World Demography Project
-
- Santa Barbara, California, USA
- National Center for Geographic Information and Analysis at University of California, Santa Barbara
-
-
-
-
-
-
- 1994
-
-
- ground condition
-
- Attribute data
-
-
-
-
- COUNTRIES, DEPENDENCIES, AREAS OF SPECIAL SOVEREIGNTY, AND THEIR PRINCIPAL ADMINISTRATIVE DIVISIONS
- Executive Secretary for Foreign Names - US Board on Geographic Names
- 20000225
- 4
- tabular digital data
-
- FIPS 10-4
-
-
- Bethesda, Maryland, USA
- National Imagery and Mapping Agency
-
-
-
- ESFN FIPS 10-4 20000225
- Attribute data
-
-
-
- 20000225
-
-
- publication date
-
-
-
- Attribute data
- ESFN FIPS 10-4 20010128
-
-
- COUNTRIES, DEPENDENCIES, AREAS OF SPECIAL SOVEREIGNTY, AND THEIR PRINCIPAL ADMINISTRATIVE DIVISIONS
- Executive Secretary for Foreign Names - US Board on Geographic Names
- 20010128
- 6
- tabular digital data
-
- FIPS 10-4
-
-
- Bethesda, Maryland, USA
- National Imagery and Mapping Agency
-
-
-
-
-
-
- 20010128
-
-
- publication date
-
-
-
-
-
- International Border Treaty between the Republic of Yemen and the Kingdom of Saudi Arabia
- 20000612
- THE TREATY OF JEDDAH, 2000
- document
- http://www.al-bab.com/yemen/pol/int5.htm
-
- online
- Yemen Gateway - "BAB AL-YEMEN"
-
-
-
- online
- Attribute and geospatial data
-
-
-
- 20000612
-
-
- publication date
-
- TREATY OF JEDDAH, 2000
-
-
-
-
- The geospatial part of this data set was originally extracted from the ArcWorld Supplement database and then generalized (tolerance unknown). The positional accuracy is unknown.
-
-
- No duplicate features are present. The shapefile is created directly from a topologically correct ArcInfoâ„¢ coverage.
- After processing, the data set is checked for drawing display and number of records and file sizes compared with source materials.
-
-
-
- Qk3uNwEAAAAAADYAAAAoAAAAyAAAAIUAAAABABgAAAAAALg3AQAAAAAAAAAAAAAAAAAAAAAA////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-tL69wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O
-wM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/OwM/O3t/e////////////////////////////
-////////////////////////////////////////s8/O1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//zs/O////////////////////////////////////////////////////////////////
-////s8/O1v//1v//1v//1v//1v//1v//yu/vs8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/O
-s8/Os8/Os8/Oyu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//zs/O////////////////////////
-////////////////////////////////////////////ub69zs/Ozs/Ozs/Ozs/Ozs/Ozs/Ozs/O
-////////////////////3t/esL69s8/Os8/Os8/Os8/Os8/Os8/Oyu/v1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/vs8/Op769sL69
-wM/OwM/OwM/O3t/e////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////7+/vvb69jI2Mm66ts8/Ovt/e
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-s8/Os8/Os8/OsL69wM/OtL69zs/Ozs/OtL69wM/OwM/OwM/OwM/OwM/OsL69s8/Os8/Oyu/v1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//s8/OsL69ub69zs/O7+/v////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////3t/eub69nJ6c3t/e3t/evb69zs/Ozs/OmJ6cm66t1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//vt/ep769j56cj56cvb69vb69vb697+/vra6tnJ6cnJ6cd317////////zs/O
-nJ6ck56cs8/Os8/Ok56c3t/e////////zs/OnJ6cnJ6cnJ6cg42Mvt/e1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/vg42MnJ6c////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////3t/ezs/O7+/vnJ6ce317g42Ms8/Os8/O
-s8/Ovt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//vt/em66ta21rj56cmJ6cnJ6c
-zs/Ozs/Ozs/O7+/v////////////////////////////3t/etL69wM/OnJ6czs/Ozs/Ozs/O3t/e
-tL69s8/Ovt/eyu/vvt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//s8/Op769jI2Me317zs/O////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////3t/e3t/e////////ra6tnJ6ce317m66ts8/Os8/O1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//s8/Os8/Os8/O1v//vt/es8/O1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//p769j56cs8/Os8/Op769wM/OwM/Ovb697+/v////////////
-////////////////////////////////////////////////3t/ezs/Oub69wM/OwM/OwM/Oj56c
-yu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//nJ6c////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////7+/vzs/Ozs/Ozs/OnJ6cvb69nJ6ca21ra21ra21ra21rjI2MnJ6cqK6t
-ra6tra6t////7+/vnJ6ca21rd317s8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/OsL69p769s8/Oj56c
-s8/Os8/Os8/Oyu/v1v//yu/vm66tra6t////////////////////////////////////////////
-////////////////////////////////nJ6c7+/vnJ6cg42Myu/v1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//s8/Om66tvb69zs/O////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////3t/era6tnJ6ce317nJ6c
-zs/O3t/ezs/Ozs/O7+/v////////3t/enJ6cvb69a21ra21rg42Mg42Mt8/O1v//p769e317////
-////////////////////////////////////////////////////////////////////////////
-////////7+/vvb69j56cs8/Ovt/es8/Os8/Os8/Ovt/e1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//j56cwM/Ovt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-j56cra6t////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-vb69jI2Me317p769d317s8/O1v//j56cvb69////////////////////////////////////////
-////////////////////////////////////////////////////////7+/v3t/ezs/Ozs/Ovb69
-7+/vzs/Ora6tzs/Ovb69wM/Oub69ub69wM/OwM/OwM/OwM/Oub69tL69wM/OwM/Op769s8/O1v//
-s8/Om66tyu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//j56cvb69ra6t
-q769s8/Oyu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//yu/vs8/Os8/OsL69qK6tyc/Ozs/O7+/v////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////3t/e////////////////////////////////7+/vzs/Ozs/Og42Me317vb693t/e
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////7+/vub697+/v////vb69wM/OsL69s8/Os8/Oyu/v1v//
-1v//1v//yu/vs8/Os8/Os8/Os8/Ot8/OqK6t////////////ub69wM/Op769yu/v1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//s8/Om66twM/Oub69vb69vb693t/e////////////3t/e
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////3t/era6td317mJ6czs/O7+/v////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////3t/era6twM/Om66ttL69vb69////////////////////////
-////////////////////////zs/Ovb69vb69vb69mJ6cra6tvb69nJ6cmJ6csL69n66twM/OtL69
-vb69sL69t8/OwM/Ovb69zs/Ovb69vb69qK6tvb69ub69wM/OsL69n66twM/Ora6tzs/Ozs/Ozs/O
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////3t/ejI2M
-jI2MjI2Mra6t3t/e////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////7+/v////////////////////////////////////////////
-////////////7+/v3t/e////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////3t/enJ6cvb69ra6tvb69////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////zs/O////////////3t/evb69////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////zs/O3t/e
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////7+/vnJ6ca21rd317jI2Mvb69////////////////////////////////
-////////////////3t/era6t3t/e////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////3t/e////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////e317a21rd317jI2M
-////////////ra6tra6t7+/v////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////3t/e////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////7+/va21rj56c1v//jI2M////////////3t/e3t/e////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////7+/vzs/O////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////7+/v3t/e////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////3t/ea21rg42M1v//
-yu/vpK6t////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////3t/evb69////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////3t/ea21rj56cyu/v1v//ra6t////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////3t/e////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////mJ6csL69zs/O////
-////////////////////////////////////////////////////////////////////////////
-////////////3t/e3t/e////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////ra6ta21r
-vt/e1v//p769zs/O////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////7+/v3t/e////////////
-////////////////////////zs/Op769q7693t/e////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////vb69a21r1v//1v//1v//a21r3t/e////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////mJ6cm66t3t/e////////////////////////////////////7+/vqK6t
-p769vb69////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////zs/O
-m66tyu/v1v//1v//p769j56c////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////ra6tra6tzs/O////
-////////////////////////////////////////nJ6cd317ub69////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////7+/vs8/Op7691v//1v//1v//p769s8/OwM/O3t/e
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////7+/vub69sL69mJ6ctL69zs/O////////////////////////////////////////
-////7+/vsL69m66tvb69////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-7+/vq769p7691v//1v//1v//1v//1v//1v//ra6t////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////zs/Ora6t1v//1v//1v//1v//s8/O
-7+/v////////////////////////////////////////7+/va21r7+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////vb69p7691v//1v//1v//1v//1v//m66t
-n66tn66t3t/e////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-vb69wM/Oyc/Ozs/Ozs/O////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////mJ6cp769ub69zs/Ozs/O////////////
-////////mJ6ce317s8/O1v//1v//1v//1v//1v//qK6t////////////////////////////////
-////////vb697+/v////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////7+/vd3171v//1v//1v//1v//1v//p7691v//vt/eh42M7+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////j56c1v//1v//1v//yu/vn66t7+/v////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////sL691v//1v//1v//yu/vsL69ub69zs/Ozs/Ora6tyu/vs8/O1v//1v//1v//1v//1v//
-1v//s8/Ozs/O////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////3t/eg42M1v//1v//1v//1v//1v//
-vt/ej56cs8/Oyu/ve317////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-3t/eyu/v1v//1v//1v//vt/ep769n66t////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////q7691v//1v//1v//1v//1v//1v//
-1v//yu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//wM/O////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////j56cvt/e1v//1v//1v//1v//1v//p769s8/O1v//yu/vqK6t////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////e317p769vt/e1v//1v//yu/vm66tvt/eub69
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////3t/evt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//m66t////////////////////////7+/v7+/v////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////7+/v7+/v////////////////
-////////////////////////////////////////////////////////sL69m66t1v//1v//1v//
-1v//p769p769g42Ms8/O1v//n66t////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-vb691v//1v//g42Mp769s8/Oyu/v1v//s8/Od317////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////jI2M1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//sL69////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////wM/Op769yu/v1v//1v//vt/em66tyu/vj56c1v//1v//vt/eub697+/v
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////tL691v//1v//m66tyu/vvt/ep7691v//1v//
-j56cq7697+/v////////////n66tp7693t/e////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////pK6t1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//s8/Ovb69////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////ub69vt/em66tm66t
-m66tyu/vyu/vs8/Ovt/e1v//1v//1v//1v//p769n66tzs/O////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////sL691v//1v//m66t1v//1v//yu/vm66tm66ts8/Ovt/ezs/O////////////s8/O1v//ub69
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////qK6tyu/v1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//s8/Ora6t////////////////////
-////7+/vzs/O////////////////////////////////////////////////////////////////
-////////////////////////////////////////3t/e////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////zs/Os8/O1v//1v//p7691v//s8/O1v//1v//1v//1v//1v//1v//
-1v//1v//q769////////////////////////////////////////////////////////////////
-////////////////////////////////////////3t/eyu/v1v//1v//s8/O1v//1v//s8/Os8/O
-1v//p769s8/O7+/v////////////q7691v//q769////////////zs/Ozs/O////////7+/v////
-////////////////////////////////////////////////////////////////////////////
-////////////////////vb69wM/Os8/Oyu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//yu/vub69////////////////////////7+/vra6tnJ6c7+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////3t/e////zs/O////////////////////////////////////3t/e////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////qK6tp7691v//
-1v//yu/vs8/Op769s8/O1v//1v//1v//1v//1v//1v//1v//1v//zs/O////////////////////
-////////////////////////////////////////////////////////////////////////////
-////q7691v//1v//vt/em66ts8/Op769j56c1v//1v//s8/Ovt/etL69////////////wM/O1v//
-vt/e3t/e////////////////////////7+/v////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////qK6t
-1v//1v//1v//1v//1v//1v//1v//1v//yu/v1v//1v//yu/vra6t////////////////////////
-////////////////ra6t////////////7+/vvb69////////////////////////////////////
-////////////////////////////////////3t/e////////////////////////////////////
-////////////////3t/e3t/e////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////3t/epK6tvt/ep7691v//1v//1v//yu/vj56cyu/v1v//1v//1v//1v//
-1v//1v//1v//1v//wM/O////////////////////////////////////////////////////////
-////////////////////////////////////////////j56cs8/Os8/Ovt/e1v//m66ts8/Oyu/v
-m66tvt/em66tp769yu/vp769zs/O////tL69vt/e1v//nJ6c////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////3t/eh42Mvt/e1v//1v//1v//1v//1v//p769qK6t
-sL691v//q769////////////////////////////////////////zs/O3t/e////////////7+/v
-nJ6c3t/e////////////////////////////////////////////////////////////////////
-////////////////zs/O7+/v////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////zs/Os8/O1v//1v//p769
-1v//1v//1v//m66t1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//wM/O////////////////
-////////////////////////////////////////////////////////////////////////////
-////////q7691v//1v//1v//1v//s8/O1v//1v//1v//p769s8/Oj56cs8/O1v//m66t////////
-3t/em66tpK6t////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////7+/vh42Mm66th42M1v//1v//p769vb69////nJ6cs8/Oub69////////////////////////
-////////////////nJ6c3t/e////////////////////////////////////////////////////
-////////////////////////////////////////////////////7+/v7+/v////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////pK6t1v//1v//1v//j56c1v//p769p769vt/e1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//t8/O3t/e////////////////////////////////////////////////
-////////////////////////////////////////////////ub69yu/v1v//1v//1v//p769vt/e
-s8/Oj56cs8/Os8/Oj56c1v//1v//sL69////3t/e7+/vvb69ub69////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////7+/vzs/Op769s8/Om66tvb69
-////vb69pK6t////////////////////////////////7+/v////////7+/v////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////7+/v7+/v////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////vb69yu/v1v//yu/vp769
-m66tp769s8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//n66t7+/v////
-////////////////////////////////////////////////////////////////////////////
-////////////7+/vs8/O1v//1v//1v//m66tm66tvt/es8/O1v//s8/Od317s8/Os8/OjI2M7+/v
-7+/v////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////3t/e////////////////////////
-3t/evb69vb697+/v////7+/vzs/Ovb697+/v3t/e////zs/Ozs/O////3t/evb69vb69vb697+/v
-////3t/era6t3t/e7+/v7+/v////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////zs/O7+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////vM/O1v//yu/vm66tvt/e1v//yu/vyu/v1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//tL69////////////////////////////////////////
-////////////////////////////////////////////////////zs/O1v//yu/vs8/O1v//s8/O
-1v//1v//p769p769p769vt/e1v//1v//zs/O////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////7+/vzs/Ora6tnJ6cnJ6ca21rjI2Me317a21rvb69zs/O3t/e////////
-7+/vzs/Ok56ch42M3t/en66tqK6tvb69zs/O////ra6tra6tjI2M////////////////////////
-////////3t/e////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////qK6tyu/v1v//vt/evt/e
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//wM/O
-////////////////////////////////////////////////////////////////////////////
-////////////////qK6ts8/Om66tyu/vm66tyu/v1v//1v//1v//p7691v//1v//1v//vt/ezs/O
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////7+/vjI2Mg42MqK6tsL69jI2M////
-////7+/v7+/v////7+/v7+/vvb69ra6tzs/O3t/e3t/em66tp769yu/vvt/eg42Mzs/O3t/e////
-ra6tra6t3t/e////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////j56cs8/O1v//1v//m66ts8/O1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//yu/vsL69zs/O////////////////////////////////////
-////////////////////////////////////////////////////7+/va21rj56cyu/v1v//1v//
-1v//1v//1v//vt/ep7691v//1v//1v//p769zs/O////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////7+/vsL69pK6t////////////7+/vzs/O////nJ6cnJ6cnJ6c////////////7+/vnJ6c
-ra6tq769yu/vs8/O1v//n66tzs/Ovb69jI2Mra6tzs/O////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////e317s8/Op7691v//
-s8/Om66tyu/v1v//1v//1v//1v//1v//1v//1v//1v//s8/Os8/O1v//m66tn66twM/Ovb69////
-////////////////////////////////////////////////////////////////////////////
-////////////7+/vk56cm66tvt/ep7691v//1v//1v//1v//1v//s8/Od3171v//1v//p769vt/e
-k56c7+/v////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////ra6tn66tvt/ed317nJ6c3t/eq769m66t
-m66t3t/eg42Mg42Mzs/Ora6tnJ6cjI2Mra6ta21rmJ6cvt/es8/OpK6tvb697+/v3t/e3t/era6t
-3t/e////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-3t/era6t7+/v////////////k56c1v//vt/eg42Myu/vyu/vs8/O1v//1v//1v//1v//1v//1v//
-1v//s8/Od317d317tL69vb69////////////////////////////////////////////////////
-////////////////////////////////////////////////7+/vvb691v//yu/vp769s8/Ovt/e
-1v//1v//1v//1v//yu/vg42Ms8/Om66t1v//1v//vt/etL69////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////zs/OjI2Myu/vj56czs/O////k56c1v//1v//yu/vub69qK6te317ra6tzs/OnJ6cvb69a21r
-n66tra6tvb697+/v////////////////////////////////////////////////////3t/e////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////3t/e////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////7+/v////////////////3t/ej56cs8/O
-1v//1v//s8/Om66tg42Mm66t1v//yu/vm66ts8/O1v//1v//m66t7+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////7+/vzs/Oj56cvt/eg42Myu/vs8/O1v//1v//1v//1v//1v//m66t1v//m66t1v//
-1v//s8/Oyu/vqK6t7+/v////////////////////////////////////////////////////////
-////////////////////////////////////////////jI2Mp769m66ta21r7+/v////g42Mm66t
-m66tyu/vq769vb69nJ6cnJ6cra6tnJ6czs/O////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////zs/Ovt/e1v//1v//1v//vt/es8/Op769s8/Os8/Os8/O
-p769m66tp769pK6t////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////zs/Om66ts8/Os8/Oj56c
-m66t1v//1v//1v//1v//1v//p769s8/Om66t1v//vt/ej56cs8/O1v//n66t7+/v////////////
-////////////////////////////////////3t/e////////////////////////////////////
-////ra6tg42MpK6tj56cn66t////7+/v////ub69w9/ej56ck56c////////////ra6t3t/e7+/v
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-s8/O1v//1v//1v//s8/Oyu/vvt/evt/ej56cs8/Op769g42Mn66t7+/v////////////////////
-////////////////////////////////////////////////////////////qK6td317wM/OqK6t
-pK6tzs/O////vb69j56cj56c1v//1v//p7691v//s8/Op769p769p769m66tp769vt/e1v//p769
-m66tyu/vvt/evt/es8/Os8/On66t////////////////////////////////////////////7+/v
-zs/O////////3t/e////////////////////////////jI2Mub69zs/Op769ub69////7+/v////
-////7+/vh42Mj56cra6t3t/e////3t/e7+/v////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////zs/Ora6tzs/Op7691v//s8/Op769s8/Oyu/v1v//1v//j56c
-k56c7+/v////////////////////////////////////////////////////////////////////
-////////////////zs/Oh42Mm66tvt/e1v//s8/O1v//g42Mj56cvt/e1v//yu/vm66ts8/Op769
-s8/Ovt/e1v//1v//vt/es8/O1v//1v//yu/vm66t1v//1v//1v//1v//1v//p769s8/Ozs/O////
-////////////////////////////////////////////////////wM/OtL69////////////////
-////zs/O////7+/vjI2Mra6t////////////////////////7+/vnJ6c////ra6tjI2Mm66t3t/e
-////////////3t/e////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////7+/vra6te317mJ6c
-e317mJ6c1v//j56cvt/e1v//1v//1v//vt/ejI2M7+/v////////////////////////////////
-////////////////////////////////////////////////////////mJ6cm66tvt/es8/Oyu/v
-m66t1v//g42Mp7691v//1v//1v//1v//m66tj56cyu/vs8/Os8/O1v//j56c1v//1v//1v//yu/v
-p7691v//1v//1v//yu/vm66ts8/O1v//q769////////////////////////////////////////
-////////zs/Oq769h42M3t/e////////////////7+/v3t/e////zs/Oe317////////jI2M7+/v
-////////////////ra6t7+/v3t/ee317d3177+/v////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////vb69j56c7+/v////////7+/vpK6ta21rj56cn66tzs/Ora6tnJ6c
-ra6t////////////////////////////////////////////////////////////////////////
-////////////3t/ejI2Mvt/eyu/vs8/Op769m66tvt/es8/Og42Mm66ts8/O1v//1v//1v//yu/v
-g42Myu/v1v//yu/vg42Myu/v1v//1v//1v//1v//p7691v//1v//1v//g42MqK6ttL69wM/Oj56c
-zs/O////////////////////////////////////////////pK6t1v//tL69////////////////
-////zs/O7+/v////zs/OnJ6c7+/vn66tg42Mk56czs/O////////3t/e////nJ6czs/Oa21re317
-////////////////////////////////////////////////////////////////////////////
-////////7+/v7+/v////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////zs/OnJ6cg42Ms8/O3t/e
-////////////////7+/v3t/ezs/O////////7+/vvb693t/e////////////////////////////
-////////////////////////////////////////////////////zs/Od317j56cj56cs8/O1v//
-vt/em66t1v//m66tp769m66tp769p769p769p769j56c1v//1v//1v//j56c1v//1v//1v//1v//
-1v//1v//p7691v//yu/vd317k56cvb693t/e////////ra6t////////////////////////////
-////////3t/eyu/v1v//q769////////////////////7+/vzs/O////vb69a21rd317vt/evt/e
-p769nJ6c////////////////3t/ea21ra21rzs/O////////////////////////////////////
-zs/O////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////7+/vzs/O7+/vh42Mvt/ej56cm66td3173t/e////////////////////////////////////
-////vb69////////////////////////////////////////////////////////////////////
-////vb69////////qK6t1v//m66tg42Ms8/Os8/Ovt/eyu/vs8/Om66ts8/Oyu/v1v//1v//1v//
-yu/vp7691v//1v//1v//p769yu/v1v//1v//1v//1v//1v//m66tj56ce317nJ6c1v//yu/vvt/e
-sL69zs/O////////////////////////////////////////qK6t1v//1v//n66t7+/v////////
-////////////7+/v3t/enJ6cyu/v1v//s8/Om66tj56cvb69////////////////vb69h42Mzs/O
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////3t/etL69p769yu/vs8/Ovt/eg42MjI2M7+/v7+/v
-////////7+/vzs/O////7+/v7+/v////3t/e////vb693t/e////////////////////////////
-////////////////////////////////////////3t/evb69////////3t/ej56cvt/e1v//1v//
-1v//s8/O1v//1v//1v//1v//s8/O1v//1v//1v//1v//vt/eyu/v1v//1v//1v//s8/O1v//1v//
-1v//1v//1v//vt/ej56c7+/ve317s8/Op769vt/e1v//p769wM/Ozs/O////////////////////
-////////////s8/O1v//1v//1v//m66t7+/v////////////////zs/Op769h42Myu/vs8/Ovt/e
-g42MnJ6c////////////////////vb69j56c7+/v////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////zs/O////////////////////////////
-////////////////////////////////////////////////////////////////////7+/vpK6t
-s8/O1v//1v//t8/Ovb69ra6ts8/Oj56c7+/v////////////zs/Ovb69ra6ta21rg42Mra6tzs/O
-zs/O3t/e////////////////////////////////////////////////////////////////////
-////////////////////3t/evt/e1v//1v//1v//1v//s8/O1v//1v//1v//vt/em66tvt/e1v//
-1v//1v//1v//s8/O1v//1v//1v//s8/O1v//1v//1v//1v//1v//yu/vra6t3t/evt/e1v//1v//
-yu/vs8/Op769yu/vs8/Ovb69////////////////////////zs/Os8/O1v//1v//1v//1v//s8/O
-vb69////////////qK6t1v//m66tvt/ej56cj56cjI2M////g42M3t/e////////////////nJ6c
-////////////////////////////////////////////////////////////////////////////
-////////////3t/e////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-3t/ezs/Ovb69////////////////////////////////////////////////////////////////
-////////////////////////////////ra6tvt/e1v//1v//vt/evb69////////xc/Op769ra6t
-3t/e3t/e3t/enJ6ce317nJ6cra6t7+/v////////////////////////////////////////////
-////////////////////////////////////////////////////////////ra6ts8/Ovt/e1v//
-1v//1v//s8/O1v//1v//p769s8/O1v//s8/Os8/O1v//1v//yu/vvt/e1v//s8/Os8/Om66t1v//
-1v//1v//1v//1v//s8/Ozs/Os8/O1v//1v//1v//1v//1v//1v//s8/Oyu/vp7697+/v////////
-////////ub69mJ6cvt/e1v//1v//1v//1v//1v//yu/vra6tzs/Ora6tvt/e1v//1v//j56cp769
-m66ts8/Ora6tjI2Mra6t7+/v////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////zs/O////////////////////////////////
-////////////////////////////////////////////////////////////////ra6t////qK6t
-1v//1v//1v//s8/O////////////////////////ra6tnJ6cqK6tnJ6c3t/enJ6czs/O////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////zs/Ovt/ep769yu/v1v//vt/eyu/vyu/vp769yu/v1v//1v//1v//
-yu/vs8/Op769p769s8/Op7691v//1v//s8/Os8/Os8/Os8/Os8/Os8/OnJ6cvb691v//1v//1v//
-1v//1v//1v//vt/es8/Os8/Op769zs/O////////////ra6tm66tvt/e1v//1v//1v//1v//1v//
-1v//1v//s8/Og42Ma21rm66t1v//yu/vj56cs8/Oj56cj56cs8/Oyu/vyu/vj56csL69zs/Ozs/O
-ub69////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////nJ6cjI2MqK6tyu/v1v//1v//1v//s8/O7+/v////////////////
-////////////vb69nJ6cnJ6c7+/v////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////qK6t1v//
-s8/O1v//vt/em66ts8/O1v//1v//1v//1v//1v//1v//m66tyu/v1v//1v//1v//1v//1v//s8/O
-1v//1v//1v//1v//p769zs/Os8/O1v//1v//1v//1v//1v//s8/Ora6tvb69e317vb69zs/OnJ6c
-vb69vb69p769j56cvt/e1v//1v//1v//1v//1v//1v//1v//p769m66tg42Mm66tvt/em66tyu/v
-1v//1v//1v//1v//1v//1v//1v//1v//s8/OjI2MjI2Mzs/O////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////ub69e317mJ6cyu/v
-1v//1v//1v//vt/ej56czs/O////////////////////////qK6tp769vb693t/e////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////7+/v7+/vzs/On66tj56cg42Ms8/O1v//1v//1v//1v//1v//1v//
-1v//yu/vs8/O1v//1v//1v//1v//1v//1v//s8/O1v//1v//1v//1v//qK6tn66t1v//1v//1v//
-1v//1v//yu/vqK6tvb69sL69k56cvt/e1v//s8/Ovt/e1v//1v//j56cyu/v1v//1v//1v//1v//
-yu/vp769p769a21rj56cm66t1v//m66tp769s8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//
-j56c7+/v////////zs/O7+/v////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////3t/e3t/ed317h42Mvt/e1v//1v//s8/Op769m66tyu/vq769vb69zs/Ora6t
-3t/e////zs/On66txc/O////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////ra6tvb69
-nJ6cqK6ts8/Op769yu/v1v//1v//1v//1v//1v//1v//yu/vs8/O1v//1v//1v//1v//1v//1v//
-s8/O1v//1v//1v//m66tj56cs8/O1v//1v//1v//yu/vp769pK6tvb69vt/e1v//1v//1v//yu/v
-g42Ms8/Ovt/e1v//vt/ep769vt/e1v//1v//s8/Os8/Op769p769s8/Os8/Os8/Om66tg42Mp769
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//pK6t////////////vb69////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////pK6tnJ6cm66ts8/O
-s8/Op769vt/eyu/v1v//1v//1v//yu/vyu/vvt/ep769m66ts8/Oyu/vzs/O////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////s8/O1v//s8/Op7691v//1v//1v//
-1v//1v//s8/Om66t1v//yu/vp769ub69m66t1v//p769s8/OsL69p769j56cd317p769m66t1v//
-p769vt/eyu/vg42Ms8/O1v//1v//1v//1v//vt/ep7691v//m66ts8/Oyu/v1v//m66t1v//yu/v
-m66ts8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//yu/va21r////////////7+/vra6t////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////nJ6cp769p769vt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//q769zs/O////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////3t/e
-////////////ub69vt/e1v//vt/em66t1v//1v//1v//yu/vm66tm66tpK6tub69////////ub69
-tL69zs/O////////////////zs/Od317g42Mp7691v//1v//p769s8/O1v//1v//1v//1v//1v//
-s8/O1v//1v//1v//vt/em66t1v//p769vt/es8/Op7691v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//vt/enJ6c////7+/v7+/vnJ6ch42Mra6t
-zs/O////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////7+/vn66tvt/e1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//s8/Ora6t7+/v
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////zs/Op769s8/Om66t1v//
-1v//1v//yu/vp769g42M////////////////////////ra6tra6t////////vb69vb69m66t1v//
-m66tyu/v1v//p7691v//1v//1v//1v//1v//1v//vt/ep769yu/v1v//1v//vt/ep769p769p769
-j56cyu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//m66t////////zs/OpK6tnJ6cra6tg42Md317sL69nJ6c7+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////mJ6c1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//g42M7+/v////////////////////////////////////
-////////////////////////////////////////////////////////////3t/e////////////
-////////////////vb69ra6tn66twM/Ora6tub69wM/OwM/On66tpK6th42M3t/eub69////////
-3t/ejI2Mzs/OnJ6cg42Mq769q769q769j56cs8/Op769j56cj56cs8/O1v//1v//yu/vs8/O1v//
-vt/ep769vt/em66ts8/Op769vt/ej56cj56cm66t1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//p769mJ6c3t/evb69s8/OtL69////
-////3t/eg42Myu/vub69////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////zs/Os8/O1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//d317
-nJ6c////////////////////////////////////////////////////////////////////////
-////////////////zs/O7+/v3t/e////////////////////////////ub69s8/O1v//1v//s8/O
-vb693t/e////////vb697+/v3t/ezs/Oe317////jI2Mg42Mra6ta21r1v//1v//1v//1v//1v//
-1v//1v//1v//m66tj56cm66tp769m66tyu/vs8/Ovt/e1v//yu/vp769p769j56cj56cm66tm66t
-yu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//j56czs/OnJ6c3t/eg42Mj56c3t/e////////////7+/vqK6tq769////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////wM/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//yu/v1v//1v//1v//m66tnJ6czs/O////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////vb69m66tyu/v1v//1v//pK6tvb693t/e////mJ6c3t/e3t/epK6tg42M
-jI2Mg42Md317a21rg42Md317p769vt/e1v//s8/On66tm66ts8/Od317j56cs8/Oyu/vp7691v//
-s8/Oyu/vvt/ep7691v//yu/vj56ca21rg42Mp769m66tm66tyu/v1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//yu/vyu/v1v//1v//1v//1v//1v//1v//vt/ej56cvt/em66tm66tmJ6c
-////////////////zs/Ok56c////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////n66t1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//g42Ms8/Op769
-vt/e1v//1v//h42M////7+/v7+/v////////////////////////////////////////////////
-////////////////////////////////////////////////////////////ra6tm66ts8/Os8/O
-p769s8/Oj56czs/Ozs/Ovb69qK6ts8/OqK6te317mJ6cj56cj56cyu/vs8/Ovb69////3t/ezs/O
-3t/e////vb69j56cs8/Op769yu/vp769vt/es8/Op769m66ts8/Ovt/es8/Op7691v//s8/Op769
-m66ts8/Os8/Og42M1v//1v//1v//1v//1v//1v//1v//s8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/O
-s8/O1v//1v//1v//1v//1v//1v//1v//vt/em66tmJ6cqK6t3t/e////3t/eh42Mn66tra6t////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////wM/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//p7691v//1v//vt/es8/Os8/Os8/Og42MjI2Md317nJ6czs/O
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////3t/e////////qK6t1v//1v//1v//m66tm66tvt/ek56cjI2M
-g42Mj56cp769m66ts8/Os8/On66t3t/e3t/eqK6tra6tn66tyu/v1v//1v//1v//s8/Oyu/v1v//
-1v//p769s8/Os8/Oyu/vyu/v1v//1v//1v//1v//1v//1v//1v//m66ts8/O1v//1v//1v//yu/v
-s8/Op769s8/O1v//1v//1v//1v//1v//1v//1v//m66tm66ts8/O1v//1v//1v//1v//1v//1v//
-1v//m66tvt/es8/Ozs/O////vb69qK6tra6tjI2Mzs/O////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////qK6tvt/e1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//vt/em66tyu/v1v//
-1v//1v//1v//1v//d317m66t1v//g42MjI2Me317zs/Ovb69ra6tvb69////////////////////
-////////////////////////////////////////////////////////////////////////////
-3t/eq7691v//1v//1v//g42Md317g42Mg42Mj56cj56cs8/Op769s8/O1v//yu/vg42Mk56cj56c
-p769wM/Od317yu/v1v//1v//1v//p769s8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//vt/ej56cs8/O1v//vt/es8/O1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//yu/vp769m66t1v//1v//1v//1v//1v//1v//p769yu/vs8/Ozs/Ozs/OjI2M////
-////7+/vzs/O7+/v////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////vb69a21rg42Ms8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/Os8/O
-s8/Os8/Os8/Om66ts8/Op769yu/v1v//1v//1v//1v//1v//1v//1v//p769g42Mj56ch42Mzs/O
-3t/eh42Mp769g42Mra6t////////////////////////////////////////////////////////
-////////////////////////////////////3t/enJ6cm66tvt/e1v//yu/vp769m66t1v//j56c
-m66tm66tg42Mg42Mg42Ms8/Om66tp7691v//1v//1v//1v//vt/ej56c1v//1v//p769vt/e1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//j56cg42M
-p7691v//1v//1v//1v//1v//1v//1v//1v//yu/vs8/Os8/Oyu/vm66tj56cvt/e1v//1v//1v//
-yu/vp769p769p769vt/e1v//s8/Ora6tqK6t3t/e////////////7+/vzs/O////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////7+/v////////////////////////////////////////
-////////////////////////////////////////////////////////jI2Ma21rj56c1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-s8/Os8/O1v//1v//1v//1v//1v//p769n66tj56cp769qK6ta21rvb69////////////////////
-////////////////////////////////////////////////////////////////////zs/O////
-nJ6cjI2Mn66td317m66tg42Mm66t1v//1v//m66tm66tm66tp7691v//yu/vp7691v//s8/Ovt/e
-1v//vt/ej56cp769vt/e1v//1v//yu/vm66tp769vt/em66ts8/Oj56cp769vt/e1v//1v//1v//
-1v//1v//1v//1v//1v//m66tp769m66tvt/eyu/vs8/Os8/Op769s8/Og42M1v//p769m66ts8/O
-p7691v//1v//p769s8/Os8/Om66t1v//1v//1v//p7691v//1v//1v//1v//1v//1v//nJ6cm66t
-////////////////////ra6tvb69////////////////////////////////////////3t/e////
-////////////////////////////////////////////////////////////////////////zs/O
-zs/Ora6tzs/Ovb69zs/O7+/v////////////////////////////////////////////////////
-////////////nJ6cra6td317vt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//p769jI2Mj56c1v//1v//1v//1v//1v//1v//1v//
-1v//vt/eyu/vj56czs/O////////////////////////////////////////////////////////
-////////////////////////////3t/ed317m66tnJ6cj56c1v//d3173t/ejI2Ma21rvt/eyu/v
-1v//m66t1v//1v//1v//vt/em66ts8/Os8/Os8/Oa21rvt/e1v//1v//1v//1v//1v//1v//1v//
-yu/vvt/e1v//1v//1v//s8/Os8/O1v//1v//1v//1v//1v//s8/O1v//s8/Oyu/v1v//1v//1v//
-1v//1v//1v//1v//1v//yu/vs8/Oyu/v1v//1v//1v//1v//1v//1v//1v//1v//s8/Om66ts8/O
-m66tyu/v1v//1v//1v//1v//vt/eyu/vd317tL69////////////////////7+/vp769nJ6c7+/v
-////////////////////ra6t////////3t/e////////////////////////////////////////
-////////////////////////////////////////////////////////7+/vvb69nJ6cvb69vb69
-////////////////////////////////////////////////vb69a21ra21ryu/v1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/vs8/O
-pK6t7+/vm66tyu/v1v//1v//1v//1v//1v//1v//1v//m66td317vb69////////////////////
-////////////////////////////////////////////////////////////////////7+/vmJ6c
-a21re317n66tq7697+/v////////7+/vjI2Ma21rd317jI2MtL69wM/Oj56cj56cp769m66t1v//
-vt/evt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/vs8/Om66ts8/O
-p769s8/Og42Ms8/Om66tyu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//p769a21rnJ6c7+/v
-zs/O////////////////////zs/O1v//yu/vpK6t7+/v7+/vvb697+/v////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////zs/OnJ6cjI2Mvb69ra6t7+/v////////////////////
-////////zs/Oa21rd317s8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//s8/Os8/OtL69zs/O////////zs/Ovb69sL691v//1v//1v//1v//1v//
-1v//p769ra6t////////////////////////////////////////////////////////////////
-////////////////////////////////////////ra6td317j56cvb69////////////////e317
-a21rh42Mvt/eh42M3t/ezs/Om66tj56cm66tj56cs8/O1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//p769vb69////////////////////////////3t/es8/O1v//
-yu/vqK6t////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////ra6t
-nJ6ce317vt/ea21rnJ6c7+/v////////////////3t/era6ta21rd317yu/v1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//q769zs/O////////////
-////////7+/vvb69s8/O1v//1v//vt/ee317pK6ts8/OnJ6c7+/v////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////vb69nJ6ce3177+/v////////3t/ek56cpK6tjI2Ms8/O1v//k56cnJ6c////e317h42Mp769
-p7691v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/v
-pK6tzs/Ozs/Ozs/O3t/era6tzs/O3t/e3t/epK6tvt/eh42Mzs/O////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////7+/v7+/v////vb69jI2Mg42Mp7691v//1v//1v//s8/Od317j56ca21rqK6tt8/O
-m66tj56cvt/es8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//tL69////////////////////////3t/ezs/Op7691v//yu/vj56cra6t
-////nJ6c////////////////////////////zs/OnJ6ch42MjI2M////////////////////////
-////////////////////////////////////////////7+/v////////ra6t////////ra6td317
-1v//yu/vp7691v//p769ra6tnJ6cg42Mp769j56cd317p7691v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//vt/evt/eyu/vsL697+/v
-7+/va21rmJ6cm66tn66tsL69pK6tzs/O////////////////////////////////////////////
-////////////////////////////////////////////////////////3t/ezs/O////nJ6cp769
-vt/e1v//1v//1v//1v//1v//yu/v1v//1v//1v//s8/O1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/vmJ6czs/O////
-7+/vra6tnJ6cra6tnJ6ck56ctL69ub69mJ6cqK6ta21rjI2M////////////////////////vb69
-j56c1v//1v//m66tzs/O////////////////////////////////////////3t/e////////////
-////////vb69////////////////////zs/OjI2Mm66ts8/Om66t1v//vt/enJ6cvb69s8/O1v//
-1v//1v//j56cvt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//s8/Os8/Oyu/vm66tp7691v//1v//1v//yu/vp769
-qK6tqK6t////////////////////////////////////////////////////////////////////
-////3t/e////ra6ttL69vb693t/e3t/etL69sL69h42M1v//1v//1v//1v//1v//1v//1v//1v//
-1v//s8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//vt/es8/Op769e317g42Mm66te317zs/Ovb69e317qK6tm66tyu/v
-s8/Oj56ce3177+/v////////////////zs/Od317yu/v1v//1v//1v//d3177+/v////////////
-////////////////nJ6cg42Myu/vs8/OpK6tzs/O////////////////////////////////////
-////3t/ee317g42Mp7691v//yu/vm66tvb69n66tyu/v1v//j56c1v//s8/Oh42Mh42Mp7691v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//p769j56cpK6t7+/v////////////////////////
-////////////////////////////////////////////g42Mp769p769j56ch42Mvb69zs/OqK6t
-mJ6cg42Myu/v1v//1v//1v//1v//1v//1v//1v//1v//s8/O1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//m66tvt/e1v//1v//1v//1v//s8/Oyu/vyu/vs8/O
-s8/Od317a21rtL697+/v////vb69ra6tm66t1v//p769n66tg42Ma21r3t/e////////7+/va21r
-j56c1v//1v//1v//1v//yu/vp769m66tpK6t3t/e////////////7+/vnJ6cra6tnJ6cnJ6cqK6t
-7+/v////////////////////////////////////////////////nJ6cd317s8/O1v//1v//s8/O
-m66t1v//vt/ep769p769j56cwM/Op769g42Mg42Mg42Mp769vt/e1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//m66tj56cs8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//zs/O////////////////////////////////////////////////////////////
-////////j56ctL69zs/O////////////7+/vh42Mm66t1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//s8/Oyu/vs8/Op769j56cp769yu/v1v//vt/es8/O1v//vt/es8/Om66ta21rj56cj56c
-a21rg42Md317e317jI2Md317d317h42Mvt/em66tg42MjI2Mp769j56czs/Ovb69k56cd317s8/O
-1v//m66th42Mvb69////////////////7+/ve317d3171v//1v//1v//1v//1v//1v//1v//1v//
-s8/Oj56cwM/OtL69zs/O////////////////////////////////////////////////////////
-////////////////zs/Oe317a21rg42Mj56cj56cg42Myu/vm66tvt/eyu/vs8/Os8/OsL69vb69
-////nJ6cra6tnJ6cmJ6csL69j56cwM/Oj56cn66t1v//yu/vs8/Oj56cyu/vvt/ea21rp769g42M
-yu/v1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//s8/O1v//1v//1v//s8/Ovt/e1v//1v//1v//vt/ezs/O////////////////////
-////////////////////////////////////////////////zs/O3t/e////////////////////
-////7+/vtL69n66ts8/Os8/Os8/OsL69wM/OwM/Oxc/Oub69vb69zs/O7+/v7+/vzs/Ozs/OnJ6c
-ub69vb69nJ6cnJ6c3t/evb69g42Ms8/Os8/O1v//1v//vt/em66tnJ6czs/Ovb69jI2Ms8/Oh42M
-zs/OnJ6ca21rj56cj56cm66tj56cs8/Os8/Om66ta21rjI2M3t/e////////////////////jI2M
-a21rg42M1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//p769d317g42Mg42M3t/e////////
-////////////3t/e7+/v////////////////////////////////////////////7+/vra6tnJ6c
-e317d317a21ra21rjI2Mzs/O7+/v////////////////////////7+/v7+/v3t/era6tnJ6cra6t
-ra6tzs/Ozs/O3t/ep7691v//p769k56cs8/Os8/Oyu/vs8/Om66t1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//yu/vvt/ep769yu/v
-yu/vvt/e1v//1v//1v//1v//1v//yu/vs8/Os8/Os8/Os8/Om66tnJ6czs/Ozs/Ozs/Ozs/Ora6t
-zs/Ozs/Ozs/Ovb697+/v////////////////////////////////////////////////////////
-////////////zs/O7+/v////////////////////////////////////////////////////////
-////////////////////////////////////////////vb69m66tvt/em66td317j56cg42Mm66t
-j56cd317p769ra6tra6th42Mm66ta21rd317ra6tvb69yu/vj56cg42M1v//d317a21rd317nJ6c
-zs/O7+/v////////////////////////zs/Od317p769yu/v1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//vt/ed317d317d317zs/O////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////e317j56cjI2M////////////////////vb69p769j56cnJ6ca21r
-jI2Mg42Mj56cvt/evt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//s8/Os8/Oyu/v1v//m66t
-1v//yu/vs8/Os8/Op769p769d317nJ6c7+/vzs/Ozs/Ozs/OnJ6cm66tn66tqK6ttL69nJ6c3t/e
-////////////////////////////////////////////////////7+/v7+/v////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////qK6twM/OtL69pK6tjI2MnJ6cnJ6cvb69ra6tnJ6cra6t7+/vnJ6ca21rjI2Mg42M
-h42Md317h42Mj56cd317g42Md317vb697+/v////////////////////////////////3t/eh42M
-vt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//vt/es8/Om66ta21rnJ6c
-3t/e////////////////////////////////////////////////////////////////////3t/e
-////////////////////////////////////////////////////////////////////vb69a21r
-k56cra6t7+/v////////////3t/e7+/v////zs/O////vb69nJ6cnJ6ca21rj56c1v//1v//1v//
-1v//1v//vt/e1v//1v//1v//s8/Oj56cd317jI2Mzs/Ozs/O7+/v////3t/ezs/Ozs/O////////
-////zs/Ozs/OjI2Me317ra6tzs/Ozs/Ozs/O3t/e////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////nJ6ca21ra21ra21ra21r
-qK6tnJ6ce317nJ6cjI2MnJ6ca21ra21re317a21rjI2Ma21ra21rd317d317a21ra21rjI2M////
-////7+/vvb69nJ6ce317wM/OwM/On66ts8/O1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//s8/Oa21ra21r3t/e////////////////////////////////
-////////////////////////////zs/Ora6t7+/v////3t/e7+/v3t/e////////////////////
-////////////////////////////////////7+/vzs/Ora6tnJ6cnJ6ce317nJ6c////////////
-////////////zs/O7+/v////7+/vra6tzs/OnJ6cd317h42MqK6tm66tyu/vp769j56cs8/On66t
-ra6t////////////////////////////////////////3t/evb69ub69nJ6czs/O3t/ezs/Ora6t
-////3t/e////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////zs/Ozs/OnJ6cnJ6ca21r////zs/Oe317e317a21rjI2Me317
-e317jI2Md317h42Ma21ra21rg42Ms8/Og42Ma21rra6tra6th42Mj56cj56cyu/v1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//h42M
-jI2M3t/e////////////////////////////////////////////////////vb69qK6ta21ra21r
-n66tjI2Ma21rnJ6czs/Ozs/O7+/v////////////////////////////////////////////////
-////////////////////////////////////////////////////3t/e////////////////////
-7+/vzs/Ozs/OjI2MjI2Ma21rjI2Mvb69////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////7+/vzs/O////vb69zs/OjI2Ma21rj56cg42Mg42Ma21rd317d317a21rg42M
-m66ts8/Om66tk56cra6tnJ6cd317s8/Ovt/e1v//1v//1v//1v//1v//1v//1v//1v//1v//1v//
-1v//1v//1v//1v//1v//1v//1v//vt/ep769m66ta21rjI2Mvb697+/v////////////////////
-////////////////////////3t/ezs/Ozs/Ora6tnJ6ce317nJ6cqK6tnJ6c3t/e////zs/O7+/v
-////////////////3t/enJ6cnJ6ce317ra6tnJ6cnJ6ce317e317ra6tzs/O7+/v////////////
-////3t/e3t/ezs/O////////////////3t/ea21ra21rj56ce317ub693t/e7+/v////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////3t/ezs/Ozs/OnJ6cnJ6cqK6tn66tg42Mm66tg42Mp769s8/Os8/Oj56cj56cj56cnJ6cvb69
-nJ6cqK6ttL69nJ6cnJ6cpK6tg42Ma21rj56cj56cp769vt/es8/Om66ta21rg42Ma21ra21rd317
-e317nJ6czs/Ozs/Ozs/O7+/v////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-7+/vzs/Ozs/Ozs/Ozs/O3t/e////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////3t/e
-zs/Ozs/Ozs/Ozs/Ozs/Ozs/Ozs/Ozs/O7+/v////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-
-
- 20020215
-
- Microsoft Windows 2000 Version 5.0 (Build 2195) Service Pack 2; ESRI ArcCatalog 8.1.3.679
-
-
-
-
- cntry02
-
-
-
-
-
-
-
-
- -180
- 180
- -90
- 83.6236
- 1
-
-
- -180
- 180
- -90
- 83.6236
- 1
-
-
-
-
-
- ISO 19115 Geographic Information - Metadata
- DIS_ESRI1.0
- {1F7DDF21-BC01-4C20-8AA5-243B33ED0B1E}
-
-
-
-
-
-
- dataset
-
-
-
-
- 002
- Local Area Network
-
- 3.830
-
-
- Shapefile
-
-
-
-
-
-
- GCS_WGS_1984
-
-
-
-
-
-
-
-
-
-
-
-
- 251
-
-
-
-
diff --git a/share/data/shape/cntry02/cntry02.shx b/share/data/shape/cntry02/cntry02.shx
deleted file mode 100755
index 64105f476..000000000
Binary files a/share/data/shape/cntry02/cntry02.shx and /dev/null differ
diff --git a/share/data/shape/cntry02/cntry02.ssx b/share/data/shape/cntry02/cntry02.ssx
deleted file mode 100755
index 72648e23c..000000000
Binary files a/share/data/shape/cntry02/cntry02.ssx and /dev/null differ
diff --git a/share/data/shape/dcwpo-browse.shp b/share/data/shape/dcwpo-browse.shp
deleted file mode 100644
index 57acabc86..000000000
Binary files a/share/data/shape/dcwpo-browse.shp and /dev/null differ
diff --git a/share/data/shape/dcwpo-browse.ssx b/share/data/shape/dcwpo-browse.ssx
deleted file mode 100644
index 362897182..000000000
Binary files a/share/data/shape/dcwpo-browse.ssx and /dev/null differ
diff --git a/share/data/shape/vmap_area_thin.shp b/share/data/shape/vmap_area_thin.shp
deleted file mode 100644
index b3a78678f..000000000
Binary files a/share/data/shape/vmap_area_thin.shp and /dev/null differ
diff --git a/share/data/shape/vmap_area_thin.ssx b/share/data/shape/vmap_area_thin.ssx
deleted file mode 100644
index 25187356d..000000000
Binary files a/share/data/shape/vmap_area_thin.ssx and /dev/null differ
diff --git a/share/data/shape/vmap_edge_thin.shp b/share/data/shape/vmap_edge_thin.shp
deleted file mode 100644
index 96025eb21..000000000
Binary files a/share/data/shape/vmap_edge_thin.shp and /dev/null differ
diff --git a/share/data/shape/vmap_edge_thin.ssx b/share/data/shape/vmap_edge_thin.ssx
deleted file mode 100644
index 7d83adb95..000000000
Binary files a/share/data/shape/vmap_edge_thin.ssx and /dev/null differ
diff --git a/share/data/vpf/README b/share/data/vpf/README
deleted file mode 100644
index 0914e2d53..000000000
--- a/share/data/vpf/README
+++ /dev/null
@@ -1,33 +0,0 @@
-This directory contains information that is used by the
-VPFFeatureLayer and the VPFAutoFeatureGraphicWarehouse. The
-symbol-lookup files are summaries of the MIL-PRF-89045 GeoSym standard
-contents, that tie FACC codes, with certain parameter conditions, to
-GeoSym symbol numbers.
-
-The dcw versions are pretty complete. The vmaplv0 version is not at
-all, but they contain a sample for inland water that should get you
-started. You'll need a copy of the 89045 doc to figure out the symbol
-types you want to display. The VPFFeatureLayer uses the geosym cgm
-files, you'll have to track those down (I'm not sure of the
-releaseability).
-
-
-The properties for a layer that uses these files are here:
-vpf_water.class=com.bbn.openmap.layer.vpf.VPFFeatureLayer
-vpf_water.prettyName=VMAPLV0 Inland Water
-vpf_water.vpfPath=/Volumes/data/vpf/vmaplv0/v0noa/vmaplv0
-# VFPAutoFeatureGraphicWarehouse options:
-vpf_water.cgmDirectory=data/geosym/cgm/
-vpf_water.faccLookupFile=data/vpf/vmaplv0-symbol-lookup.csv
-# The priority file is the file to adjust to customize display...
-vpf_water.priorityFile=data/vpf/vmaplv0-priority-iw.csv
-vpf_water.featureInfoHandler=com.bbn.openmap.layer.vpf.TTFeatureInfoHandler
-
-The order of how different features are laid out are specified in the
-priority file, and feature rendering is determined by the cgm files.
-
-Using this layer can be slower than the standard VPFLayer, especially
-with a lot of FACC codes being rendered. I recommend that you
-configure the layer, and then use it to make map image tiles with the
-com.bbn.openmap.dataAccess.mapTile.MapTileMaker. You can then use the
-tiles in the map using the com.bbn.openmap.layer.image.MapTileLayer.
\ No newline at end of file
diff --git a/share/data/vpf/dnc-priority-all.csv b/share/data/vpf/dnc-priority-all.csv
deleted file mode 100644
index a3d83ec86..000000000
--- a/share/data/vpf/dnc-priority-all.csv
+++ /dev/null
@@ -1,513 +0,0 @@
-priority,type,facc,conditions,description
-0,Area,BA040,
-0,Area,BE010,cvl=99999
-0,Area,BE010,idsm=0 AND cvl>=msdcand<>99999
-0,Area,BE010,idsm=0 AND cvl>=ssdcand=msscand=msscand=ssdcand<>99999
-0,Area,BE010,idsm=1 AND isdm=0 AND cvl=msdc
-1,Area,FC031,mac=2 AND idsm=0 AND hdp>=msscand=msscand=ssdcand0and0and=ssdc
-1,Area,FC031,mac=2 AND idsm=1 AND hdp>0and0and7and<>13 AND mac=NULL
-3,Line,FC021,mbl=7 AND mac=NULL
-3,Area,AC030,
-3,Area,AL020,
-3,Area,AN060,
-3,Area,BB010,mac<>12
-3,Area,BB180,
-3,Area,BD060,
-3,Area,BH050,
-3,Area,BH095,
-3,Area,BH155,
-3,Area,BJ030,
-3,Area,BJ030,
-3,Area,BJ065,
-3,Area,BJ065,
-3,Area,BJ100,
-3,Area,BJ100,
-3,Area,DB090,
-3,Area,DB170,
-3,Area,EA030,
-3,Area,EA040,
-3,Area,EA050,
-3,Area,EC030,veg<>19
-3,Area,EC030,veg=19
-3,Area,FC021,mac=0or999
-3,Area,FC021,mac=25or30or35
-3,Area,FC021,mac=26
-3,Area,FC021,mac=26
-3,Area,FC021,mac=26
-3,Area,FC021,mac=31
-3,Area,FC021,mac=49
-3,Area,FC021,mac=57
-3,Area,FC031,mac=0or9
-3,Area,FC036,mac=20
-3,Area,FC036,mac=21or23or61
-3,Area,FC036,mac=45or46
-3,Area,FC165,rtt=0
-4,Point,AF040,
-4,Point,AH010,
-4,Point,AH050,
-4,Point,AL015,bfc<>7and<>81
-4,Point,AL200,loc=22 AND vrr=4 AND hdp=0
-4,Point,AL200,loc=22 AND vrr=4 AND hdp>0and<=20
-4,Point,AL200,loc=22 AND vrr=4 AND hdp>20
-4,Point,AL200,loc=22 AND vrr=8
-4,Point,AM020,
-4,Point,AM030,
-4,Point,AM070,
-4,Point,AM080,
-4,Point,AQ080,
-4,Point,BA030,
-4,Point,BB105,
-4,Point,BB180,
-4,Point,BC010,nst=1or4or5or17or41or51or53
-4,Point,BC020,nst=1or4or5or17or41or51or53 AND ssc<>10
-4,Point,BC020,nst=1or4or5or17or41or51or53 AND ssc=10
-4,Point,BC040,nst=1or4or5or17or41or51or53
-4,Point,BC070,nst=1or4or5or17or41or51or53
-4,Point,BC080,
-4,Point,BD000,acc<>1
-4,Point,BD000,hdp=0
-4,Point,BD000,hdp>0and<=20
-4,Point,BD000,hdp>20
-4,Point,BD020,acc<>1
-4,Point,BD020,vrr=1 AND hdp=NULL
-4,Point,BD020,vrr=4 AND hdp=0
-4,Point,BD020,vrr=4 AND hdp>0and<=20
-4,Point,BD020,vrr=4 AND hdp>20
-4,Point,BD020,vrr=8 AND hdp=NULL
-4,Point,BD030,
-4,Point,BD030,acc<>1
-4,Point,BD050,
-4,Point,BD130,acc<>1
-4,Point,BD130,hdp=NULL
-4,Point,BD130,vrr=4 AND hdp=0
-4,Point,BD130,vrr=4 AND hdp>0and<=20
-4,Point,BD130,vrr=4 AND hdp>20
-4,Point,BD140,acc<>1
-4,Point,BD140,vrr=1 AND hdp=NULL
-4,Point,BD140,vrr=4 AND hdp=0
-4,Point,BD140,vrr=4 AND hdp>0and<=20
-4,Point,BD140,vrr=4 AND hdp>20
-4,Point,BD140,vrr=8 AND hdp=NULL
-4,Point,BD180,acc<>1
-4,Point,BD180,hdp=NULL AND vrr=0
-4,Point,BD180,hdp=NULL AND vrr=1or2or8
-4,Point,BD180,loc<>4 AND hdp=NULL
-4,Point,BD180,vrr=4 AND hdp>0and<=20
-4,Point,BD180,vrr=4 AND hdp>20
-4,Point,BD180,vrr=4 AND soh=1 AND hdp=0
-4,Point,BD180,vrr=4 AND soh=2 AND hdp=0
-4,Point,BF010,mcc=0 AND psc=0
-4,Point,BG010,cur=1 AND dof<>0
-4,Point,BG010,cur=2 AND dof<>0
-4,Point,BG030,
-4,Point,BG040,
-4,Point,CA030,
-4,Point,EC030,
-4,Point,FC021,mac<>48
-4,Point,FC031,mac=0
-4,Point,FC031,mac=2
-4,Point,FC165,dof<>0
-4,Point,FC165,dof=0
-4,Point,GA035,
-4,Point,GB005,
-4,Line,AK130,
-4,Line,AN010,
-4,Line,AP020,
-4,Line,AP030,
-4,Line,AQ070,fer=1
-4,Line,AQ070,fer=2
-4,Line,AQ130,
-4,Line,BA020,
-4,Line,BB010,mac<>12
-4,Line,BB100,
-4,Line,BC100,
-4,Line,BD010,
-4,Line,CA010,
-4,Line,DB090,
-4,Line,FA000,use=23
-4,Line,FA000,use=32
-4,Line,FA020,
-4,Line,FA040,
-4,Line,FA060,
-4,Line,FA110,
-4,Line,FC021,mac=0or999 AND mbl=NULL
-4,Line,FC021,mac=25 AND mbl=NULL
-4,Line,FC021,mac=30or35 AND mbl=NULL
-4,Line,FC021,mac=31 AND mbl=NULL
-4,Line,FC021,mac=49 AND mbl=NULL
-4,Line,FC021,mac=56 AND mbl=NULL
-4,Line,FC021,mac=57 AND mbl=NULL
-4,Line,FC021,mbl=13 AND mac=NULL
-4,Line,FC031,mac=0or9
-4,Line,FC100,
-4,Area,AA010,
-4,Area,AB000,
-4,Area,AB010,
-4,Area,AC000,
-4,Area,AD010,
-4,Area,AD030,
-4,Area,AH010,
-4,Area,AH050,
-4,Area,AK040,
-4,Area,AK160,
-4,Area,AL015,
-4,Area,AL030,
-4,Area,AL200,loc=22 AND vrr=1
-4,Area,AL200,loc=22 AND vrr=4 AND hdp=0
-4,Area,AL200,loc=22 AND vrr=4 AND hdp>0and<=20
-4,Area,AL200,loc=22 AND vrr=4 AND hdp>20
-4,Area,AL200,loc=22 AND vrr=8
-4,Area,AL200,loc=8
-4,Area,AM010,
-4,Area,AM030,
-4,Area,AM040,
-4,Area,AM070,
-4,Area,AQ116,
-4,Area,AT020,
-4,Area,BB090,
-4,Area,BB110,
-4,Area,BB150,
-4,Area,BC080,
-4,Area,BD000,acc<>1
-4,Area,BD000,hdp=0
-4,Area,BD000,hdp>0and<=20
-4,Area,BD000,hdp>20
-4,Area,BD010,
-4,Area,BD020,acc<>1
-4,Area,BD020,vrr=1 AND hdp=NULL
-4,Area,BD020,vrr=4 AND hdp=0
-4,Area,BD020,vrr=4 AND hdp>0and<=20
-4,Area,BD020,vrr=4 AND hdp>20
-4,Area,BD020,vrr=8 AND hdp=NULL
-4,Area,BD030,
-4,Area,BD030,acc<>1
-4,Area,BD040,
-4,Area,BD050,
-4,Area,BD080,
-4,Area,BD100,acc<>1
-4,Area,BD100,vrr=1
-4,Area,BD100,vrr=4
-4,Area,BD100,vrr=8
-4,Area,BD120,vrr<>8 AND acc<>1
-4,Area,BD120,vrr<>8 AND hdp=0orNULL
-4,Area,BD120,vrr=4 AND hdp>0and<=20
-4,Area,BD120,vrr=4 AND hdp>20
-4,Area,BD140,acc<>1
-4,Area,BD140,vrr=1
-4,Area,BD140,vrr=4
-4,Area,BD140,vrr=8
-4,Area,BD180,vrr=0or2 AND hdp=NULL
-4,Area,BD180,vrr=1 AND hdp=NULL
-4,Area,BD180,vrr=4 AND hdp=0
-4,Area,BD180,vrr=4 AND hdp>0and<=20
-4,Area,BD180,vrr=4 AND hdp>20
-4,Area,BD180,vrr=8 AND hdp=NULL
-4,Area,FC021,mac=27or28or29
-4,Area,FC021,mac=32or33
-4,Area,FC021,mac=42
-4,Area,FC021,mac=48
-4,Area,FC021,mac=55
-4,Area,FC021,mac=56
-4,Area,FC041,tsp=3
-4,Area,FC165,rtt=11
-4,Area,FC165,rtt=4
-4,Area,FC177,
-4,Area,GB070,
-4,Area,ZC040,
-5,Point,AT045,ssc=0or999
-5,Point,AT045,ssc=107
-5,Point,AT045,ssc=108
-5,Point,AT045,ssc=60
-5,Point,AT045,ssc=87
-5,Point,BB010,mac=12
-5,Point,BB020,
-5,Point,BB150,
-5,Point,BC010,nst=45
-5,Point,BC020,btc=35
-5,Point,BC020,nst=45
-5,Point,BC040,
-5,Point,BC040,nst=45
-5,Point,BC070,nst=45
-5,Point,BD100,
-5,Point,BD110,
-5,Point,BG010,cur=0 OR dof=0
-5,Point,BG010,cur=3or5 AND dof<>0
-5,Line,BE010,acc=1
-5,Line,BE010,acc=2
-5,Line,FC021,mac=27or28or29 AND mbl=NULL
-5,Line,FC021,mac=32or33 AND mbl=NULL
-5,Line,FC021,mac=42 AND mbl=NULL
-5,Line,FC021,mac=48 AND mbl=NULL
-5,Line,FC021,mac=55 AND mbl=NULL
-5,Line,FC177,
-5,Line,GB070,
-5,Area,AL005,
-5,Area,BB010,mac=12
-5,Area,BB115,
-5,Area,BB170,
-5,Area,FC021,mac=24
-5,Area,FC021,mac=44
-5,Area,FC021,mac=58
-5,Area,FC031,mac=4
-5,Area,FC031,mac=41
-5,Area,FC036,mac=0or999
-5,Area,FC036,mac=37
-5,Area,GB055,
-6,Point,AD030,
-6,Point,AF010,
-6,Point,AF030,
-6,Point,AF070,
-6,Point,AJ050,
-6,Point,AK020,
-6,Point,AK080,
-6,Point,AK160,
-6,Point,AL015,bfc=7 AND hwt=0or2or3or4or7or22
-6,Point,AL015,bfc=7 AND hwt=11or14or15or16or20or21
-6,Point,AL015,bfc=7 AND hwt=5or6or9
-6,Point,AL015,bfc=81 AND sta<>5 AND sst<>16
-6,Point,AL015,bfc=81 AND sta=0or2or3or6or11
-6,Point,AL015,bfc=81 AND sta=5 AND sst<>16
-6,Point,AL018,
-6,Point,AL025,
-6,Point,AL073,
-6,Point,AL130,
-6,Point,AL200,loc=22 AND vrr=1
-6,Point,AL200,loc=8
-6,Point,AL240,
-6,Point,AQ060,
-6,Point,AQ110,
-6,Point,AQ116,
-6,Point,AT010,
-6,Point,AT050,
-6,Point,AT080,
-6,Point,BB010,mac<>12
-6,Point,BB030,
-6,Point,BB050,df1<>0 AND df2=0
-6,Point,BB050,df1=0
-6,Point,BB050,df2<>0 AND df3=0
-6,Point,BB050,df3<>0
-6,Point,BB050,df3<>0
-6,Point,BB050,df3<>0
-6,Point,BB050,df4<>0
-6,Point,BB080,
-6,Point,BB160,
-6,Point,BC010,nst=10or54
-6,Point,BC010,ref=1
-6,Point,BC010,sst=1or2or3or4or6or9or14or15
-6,Point,BC010,tmc=0or32
-6,Point,BC010,tmc=1
-6,Point,BC010,tmc=15or27or28
-6,Point,BC010,tmc=16or21
-6,Point,BC010,tmc=17
-6,Point,BC010,tmc=18
-6,Point,BC010,tmc=19or31
-6,Point,BC010,tmc=2
-6,Point,BC010,tmc=22
-6,Point,BC010,tmc=23or30
-6,Point,BC010,tmc=25or26or29
-6,Point,BC010,tmc=3
-6,Point,BC010,tmc=6
-6,Point,BC010,tmc=8
-6,Point,BC010,tmc=9
-6,Point,BC020,nst=10or54 AND ssc<>10
-6,Point,BC020,nst=10or54 AND ssc=10
-6,Point,BC020,ref=1
-6,Point,BC020,sst=1or2or3or4or6or9or14or15
-6,Point,BC020,tmc=0or17or18or32
-6,Point,BC020,tmc=1
-6,Point,BC020,tmc=15or27or28
-6,Point,BC020,tmc=16or21
-6,Point,BC020,tmc=19or31
-6,Point,BC020,tmc=2
-6,Point,BC020,tmc=22
-6,Point,BC020,tmc=23or30
-6,Point,BC020,tmc=25or26or29
-6,Point,BC020,tmc=3
-6,Point,BC020,tmc=6
-6,Point,BC020,tmc=8
-6,Point,BC020,tmc=9
-6,Point,BC040,nst=10or54
-6,Point,BC040,ref=1
-6,Point,BC040,sst=1or2or3or4or6or9or14or15
-6,Point,BC040,tmc=0or32
-6,Point,BC040,tmc=1
-6,Point,BC040,tmc=15or27or28
-6,Point,BC040,tmc=16or21
-6,Point,BC040,tmc=17
-6,Point,BC040,tmc=18
-6,Point,BC040,tmc=19or31
-6,Point,BC040,tmc=2
-6,Point,BC040,tmc=22
-6,Point,BC040,tmc=23or30
-6,Point,BC040,tmc=25or26or29
-6,Point,BC040,tmc=3
-6,Point,BC040,tmc=6
-6,Point,BC040,tmc=8
-6,Point,BC040,tmc=9
-6,Point,BC070,nst=10or54
-6,Point,BC070,ref=1
-6,Point,BC070,sst=1or2or3or4or6or9or14or15
-6,Point,BD110,nst=10or54
-6,Point,BD110,sst<>16
-6,Point,BE020,acc<>1
-6,Point,BE020,hdh>=0 AND hdp=NULL
-6,Point,FC021,mac=48
-6,Point,FC031,mac=4
-6,Point,FC036,mac=0or999
-6,Point,FC036,mac=37
-6,Line,AQ113,loc<>25 AND pro<>95and<>116 AND plt<>2and<>3
-6,Line,AQ113,loc<>25 AND pro=116
-6,Line,AQ113,loc<>25 AND pro=95 OR plt=2or3
-6,Line,BB010,mac=12
-6,Line,BB170,
-6,Line,BC040,
-6,Line,BH010,loc<>25
-6,Line,BI020,
-6,Line,FC021,mac=24 AND mbl=NULL
-6,Line,FC021,mac=44 AND mbl=NULL
-6,Line,FC021,mac=58 AND mbl=NULL
-6,Line,FC031,mac=4
-6,Line,FC036,
-6,Line,FC130,
-6,Line,FC165,atn=1 AND exs=22 AND rtt<>3
-6,Line,FC165,atn=1 AND exs=22 AND rtt=3
-6,Line,FC165,atn=1 AND exs=23 AND rtt<>3
-6,Line,FC165,atn=1 AND exs=23 AND rtt=3
-6,Line,FC165,atn=2 AND exs=22 AND rtt<>3
-6,Line,FC165,atn=2 AND exs=22 AND rtt=3
-6,Line,FC165,atn=2 AND exs=23 AND rtt<>3
-6,Line,FC165,atn=2 AND exs=23 AND rtt=3
-6,Line,FC165,exs=0 AND rtt<>3
-6,Line,FC165,exs=0 AND rtt=3
-6,Line,FC170,
-6,Line,GB055,
-6,Area,BB040,vrr=1
-6,Area,BB040,vrr=4or8
-6,Area,BB140,vrr=1
-6,Area,BB140,vrr=4or8
-6,Area,BB190,
-6,Area,BB220,vrr=1
-6,Area,BB220,vrr=4or8
-6,Area,FC031,mac=40
-6,Area,FC031,mac=5
-6,Area,FC036,mac=15
-6,Area,FC036,mac=22
-6,Area,FC036,mac=43
-6,Area,FC041,tsp=6or7
-6,Area,FC170,
-7,Point,AL015,bfc=81 AND sta<>0and<>1and<>2and<>3and<>5and<>6and<>11
-7,Point,AL015,bfc=81 AND sta=1
-7,Point,AL015,bfc=81 AND sta=5
-7,Point,BA020,
-7,Point,BC055,
-7,Point,BG020,
-7,Point,FC031,mac=40
-7,Point,FC031,mac=5
-7,Point,FC036,mac=15
-7,Point,FC036,mac=22
-7,Point,FC036,mac=43
-7,Point,FC041,
-7,Line,BA010,acc=1 AND slt<>6and<>8
-7,Line,BA010,acc=2 AND slt<>6and<>8
-7,Line,BA010,slt=6or8
-7,Line,BB040,vrr=1
-7,Line,BB040,vrr=4or8
-7,Line,BB140,vrr=1
-7,Line,BB140,vrr=4or8
-7,Line,BB190,
-7,Line,BB220,vrr=1
-7,Line,BB220,vrr=4or8
-7,Line,BB230,
-7,Line,BB240,vrr=1
-7,Line,BB240,vrr=4or8
-7,Line,FC031,mac=40or41
-7,Line,FC031,mac=5
-7,Line,FC041,tsp=2
-8,Point,AL050,
-8,Point,AQ020,
-8,Point,AT040,
-8,Point,BB170,
-8,Point,BB170,cha=21
-8,Point,BC010,
-8,Point,BC020,btc=0 AND ssc=0or85or999
-8,Point,BC020,btc=0 AND ssc=1
-8,Point,BC020,btc=0 AND ssc=10
-8,Point,BC020,btc=0 AND ssc=16
-8,Point,BC020,btc=0 AND ssc=17
-8,Point,BC020,btc=0 AND ssc=6
-8,Point,BC020,btc=0 AND ssc=7
-8,Point,BC020,btc=0 AND ssc=73
-8,Point,BC020,btc=10
-8,Point,BC020,btc=4
-8,Point,BC020,btc=6
-8,Point,BC020,btc=7 AND ssc<>1and<>7
-8,Point,BC020,btc=7 AND ssc=1
-8,Point,BC020,btc=7 AND ssc=7
-8,Point,BC070,
-8,Point,BD110,cha=21
-8,Point,GA020,
-8,Point,GB010,
-8,Line,AQ010,
-8,Line,AQ040,bsc<>12 AND bot<>4and<>10and<>11
-8,Line,AQ040,bsc=12 OR bot=4or10or11
-8,Line,AQ045,
-8,Line,AQ113,loc=25
-8,Line,AT030,
-8,Line,AT060,
-8,Line,BH010,loc=25
-8,Line,BI040,
-8,Line,FC041,tsp=4
-8,Area,AQ040,bsc<>12 AND bot<>4and<>10and<>11
-8,Area,AQ040,bsc=12 OR bot=4or10or11
-8,Area,AQ045,
-8,Area,BC060,
diff --git a/share/data/vpf/dnc-priority-background.csv b/share/data/vpf/dnc-priority-background.csv
deleted file mode 100644
index 0432f7eaf..000000000
--- a/share/data/vpf/dnc-priority-background.csv
+++ /dev/null
@@ -1,275 +0,0 @@
-priority,type,facc,conditions
-0,Area,BA040,
-0,Area,BE010,cvl=99999
-0,Area,BE010,idsm=0 AND cvl>=msdcand<>99999
-0,Area,BE010,idsm=0 AND cvl>=ssdcand=msscand=msscand=ssdcand<>99999
-0,Area,BE010,idsm=1 AND isdm=0 AND cvl=msdc
-1,Area,FC031,mac=2 AND idsm=0 AND hdp>=msscand=msscand=ssdcand0and0and=ssdc
-1,Area,FC031,mac=2 AND idsm=1 AND hdp>0and0and7and<>13 AND mac=NULL
-3,Line,FC021,mbl=7 AND mac=NULL
-3,Area,AC030,
-3,Area,AL020,
-3,Area,AN060,
-3,Area,BB010,mac<>12
-3,Area,BB180,
-3,Area,BD060,
-3,Area,BH050,
-3,Area,BH095,
-3,Area,BH155,
-3,Area,BJ030,
-3,Area,BJ030,
-3,Area,BJ065,
-3,Area,BJ065,
-3,Area,BJ100,
-3,Area,BJ100,
-3,Area,DB090,
-3,Area,DB170,
-3,Area,EA030,
-3,Area,EA040,
-3,Area,EA050,
-3,Area,EC030,veg<>19
-3,Area,EC030,veg=19
-3,Area,FC021,mac=0or999
-3,Area,FC021,mac=25or30or35
-3,Area,FC021,mac=26
-3,Area,FC021,mac=26
-3,Area,FC021,mac=26
-3,Area,FC021,mac=31
-3,Area,FC021,mac=49
-3,Area,FC021,mac=57
-3,Area,FC031,mac=0or9
-3,Area,FC036,mac=20
-3,Area,FC036,mac=21or23or61
-3,Area,FC036,mac=45or46
-3,Area,FC165,rtt=0
-4,Line,AK130,
-4,Line,AN010,
-4,Line,AP020,
-4,Line,AP030,
-#4,Line,AQ070,fer=1
-#4,Line,AQ070,fer=2
-4,Line,AQ130,
-4,Line,BA020,
-4,Line,BB010,mac<>12
-4,Line,BB100,
-4,Line,BC100,
-4,Line,BD010,
-4,Line,CA010,
-4,Line,DB090,
-4,Line,FA000,use=23
-4,Line,FA000,use=32
-4,Line,FA020,
-4,Line,FA040,
-4,Line,FA060,
-4,Line,FA110,
-4,Line,FC021,mac=0or999 AND mbl=NULL
-4,Line,FC021,mac=25 AND mbl=NULL
-4,Line,FC021,mac=30or35 AND mbl=NULL
-4,Line,FC021,mac=31 AND mbl=NULL
-4,Line,FC021,mac=49 AND mbl=NULL
-4,Line,FC021,mac=56 AND mbl=NULL
-4,Line,FC021,mac=57 AND mbl=NULL
-4,Line,FC021,mbl=13 AND mac=NULL
-4,Line,FC031,mac=0or9
-4,Line,FC100,
-4,Area,AA010,
-4,Area,AB000,
-4,Area,AB010,
-4,Area,AC000,
-4,Area,AD010,
-4,Area,AD030,
-4,Area,AH010,
-4,Area,AH050,
-4,Area,AK040,
-4,Area,AK160,
-4,Area,AL015,
-4,Area,AL030,
-4,Area,AL200,loc=22 AND vrr=1
-4,Area,AL200,loc=22 AND vrr=4 AND hdp=0
-4,Area,AL200,loc=22 AND vrr=4 AND hdp>0and<=20
-4,Area,AL200,loc=22 AND vrr=4 AND hdp>20
-4,Area,AL200,loc=22 AND vrr=8
-4,Area,AL200,loc=8
-4,Area,AM010,
-4,Area,AM030,
-4,Area,AM040,
-4,Area,AM070,
-4,Area,AQ116,
-4,Area,AT020,
-4,Area,BB090,
-4,Area,BB110,
-4,Area,BB150,
-4,Area,BC080,
-4,Area,BD010,
-4,Area,BD020,acc<>1
-4,Area,BD020,vrr=1 AND hdp=NULL
-4,Area,BD020,vrr=4 AND hdp=0
-4,Area,BD020,vrr=4 AND hdp>0and<=20
-4,Area,BD020,vrr=4 AND hdp>20
-4,Area,BD020,vrr=8 AND hdp=NULL
-4,Area,BD030,
-4,Area,BD030,acc<>1
-4,Area,BD040,
-4,Area,BD050,
-4,Area,BD080,
-4,Area,BD100,acc<>1
-4,Area,BD100,vrr=1
-4,Area,BD100,vrr=4
-4,Area,BD100,vrr=8
-4,Area,BD120,vrr<>8 AND acc<>1
-4,Area,BD120,vrr<>8 AND hdp=0orNULL
-4,Area,BD120,vrr=4 AND hdp>0and<=20
-4,Area,BD120,vrr=4 AND hdp>20
-4,Area,BD140,acc<>1
-4,Area,BD140,vrr=1
-4,Area,BD140,vrr=4
-4,Area,BD140,vrr=8
-4,Area,BD180,vrr=0or2 AND hdp=NULL
-4,Area,BD180,vrr=1 AND hdp=NULL
-4,Area,BD180,vrr=4 AND hdp=0
-4,Area,BD180,vrr=4 AND hdp>0and<=20
-4,Area,BD180,vrr=4 AND hdp>20
-4,Area,BD180,vrr=8 AND hdp=NULL
-4,Area,FC021,mac=27or28or29
-4,Area,FC021,mac=32or33
-4,Area,FC021,mac=42
-4,Area,FC021,mac=48
-4,Area,FC021,mac=55
-4,Area,FC021,mac=56
-4,Area,FC041,tsp=3
-4,Area,FC165,rtt=11
-4,Area,FC165,rtt=4
-4,Area,FC177,
-4,Area,GB070,
-4,Area,ZC040,
-5,Line,FC021,mac=27or28or29 AND mbl=NULL
-5,Line,FC021,mac=32or33 AND mbl=NULL
-5,Line,FC021,mac=42 AND mbl=NULL
-5,Line,FC021,mac=48 AND mbl=NULL
-5,Line,FC021,mac=55 AND mbl=NULL
-5,Line,FC177,
-5,Line,GB070,
-5,Area,AL005,
-5,Area,BB010,mac=12
-5,Area,BB115,
-5,Area,BB170,
-5,Area,FC021,mac=24
-5,Area,FC021,mac=44
-5,Area,FC021,mac=58
-5,Area,FC031,mac=4
-5,Area,FC031,mac=41
-5,Area,FC036,mac=0or999
-5,Area,FC036,mac=37
-5,Area,GB055,
-#6,Line,AQ113,loc<>25 AND pro<>95and<>116 AND plt<>2and<>3
-#6,Line,AQ113,loc<>25 AND pro=116
-#6,Line,AQ113,loc<>25 AND pro=95 OR plt=2or3
-6,Line,BB010,mac=12
-6,Line,BB170,
-6,Line,BC040,
-6,Line,BH010,loc<>25
-6,Line,BI020,
-6,Line,FC021,mac=24 AND mbl=NULL
-6,Line,FC021,mac=44 AND mbl=NULL
-6,Line,FC021,mac=58 AND mbl=NULL
-6,Line,FC031,mac=4
-6,Line,FC036,
-6,Line,FC130,
-6,Line,FC165,atn=1 AND exs=22 AND rtt<>3
-6,Line,FC165,atn=1 AND exs=22 AND rtt=3
-6,Line,FC165,atn=1 AND exs=23 AND rtt<>3
-6,Line,FC165,atn=1 AND exs=23 AND rtt=3
-6,Line,FC165,atn=2 AND exs=22 AND rtt<>3
-6,Line,FC165,atn=2 AND exs=22 AND rtt=3
-6,Line,FC165,atn=2 AND exs=23 AND rtt<>3
-6,Line,FC165,atn=2 AND exs=23 AND rtt=3
-6,Line,FC165,exs=0 AND rtt<>3
-6,Line,FC165,exs=0 AND rtt=3
-6,Line,FC170,
-6,Line,GB055,
-6,Area,BB040,vrr=1
-6,Area,BB040,vrr=4or8
-6,Area,BB140,vrr=1
-6,Area,BB140,vrr=4or8
-6,Area,BB190,
-6,Area,BB220,vrr=1
-6,Area,BB220,vrr=4or8
-6,Area,FC031,mac=40
-6,Area,FC031,mac=5
-6,Area,FC036,mac=15
-6,Area,FC036,mac=22
-6,Area,FC036,mac=43
-6,Area,FC041,tsp=6or7
-6,Area,FC170,
-7,Line,BA010,acc=1 AND slt<>6and<>8
-7,Line,BA010,acc=2 AND slt<>6and<>8
-7,Line,BA010,slt=6or8
-7,Line,BB040,vrr=1
-7,Line,BB040,vrr=4or8
-7,Line,BB140,vrr=1
-7,Line,BB140,vrr=4or8
-7,Line,BB190,
-7,Line,BB220,vrr=1
-7,Line,BB220,vrr=4or8
-7,Line,BB230,
-7,Line,BB240,vrr=1
-7,Line,BB240,vrr=4or8
-7,Line,FC031,mac=40or41
-7,Line,FC031,mac=5
-7,Line,FC041,tsp=2
-8,Line,AQ010,
-8,Line,AQ040,bsc<>12 AND bot<>4and<>10and<>11
-8,Line,AQ040,bsc=12 OR bot=4or10or11
-8,Line,AQ045,
-#8,Line,AQ113,loc=25
-8,Line,AT030,
-8,Line,AT060,
-8,Line,BH010,loc=25
-8,Line,BI040,
-8,Line,FC041,tsp=4
-8,Area,AQ040,bsc<>12 AND bot<>4and<>10and<>11
-8,Area,AQ040,bsc=12 OR bot=4or10or11
-8,Area,AQ045,
-8,Area,BC060,
diff --git a/share/data/vpf/dnc-priority-depth-contours.csv b/share/data/vpf/dnc-priority-depth-contours.csv
deleted file mode 100644
index f91a34d4a..000000000
--- a/share/data/vpf/dnc-priority-depth-contours.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-priority,type,facc,conditions,description
-5,Line,BE010,acc=1
-5,Line,BE010,acc=2
diff --git a/share/data/vpf/dnc-symbol-lookup.csv b/share/data/vpf/dnc-symbol-lookup.csv
deleted file mode 100644
index 1f8957555..000000000
--- a/share/data/vpf/dnc-symbol-lookup.csv
+++ /dev/null
@@ -1,544 +0,0 @@
-facc,type,symbol,conditions,size,xoff,yoff
-AA010,P,0001,,,,
-AA010,A,0027 0624,,,,
-AB000,A,0624,,,,
-AB010,A,0624,,,,
-AC000,A,0624,,,,
-AC030,A,4077,,,,
-AD010,A,0804,,,,
-AD030,P,0002,,,,
-AD030,A,0804,,,,
-AF010,P,0003,,,,
-AF030,P,0004,,,,
-AF040,P,0005,,,,
-AF070,P,0006,,,,
-AH010,P,0007,,,,
-AH010,A,0804,,,,
-AH050,P,0007,,,,
-AH050,A,0804,,,,
-AJ050,P,0008,,,,
-AK020,P,0024,,,,
-AK020,L,0600,,,,
-AK040,A,0804,,,,
-AK080,P,0024,,,,
-AK090,A,0822,,,,
-AK130,L,0605,,,,
-AK160,P,0002,,,,
-AK160,A,0804,,,,
-AL005,A,0081 0734,,,,
-AL015,P,0002,bfc=81ANDsta=0or2or3or6or11,,,
-AL015,P,0010,bfc=7ANDhwt=0or2or3or4or7or22,,,
-AL015,P,0011,bfc=7ANDhwt=11or14or15or16or20or21,,,
-AL015,P,0012,bfc=7ANDhwt=5or6or9,,,
-AL015,P,0013,bfc=81ANDsta=1,,,
-AL015,P,0014,bfc=81ANDsta=5,,,
-AL015,P,0015,bfc=81ANDsta<>0and<>1and<>2and<>3and<>5and<>6and<>11,,,
-AL015,P,0401,bfc=81ANDsta=5ANDsst<>16,.5,0,.5
-AL015,P,0402,bfc=81ANDsta<>5ANDsst<>16,,,
-AL015,P,2036,bfc<>7and<>81,,,
-AL015,A,0804,,,,
-AL018,P,0002,,,,
-AL020,P,0016,,,,
-AL020,A,0804,,,,
-AL025,P,0017,,,,
-AL030,A,0804,,,,
-AL050,P,0018,,,,
-AL070,L,0600,,,,
-AL073,P,0019,,,,
-AL130,P,0020,,,,
-AL200,P,0002,loc=22ANDvrr=1,,,
-AL200,P,0002,loc=8,,,
-AL200,P,0052,loc=22ANDvrr=4ANDhdp=0,,,
-AL200,P,0053,loc=22ANDvrr=4ANDhdp>0and<=20,,,
-AL200,P,0054,loc=22ANDvrr=4ANDhdp>20,,,
-AL200,P,0055,loc=22ANDvrr=8,,,
-AL200,A,0804,loc=22ANDvrr=1,,,
-AL200,A,0804,loc=8,,,
-AL200,A,0803,loc=22ANDvrr=8,,,
-AL200,A,0629,loc=22ANDvrr=4ANDhdp>20,,,
-AL200,A,0680,loc=22ANDvrr=4ANDhdp>0and<=20,,,
-AL200,A,0810,loc=22ANDvrr=4ANDhdp=0,,,
-AL240,P,0004,,,,
-AL260,L,0600,,,,
-AM010,A,0624,,,,
-AM020,P,0021,,,,
-AM030,P,0004,,,,
-AM030,A,0804,,,,
-AM040,A,0624,,,,
-AM070,P,0022,,,,
-AM070,A,0804,,,,
-AM080,P,0023,,,,
-AN010,L,0605,,,,
-AN060,A,0802,,,,
-AP020,L,0605,,,,
-AP030,L,0605,,,,
-AQ010,L,0657,,,,
-AQ020,P,0024,,,,
-AQ040,L,0627,bsc<>12ANDbot<>4and<>10and<>11,,,
-AQ040,L,0753,bsc=12ORbot=4or10or11,,,
-AQ040,A,0611,bsc<>12ANDbot<>4and<>10and<>11,,,
-AQ040,A,0611,bsc=12ORbot=4or10or11,,,
-AQ045,L,0627,,,,
-AQ045,A,0611,,,,
-AQ060,P,0004,,,,
-AQ070,L,0700,fer=2,,,
-AQ070,L,0701,fer=1,,,
-AQ080,P,0096,,,,
-AQ110,P,0026,,,,
-AQ113,L,0610,loc=25,,,
-AQ113,L,0704,loc<>25ANDpro=95ORplt=2or3,,,
-AQ113,L,0704,loc<>25ANDpro=116,,,
-AQ113,L,0705,loc<>25ANDpro<>95and<>116ANDplt<>2and<>3,,,
-AQ116,P,0002,,,,
-AQ116,A,0804,,,,
-AQ130,L,0656,,,,
-AT005,L,0708,,,,
-AT010,P,2102,,,,
-AT020,A,0804,,,,
-AT030,L,0657,,,,
-AT040,P,0024,,,,
-AT045,P,0028,ssc=87,,,
-AT045,P,0029,ssc=108,,,
-AT045,P,0030,ssc=60,,,
-AT045,P,0031,ssc=107,,,
-AT045,P,0511,ssc=0or999,,,
-AT050,P,0033,,,,
-AT060,L,0657,,,,
-AT080,P,0004,,,,
-BA010,L,0632,slt=6or8,,,
-BA010,L,0743,acc=2ANDslt<>6and<>8,,,
-BA010,L,1573,acc=1ANDslt<>6and<>8,,,
-BA020,P,0150,,,,
-BA020,L,3082,,,,
-BA020,A,0803,,,,
-BA020,A,0949,,,,
-BA030,P,0035,,,,
-BA030,A,0822,,,,
-BA040,A,0805,,,,
-BB010,P,0036,mac<>12,,,
-BB010,P,0037,mac=12,,,
-BB010,L,0711,mac<>12,,,
-BB010,L,3000,mac=12,,,
-BB010,A,0037 3000,mac=12,,,
-BB010,A,0902 0711,mac<>12,,,
-BB020,P,0032,,,,
-BB030,P,0051,,.35,,
-BB040,L,0623,vrr=1,,,
-BB040,L,0626,vrr=4or8,,,
-BB040,A,0623,vrr=1,,,
-BB040,A,0626,vrr=4or8,,,
-BB050,P,0039,df3<>0,,,
-BB050,P,0039,df3<>0,,,
-BB050,P,0039,df3<>0,,,
-BB050,P,0039,df4<>0,,,
-BB050,P,0039,df1<>0ANDdf2=0,,,
-BB050,P,0040,df2<>0ANDdf3=0,,,
-BB050,P,0041,df1=0,,,
-BB080,P,0038,,,,
-BB090,A,1573 0822,,,,
-BB100,L,0712,,,,
-BB105,P,0042,,,,
-BB110,A,0047 0716,,,,
-BB115,A,0656,,,,
-BB140,L,0623,vrr=1,,,
-BB140,L,0626,vrr=4or8,,,
-BB140,A,0623,vrr=1,,,
-BB140,A,0626,vrr=4or8,,,
-BB150,P,0043,,,,
-BB150,A,0804,,,,
-BB160,P,0038,,,,
-BB170,P,0044,,,,
-BB170,P,0500,cha=21,,,
-BB170,L,0625,,,,
-BB170,A,0804,,,,
-BB180,P,0045,,,,
-BB180,A,0904,,,,
-BB190,L,0625,,,,
-BB190,A,0625,,,,
-BB220,L,0623,vrr=1,,,
-BB220,L,0626,vrr=4or8,,,
-BB220,A,0623,vrr=1,,,
-BB220,A,0626,vrr=4or8,,,
-BB230,L,0623,,,,
-BB240,L,0623,vrr=1,,,
-BB240,L,0626,vrr=4or8,,,
-BC010,P,0009,nst=45,,,
-BC010,P,0100,,,,
-BC010,P,0114,tmc=19or31,,,
-BC010,P,0122,tmc=16or21,,,
-BC010,P,0124,tmc=22,,,
-BC010,P,0125,tmc=3,,,
-BC010,P,0126,tmc=8,,,
-BC010,P,0127,tmc=1,,,
-BC010,P,0128,tmc=9,,,
-BC010,P,0130,tmc=15or27or28,,,
-BC010,P,0132,tmc=2,,,
-BC010,P,0133,tmc=25or26or29,,,
-BC010,P,0185,tmc=6,,,
-BC010,P,0186,tmc=23or30,,,
-BC010,P,0187,tmc=18,,,
-BC010,P,0188,tmc=17,,,
-BC010,P,0199,tmc=0or32,,,
-BC010,P,0401,sst=1or2or3or4or6or9or14or15,.5,0,.5
-BC010,P,0510,ref=1,,0,-.25
-BC010,P,0511,nst=1or4or5or17or41or51or53,,,
-BC010,P,0512,nst=10or54,,,
-BC020,P,0009,nst=45,,,
-BC020,P,0051,btc=35,.35,,
-BC020,P,0202,tmc=16or21,,,
-BC020,P,0204,tmc=22,,,
-BC020,P,0205,tmc=3,,,
-BC020,P,0206,tmc=8,,,
-BC020,P,0207,tmc=1,,,
-BC020,P,0208,tmc=9,,,
-BC020,P,0210,tmc=15or27or28,,,
-BC020,P,0212,tmc=2,,,
-BC020,P,0213,tmc=25or26or29,,,
-BC020,P,0214,tmc=19or31,,,
-BC020,P,0217,tmc=23or30,,,
-BC020,P,0265,tmc=6,,,
-BC020,P,0299,tmc=0or17or18or32,,,
-BC020,P,0300,btc=0ANDssc=0or85or999,,,
-BC020,P,0301,btc=0ANDssc=1,,,
-BC020,P,0302,btc=0ANDssc=7,,,
-BC020,P,0303,btc=0ANDssc=6,,,
-BC020,P,0304,btc=7ANDssc=1,,,
-BC020,P,0305,btc=7ANDssc=7,,,
-BC020,P,0306,btc=0ANDssc=10,,,
-BC020,P,0307,btc=0ANDssc=17,,,
-BC020,P,0308,btc=0ANDssc=16,,,
-BC020,P,0309,btc=10,,,
-BC020,P,0309,btc=0ANDssc=73,,,
-BC020,P,0310,btc=4,,,
-BC020,P,0311,btc=7ANDssc<>1and<>7,,,
-BC020,P,0401,sst=1or2or3or4or6or9or14or15,.5,0,.5
-BC020,P,0510,ref=1,,0,-.25
-BC020,P,0511,nst=1or4or5or17or41or51or53ANDssc<>10,,,
-BC020,P,0512,nst=10or54ANDssc<>10,,,
-BC020,P,0513,btc=6,,,
-BC020,P,4325,nst=1or4or5or17or41or51or53ANDssc=10,,,
-BC020,P,4326,nst=10or54ANDssc=10,,,
-BC040,P,0009,nst=45,,,
-BC040,P,0051,,.35,,
-BC040,P,0114,tmc=19or31,,,
-BC040,P,0122,tmc=16or21,,,
-BC040,P,0124,tmc=22,,,
-BC040,P,0125,tmc=3,,,
-BC040,P,0126,tmc=8,,,
-BC040,P,0127,tmc=1,,,
-BC040,P,0128,tmc=9,,,
-BC040,P,0130,tmc=15or27or28,,,
-BC040,P,0132,tmc=2,,,
-BC040,P,0133,tmc=25or26or29,,,
-BC040,P,0185,tmc=6,,,
-BC040,P,0186,tmc=23or30,,,
-BC040,P,0187,tmc=18,,,
-BC040,P,0188,tmc=17,,,
-BC040,P,0199,tmc=0or32,,,
-BC040,P,0401,sst=1or2or3or4or6or9or14or15,.5,0,.5
-BC040,P,0510,ref=1,,0,-.25
-BC040,P,0511,nst=1or4or5or17or41or51or53,,,
-BC040,P,0512,nst=10or54,,,
-BC040,L,0713,,,,
-BC055,P,0151,,,,
-BC060,A,3116,,,,
-BC070,P,0009,nst=45,,,
-BC070,P,0401,sst=1or2or3or4or6or9or14or15,.5,0,.5
-BC070,P,0510,ref=1,,0,-.25
-BC070,P,0511,nst=1or4or5or17or41or51or53,,,
-BC070,P,0512,nst=10or54,,,
-BC070,P,0514,,,,
-BC080,P,0052,,,,
-BC080,A,0810,,,,
-BC100,L,0656,,,,
-BD000,P,0052,hdp=0,,,
-BD000,P,0053,hdp>0and<=20,,,
-BD000,P,0054,hdp>20,,,
-BD000,P,0058,acc<>1,,,
-BD000,A,0629,hdp>20,,,
-BD000,A,0680,hdp>0and<=20,,,
-BD000,A,0810,hdp=0,,,
-BD000,A,0058,acc<>1,,,
-BD010,P,0056,,,,
-BD010,L,0752,,,,
-BD010,A,0656,,,,
-BD020,P,0052,vrr=4ANDhdp=0,,,
-BD020,P,0053,vrr=4ANDhdp>0and<=20,,,
-BD020,P,0054,vrr=4ANDhdp>20,,,
-BD020,P,0055,vrr=8ANDhdp=NULL,,,
-BD020,P,0057,vrr=1ANDhdp=NULL,,,
-BD020,P,0058,acc<>1,,,
-BD020,A,0804,vrr=1ANDhdp=NULL,,,
-BD020,A,0803,vrr=8ANDhdp=NULL,,,
-BD020,A,0629,vrr=4ANDhdp>20,,,
-BD020,A,0680,vrr=4ANDhdp>0and<=20,,,
-BD020,A,0810,vrr=4ANDhdp=0,,,
-BD020,A,0058,acc<>1,,,
-BD030,P,0052,,,,
-BD030,P,0058,acc<>1,,,
-BD030,A,0810,,,,
-BD030,A,0058,acc<>1,,,
-BD040,P,0056,,,,
-BD040,A,0656,,,,
-BD050,P,0059,,,,
-BD050,A,0059 0716,,,,
-BD060,P,0060,,,,
-BD060,A,3077,,,,
-BD080,P,0056,,,,
-BD080,A,0656,,,,
-BD100,P,0051,,.35,,
-BD100,A,0804,vrr=1,,,
-BD100,A,0803,vrr=8,,,
-BD100,A,0810,vrr=4,,,
-BD100,A,0058,acc<>1,,,
-BD110,P,0061,,,,
-BD110,P,0402,sst<>16,,,
-BD110,P,0500,cha=21,,,
-BD110,P,0512,nst=10or54,,,
-BD120,A,0803,vrr=8,,,
-BD120,A,0949,vrr=8ANDisdm=1,,,
-BD120,A,0629,vrr=4ANDhdp>20,,,
-BD120,A,0680,vrr=4ANDhdp>0and<=20,,,
-BD120,A,0810,vrr<>8ANDhdp=0orNULL,,,
-BD120,A,0058,vrr<>8ANDacc<>1,,,
-BD130,P,0053,vrr=4ANDhdp>0and<=20,,,
-BD130,P,0054,vrr=4ANDhdp>20,,,
-BD130,P,0058,acc<>1,,,
-BD130,P,0062,vrr=4ANDhdp=0,,,
-BD130,P,0063,hdp=NULL,,,
-BD140,P,0052,vrr=4ANDhdp=0,,,
-BD140,P,0053,vrr=4ANDhdp>0and<=20,,,
-BD140,P,0054,vrr=4ANDhdp>20,,,
-BD140,P,0055,vrr=8ANDhdp=NULL,,,
-BD140,P,0057,vrr=1ANDhdp=NULL,,,
-BD140,P,0058,acc<>1,,,
-BD140,A,0804,vrr=1,,,
-BD140,A,0803,vrr=8,,,
-BD140,A,0810,vrr=4,,,
-BD140,A,0058,acc<>1,,,
-BD180,P,0053,vrr=4ANDhdp>0and<=20,,,
-BD180,P,0054,vrr=4ANDhdp>20,,,
-BD180,P,0058,acc<>1,,,
-BD180,P,0064,hdp=NULLANDvrr=1or2or8,,,
-BD180,P,0064,loc<>4ANDhdp=NULL,,,
-BD180,P,0065,vrr=4ANDsoh=1ANDhdp=0,,,
-BD180,P,0065,hdp=NULLANDvrr=0,,,
-BD180,P,0066,vrr=4ANDsoh=2ANDhdp=0,,,
-BD180,A,0804,vrr=1ANDhdp=NULL,,,
-BD180,A,0803,vrr=8ANDhdp=NULL,,,
-BD180,A,0810,vrr=4ANDhdp=0,,,
-BD180,A,0810,vrr=0or2ANDhdp=NULL,,,
-BD180,A,0680,vrr=4ANDhdp>0and<=20,,,
-BD180,A,3117,vrr=4ANDhdp>20,,,
-BE010,L,0608,acc=1,,,
-BE010,L,0614,acc=2,,,
-BE010,A,0805,idsm=1ANDcvl>=ssdcand<>99999,,,
-BE010,A,0805,idsm=0ANDcvl>=msdcand<>99999,,,
-BE010,A,0810,idsm=1ANDisdm=0ANDcvl=ssdcand=msscand=msscand=msscand1,,,
-BE020,P,1256,hdh>=0ANDhdp=NULL,,,
-BF010,P,1233,mcc=0ANDpsc=0,,,
-BG010,P,0071,cur=0ORdof=0,,,
-BG010,P,0072,cur=3or5ANDdof<>0,,,
-BG010,P,0073,cur=1ANDdof<>0,,,
-BG010,P,0074,cur=2ANDdof<>0,,,
-BG020,P,0015,,,,
-BG030,P,0076,,,,
-BG040,P,0154,,,,
-BH010,L,0610,loc=25,,,
-BH010,L,0704,loc<>25,,,
-BH020,L,0600,,,,
-BH020,A,0810,,,,
-BH050,A,0904,,,,
-BH080,A,0810,,,,
-BH090,A,6050,,,,
-BH095,A,0910,,,,
-BH120,L,0610,,,,
-BH130,A,0810,,,,
-BH140,L,0600,,,,
-BH140,A,0810,,,,
-BH155,A,0911,,,,
-BH180,L,0615,,,,
-BH210,L,0600,,,,
-BI020,L,0607,,,,
-BI030,A,0810,,,,
-BI040,L,0623,,,,
-BJ030,A,0823,,,,
-BJ030,A,0912,,,,
-BJ060,P,0077,,,,
-BJ065,A,0823,,,,
-BJ065,A,0912,,,,
-BJ100,A,0823,,,,
-BJ100,A,0912,,,,
-BJ110,A,0822,,,,
-CA010,L,0604,,,,
-CA030,P,0078,,,,
-DA010,A,0822,,,,
-DB090,L,3082,,,,
-DB090,A,0913,,,,
-DB170,A,0913,,,,
-EA030,A,0914,,,,
-EA040,A,0915,,,,
-EA050,A,0915,,,,
-EC030,P,0079,,,,
-EC030,A,0915,veg<>19,,,
-EC030,A,0916,veg=19,,,
-FA000,L,0680,use=32,,,
-FA000,L,1310,use=23,,,
-FA020,L,3119,,,,
-FA040,L,3120,,,,
-FA060,L,1310,,,,
-FA110,L,3119,,,,
-FC021,P,0080,mac=48,,,
-FC021,P,0084,mac<>48,,,
-FC021,L,0629,mac=56ANDmbl=NULL,,,
-FC021,L,0629,mbl<>7and<>13ANDmac=NULL,,,
-FC021,L,0631,mac=26ANDmbl=NULL,,,
-FC021,L,0633,mac=57ANDmbl=NULL,,,
-FC021,L,0634,mac=30or35ANDmbl=NULL,,,
-FC021,L,0634,mac=25ANDmbl=NULL,,,
-FC021,L,0635,mac=49ANDmbl=NULL,,,
-FC021,L,0635,mac=31ANDmbl=NULL,,,
-FC021,L,0656,mbl=13ANDmac=NULL,,,
-FC021,L,0656,mac=55ANDmbl=NULL,,,
-FC021,L,0663,mac=42ANDmbl=NULL,,,
-FC021,L,0663,mac=0or999ANDmbl=NULL,,,
-FC021,L,1651,mac=48ANDmbl=NULL,,,
-FC021,L,3077,mbl=7ANDmac=NULL,,,
-FC021,L,4186,mac=44ANDmbl=NULL,,,
-FC021,L,4186,mac=58ANDmbl=NULL,,,
-FC021,L,4186,mac=32or33ANDmbl=NULL,,,
-FC021,L,4186,mac=27or28or29ANDmbl=NULL,,,
-FC021,L,4186,mac=24ANDmbl=NULL,,,
-FC021,A,0823,mac=26,,,
-FC021,A,0933,mac=26,,,
-FC021,A,0631,mac=26,,,
-FC021,A,0716,mac=55,,,
-FC021,A,0716 0904,mac=57,,,
-FC021,A,0047 0716,mac=56,,,
-FC021,A,0080 0734,mac=48,,,
-FC021,A,0081 0734,mac=25or30or35,,,
-FC021,A,0081 0734,mac=49,,,
-FC021,A,0081 0734,mac=31,,,
-FC021,A,0092 0738 0917,mac=42,,,
-FC021,A,0093 0734,mac=44,,,
-FC021,A,0093 0734,mac=58,,,
-FC021,A,0093 0734,mac=32or33,,,
-FC021,A,0093 0734,mac=27or28or29,,,
-FC021,A,0093 0734,mac=24,,,
-FC021,A,0097 0742,mac=0or999,,,
-FC031,P,0082,mac=5,,,
-FC031,P,0083,mac=40,,,
-FC031,P,0084,mac=0,,,
-FC031,P,0087,mac=2,,,
-FC031,P,0093,mac=4,,,
-FC031,L,0663,mac=0or9,,,
-FC031,L,0665,mac=40or41,,,
-FC031,L,3077,mac=2,,,
-FC031,L,4186,mac=5,,,
-FC031,L,4186,mac=4,,,
-FC031,A,0803,mac=2ANDhdp=0ANDisdm=0,,,
-FC031,A,0803,mac=2ANDhdp=0ANDisdm=1,,,
-FC031,A,0805,mac=2ANDidsm=1ANDhdp>=ssdc,,,
-FC031,A,0805,mac=2ANDidsm=0ANDhdp>=msdc,,,
-FC031,A,0810,mac=2ANDidsm=1ANDhdp>0and0and0and0and=ssdcand=msscand=msscand=ssdc,,,
-FC031,A,0919,mac=2ANDidsm=1ANDhdp>0and0and=msdc,,,
-FC031,A,0919,mac=2ANDidsm=0ANDhdp>=msscand=msscand=ssdcand0and0and0and=msscand0and=ssdc,,,
-FC031,A,3077,mac=2ANDidsm=1ANDhdp>0and0and=msdc,,,
-FC031,A,3077,mac=2ANDidsm=0ANDhdp>=msscand=msscand=ssdcand0and0and0,,,
-FC165,L,0723,atn=1ANDexs=22ANDrtt=3,,,
-FC165,L,0724,atn=2ANDexs=22ANDrtt=3,,,
-FC165,L,0725,atn=1ANDexs=23ANDrtt=3,,,
-FC165,L,0726,atn=2ANDexs=23ANDrtt=3,,,
-FC165,L,0727,exs=0ANDrtt=3,,,
-FC165,L,0728,atn=1ANDexs=22ANDrtt<>3,,,
-FC165,L,0729,atn=2ANDexs=22ANDrtt<>3,,,
-FC165,L,0730,atn=1ANDexs=23ANDrtt<>3,,,
-FC165,L,0731,atn=2ANDexs=23ANDrtt<>3,,,
-FC165,L,0732,exs=0ANDrtt<>3,,,
-FC165,A,0097 0742,rtt=0,,,
-FC165,A,0098 0734,rtt=11,,,
-FC165,A,1238 0741,rtt=4,,,
-FC170,L,0732,,,,
-FC170,A,0091 0716,,,,
-FC177,L,0656,,,,
-FC177,A,0095 0716,,,,
-GA020,P,0501,,,,
-GA035,P,0511,,,,
-GB005,P,0090,,,,
-GB005,A,0822,,,,
-GB005,A,0600 0932,,,,
-GB010,P,0503,,,,
-GB055,L,0606,,,,
-GB055,A,0804,,,,
-GB070,L,0634,,,,
-GB070,A,0734 0634,,,,
-ZC040,A,0733 0716,,,,
diff --git a/share/data/vpf/vmaplv0-priority-iw.csv b/share/data/vpf/vmaplv0-priority-iw.csv
deleted file mode 100644
index 520296b51..000000000
--- a/share/data/vpf/vmaplv0-priority-iw.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-priority,type,facc,conditions,description
-2,Line,BH000,,
-2,Area,BH000,,
\ No newline at end of file
diff --git a/share/data/vpf/vmaplv0-symbol-lookup.csv b/share/data/vpf/vmaplv0-symbol-lookup.csv
deleted file mode 100644
index e9dc6072e..000000000
--- a/share/data/vpf/vmaplv0-symbol-lookup.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-facc,type,symbol,conditions,size,xoff,yoff
-BH000,L,0621,,,,
-BH000,A,4152,,,,
diff --git a/share/manifest.txt b/share/manifest.txt
deleted file mode 100644
index 73b51ab65..000000000
--- a/share/manifest.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: com.bbn.openmap.app.OpenMap
-
-Name: com/bbn/openmap/BufferedLayerMapBean.class
-Java-Bean: True
-
-Name: com/bbn/openmap/BufferedMapBean.class
-Java-Bean: True
-
-Name: com/bbn/openmap/InformationDelegator.class
-Java-Bean: True
-
-Name: com/bbn/openmap/LayerHandler.class
-Java-Bean: True
-
-Name: com/bbn/openmap/MapBean.class
-Java-Bean: True
-
-Name: com/bbn/openmap/MapHandler.class
-Java-Bean: True
-
-Name: com/bbn/openmap/MouseDelegator.class
-Java-Bean: True
-
-Name: com/bbn/openmap/PropertyHandler.class
-Java-Bean: True
-
-Name: com/bbn/openmap/SoloMapComponentRejectPolicy.class
-Java-Bean: True
-
-Name: com/bbn/openmap/SoloMapComponentReplacePolicy.class
-Java-Bean: True
-
-Name: com/bbn/openmap/event/DistanceMouseMode.class
-Java-Bean: True
-
-Name: com/bbn/openmap/event/NavMouseMode.class
-Java-Bean: True
-
-Name: com/bbn/openmap/event/NavMouseMode2.class
-Java-Bean: True
-
-Name: com/bbn/openmap/event/NullMouseMode.class
-Java-Bean: True
-
-Name: com/bbn/openmap/event/SelectMouseMode.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/ControlMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/CoordPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/DMSCoordPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/DefaultHelpMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/DMSCoordPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/FileMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/GoToMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/LayerAddPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/LayerControlButtonPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/LayersMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/LayersPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/MGRSCoordPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/MapWindow.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/MenuBar.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/MouseModeButtonPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/MouseModePanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/NavigateMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/NavigatePanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/OMGraphicDeleteTool.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/OMToolSet.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/OpenMapFrame.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/OverviewMapHandler.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/ProgressListenerGauge.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/ProjectionStackTool.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/ScaleTextPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/ToolPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/UTMCoordPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/UserGuideMenuItems.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/ZoomPanel.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/AboutMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/BackgroundColorMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/LoadPropertiesMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/MouseModeMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/ProjectionMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/QuitMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/SaveAsGifMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/SaveAsJpegMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/SaveAsMenu.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/SavePropertiesMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/ToolPanelToggleMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/gui/menu/WebSiteHelpMenuItem.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/BufferedLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/CacheLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/DateLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/daynight/DayNightLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/DemoLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/DrawingToolLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/dted/DTEDLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/editor/EditorLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/EarthquakeLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/etopo/ETOPOJarLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/etopo/ETOPOLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/GraticuleLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/LabelLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/link/amp/AmpLinkLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/link/BufferedLinkLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/link/LinkLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/location/LocationLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/mif/MIFLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/nexrad/NexradLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/OverviewMapAreaLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/plotLayer/PlotLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/rpf/RpfLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/ScaleFilterLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/shape/areas/AreaShapeLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/shape/BufferedShapeLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/shape/MultiShapeLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/shape/ShapeLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/terrain/TerrainLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/test/HelloWorldLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/test/TestLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/vpf/LibraryBean.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/vpf/VPFLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/CSVTiledImagePlugIn.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/earthImage/EarthImagePlugIn.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/esri/EsriPlugIn.class
-Java-Bean: True
-
-Name: com/bbn/openmap/graphicLoader/AnimationTester.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/graphicLoader/GraphicLoaderConnector.class
-Java-Bean: True
-
-Name: com/bbn/openmap/graphicLoader/LOSGraphicLoader.class
-Java-Bean: True
-
-Name: com/bbn/openmap/graphicLoader/netmap/NetMapConnector.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/PlugInLayer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/shis/SHISPlugIn.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/UTMGridPlugIn.class
-Java-Bean: True
-
-Name: com/bbn/openmap/plugin/wms/WMSPlugIn.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/dnd/DefaultDnDCatcher.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/dnd/DropListenerSupport.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMCircleLoader.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMDrawingTool.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMDrawingToolLauncher.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMDrawingToolMouseMode.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMLineLoader.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMPointLoader.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMPolyLoader.class
-Java-Bean: True
-
-Name: com/bbn/openmap/tools/drawing/OMRectLoader.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/ColorPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/DirectoryPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/FDUPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/FilePropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/FUPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/Inspector.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/MultiDirectoryPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/NonEditablePropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/OnOffPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/TextPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/TrueFalsePropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/util/propertyEditor/YesNoPropertyEditor.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/beanbox/Fighter.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/beanbox/SimpleBeanContainer.class
-Java-Bean: True
-
-Name: com/bbn/openmap/layer/beanbox/SimpleBeanObject.class
-Java-Bean: True
diff --git a/share/omapplet.html b/share/omapplet.html
deleted file mode 100644
index 2f0cd30a1..000000000
--- a/share/omapplet.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-OpenMap Applet
-
-
-
-
-
-
-
-
diff --git a/share/openmap.jnlp b/share/openmap.jnlp
deleted file mode 100644
index 9bb0bb081..000000000
--- a/share/openmap.jnlp
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
- OpenMap
- BBN Technologies
-
- OpenMap
- A mapping application that lets you visualize your data.
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java b/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java
deleted file mode 100644
index d4c714e6b..000000000
--- a/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java
+++ /dev/null
@@ -1,606 +0,0 @@
-// **********************************************************************
-//
-//
-//
-// BBN Technologies
-// 10 Moulton Street
-// Cambridge, MA 02138
-// (617) 873-8000
-//
-// Copyright (C) BBNT Solutions LLC. All rights reserved.
-//
-//
-// **********************************************************************
-//
-// $Source: /cvs/distapps/openmap/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java,v $
-// $RCSfile: CRFPClient.java,v $
-// $Revision: 1.6 $
-// $Date: 2005/12/09 21:09:15 $
-// $Author: dietrick $
-//
-// **********************************************************************
-
-package com.bbn.openmap.layer.rpf.corba;
-
-import java.awt.Point;
-import java.awt.geom.Point2D;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Vector;
-
-import javax.imageio.ImageIO;
-import javax.imageio.stream.ImageInputStream;
-import javax.imageio.stream.MemoryCacheImageInputStream;
-
-import com.bbn.openmap.Environment;
-import com.bbn.openmap.layer.rpf.RpfCoverageBox;
-import com.bbn.openmap.layer.rpf.RpfFrameProvider;
-import com.bbn.openmap.layer.rpf.RpfIndexedImageData;
-import com.bbn.openmap.layer.rpf.RpfViewAttributes;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.CRFPCADRGProjection;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.CRFPCoverageBox;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.CRFPViewAttributes;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.LLPoint;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.RawImage;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.Server;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.ServerHelper;
-import com.bbn.openmap.omGraphics.OMColor;
-import com.bbn.openmap.proj.CADRG;
-import com.bbn.openmap.proj.Projection;
-import com.bbn.openmap.util.Debug;
-import com.bbn.openmap.util.PropUtils;
-
-/**
- * An implementation of the RpfFrameProvider interface that uses CORBA to get
- * the subframe data via a server. The image data is transmitted in jpeg format.
- * This class requires the sunw package that handles jpeg encoding/decoding.
- *
- *
- * The client can connect to the server in two different ways. The client can
- * locate the server using an IOR file that the server has written. This IOR
- * file is read using an URL. The server can also be located using the CORBA
- * naming service. The name should be in a three part fomat /
- * / . The root name has to be known by the nameserver and the
- * entire string has to be used by the server on startup. If both the IOR and
- * name string are set, the IOR is the thing that gets used.
- */
-public class CRFPClient
- implements RpfFrameProvider {
-
- /** The property specifying the IOR URL. */
- public static final String iorUrlProperty = "ior";
- /** The name of the server, using the name service. */
- public static final String nameProperty = "name";
- /** The property specifying the initial JPEG quality. */
- public static final String JPEGQualityProperty = "jpegQuality";
- /** The CRFPServer. */
- protected transient Server server = null;
- /** The string used for the CORBA naming service. */
- protected String naming = null;
- /** The URL used for the IOR, to connect to the server that way. */
- protected URL iorURL = null;
- private String clientID = Environment.generateUniqueString();
- /**
- * The compression quality of the images. Lower quality images are smaller.
- */
- public float jpegQuality = .8f;
-
- /**
- * We'll set up the connection to the server when it's needed, but not here.
- */
- public CRFPClient() {
- }
-
- /**
- * Set the JPEG quality parameter for subframe transfer.
- *
- * @param jq number between 0 and 1, should be between .4 and .8. Anything
- * else is a waste.
- */
- public void setJpegQuality(float jq) {
- jpegQuality = jq;
- }
-
- /**
- * Get the quality setting for JPEG subframe retrieval.
- *
- * @return float reflecting JPEG quality.
- */
- public float getJpegQuality() {
- return jpegQuality;
- }
-
- /**
- * Set the name used for the CORBA naming service.
- */
- public void setNaming(String CORBAName) {
- naming = CORBAName;
- }
-
- /**
- * Get the name used for the CORBA naming service.
- */
- public String getNaming() {
- return naming;
- }
-
- /**
- * If you want to connect to the server using an ior, set the URL where it
- * is located.
- */
- public void setIorURL(URL iorurl) {
- iorURL = iorurl;
- }
-
- /**
- * Get the URL for the ior.
- */
- public URL getIorURL() {
- return iorURL;
- }
-
- /**
- * Get the clientID string that is used by the server to keep track of
- * clients. This string in internally generated.
- */
- public String getClientID() {
- return clientID;
- }
-
- /**
- * Set all the RPF properties from a properties object.
- */
- public void setProperties(String prefix, java.util.Properties properties) {
-
- prefix = PropUtils.getScopedPropertyPrefix(prefix);
-
- jpegQuality = PropUtils.floatFromProperties(properties, prefix + JPEGQualityProperty, .8f);
-
- String url = properties.getProperty(prefix + iorUrlProperty);
- if (url != null) {
- try {
- iorURL = PropUtils.getResourceOrFileOrURL(url);
- } catch (MalformedURLException e) {
- throw new IllegalArgumentException("\"" + url + "\"" + " is malformed.");
- }
- }
-
- naming = properties.getProperty(prefix + nameProperty);
- }
-
- /**
- * When the client is deleted, it should sign off from the server, so that
- * it can free up it's cache for it.
- */
- protected void dispose() {
- if (Debug.debugging("crfp")) {
- Debug.output("CRFPClient.finalize(): calling shutdown");
- }
- try {
- if (server != null) {
- server.signoff(clientID);
- }
- server = null;
- } catch (org.omg.CORBA.SystemException e) {
- Debug.error("CRFPClient.finalize(): " + e);
- } catch (Throwable t) {
- Debug.error("CRFPClient.finalize(): " + t);
- }
- }
-
- /**
- * Returns true because the view attributes should be set if they change at
- * the RpfCacheHandler/RpfCacheManager.
- */
- public boolean needViewAttributeUpdates() {
- return true;
- }
-
- /**
- * Set the RpfViewAttribute object parameters, which describes alot about
- * what you'll be asking for later.
- *
- * @param rva the view attributes.
- */
- public void setViewAttributes(RpfViewAttributes rva) {
- Server serv = getServer();
- if (serv == null || rva == null) {
- return;
- }
-
- try {
- serv.setViewAttributes(new CRFPViewAttributes((short) rva.numberOfColors, (short) rva.opaqueness, rva.scaleImages,
- rva.imageScaleFactor, rva.chartSeries), clientID);
- Debug.message("crfp", "CRFPClient: setting attributes.");
- } catch (org.omg.CORBA.SystemException e) {
- handleCORBAError(e);
- }
- }
-
- /**
- * Given a projection that describes a map or geographical area, return
- * RpfCoverageBoxes that let you know how to locate and ask for
- * RpfSubframes.
- *
- * @param ullat NW latitude.
- * @param ullon NW longitude
- * @param lrlat SE latitude
- * @param lrlon SE longitude
- * @param p a CADRG projection
- */
- public Vector getCoverage(double ullat, double ullon, double lrlat, double lrlon,
- Projection p) {
-
- CRFPCoverageBox[] boxes;
- Server serv = getServer();
-
- if (serv == null)
- return new Vector();
-
- Point2D center = p.getCenter();
- LLPoint llpoint = new LLPoint((float) center.getY(), (float) center.getX());
-
- CADRG cadrg = CADRG.convertProjection(p);
- CRFPCADRGProjection proj =
- new CRFPCADRGProjection(llpoint, (short) cadrg.getHeight(), (short) cadrg.getWidth(), cadrg.getScale(),
- (short) cadrg.getZone());
-
- Debug.message("crfp", "CRFPClient: getting coverage from server.");
-
- try {
- boxes = serv.getCoverage(ullat, ullon, lrlat, lrlon, proj, clientID);
- return translateCRFPCoverageBoxes(boxes);
- } catch (org.omg.CORBA.SystemException e) {
- handleCORBAError(e);
- }
-
- return new Vector();
- }
-
- /**
- * Given a projection that describes a map or geographical area, return
- * RpfCoverageBoxes that let you know what bounding boxes of data are
- * available.
- *
- * @param ullat NW latitude.
- * @param ullon NW longitude
- * @param lrlat SE latitude
- * @param lrlon SE longitude
- * @param p a CADRG projection
- */
- public Vector getCatalogCoverage(double ullat, double ullon, double lrlat, double lrlon,
- Projection p, String chartSeriesCode) {
- CRFPCoverageBox[] boxes;
- Server serv = getServer();
-
- if (serv == null)
- return new Vector();
-
- Point2D center = p.getCenter();
- LLPoint llpoint = new LLPoint((float) center.getY(), (float) center.getX());
-
- CADRG cadrg = CADRG.convertProjection(p);
- CRFPCADRGProjection proj =
- new CRFPCADRGProjection(llpoint, (short) cadrg.getHeight(), (short) cadrg.getWidth(), cadrg.getScale(),
- (short) cadrg.getZone());
-
- Debug.message("crfp", "CRFPClient: getting catalog coverage from server.");
- try {
- boxes = serv.getCatalogCoverage(ullat, ullon, lrlat, lrlon, proj, chartSeriesCode, clientID);
- return translateCRFPCoverageBoxes(boxes);
- } catch (org.omg.CORBA.SystemException e) {
- handleCORBAError(e);
- }
-
- return new Vector();
- }
-
- /**
- * Given an area and a two-letter chart series code, find the percentage of
- * coverage on the map that that chart series can offer. If you want
- * specific coverage information, use the getCatalogCoverage call.
- *
- * @see #getCatalogCoverage(float ullat, float ullon, float lrlat, float
- * lrlon, Projection p, String chartSeriesCode)
- */
- public float getCalculatedCoverage(double ullat, double ullon, double lrlat, double lrlon,
- Projection p, String chartSeries) {
- if (chartSeries.equalsIgnoreCase(RpfViewAttributes.ANY)) {
- return 0f;
- }
-
- Vector results = getCatalogCoverage(ullat, ullon, lrlat, lrlon, p, chartSeries);
-
- int size = results.size();
-
- if (size == 0) {
- return 0f;
- }
-
- // Now interpret the results and figure out the real total
- // percentage coverage for the chartSeries. First need to
- // figure out the current size of the subframes. Then create
- // a boolean matrix of those subframes that let you figure out
- // how many of them are available. Calculate the percentage
- // off that.
- // int pZone = p.getZone();
- int i, x, y;
-
- double frameLatInterval = Double.MAX_VALUE;
- double frameLonInterval = Double.MAX_VALUE;
- RpfCoverageBox rcb;
- for (i = 0; i < size; i++) {
- rcb = (RpfCoverageBox) results.elementAt(i);
- if (rcb.subframeLatInterval < frameLatInterval) {
- frameLatInterval = rcb.subframeLatInterval;
- }
- if (rcb.subframeLonInterval < frameLonInterval) {
- frameLonInterval = rcb.subframeLonInterval;
- }
- }
-
- if (frameLatInterval == Double.MAX_VALUE || frameLonInterval == Double.MAX_VALUE) {
- return 0.0f;
- }
-
- int numHFrames = (int) Math.ceil((lrlon - ullon) / frameLonInterval);
- int numVFrames = (int) Math.ceil((ullat - lrlat) / frameLatInterval);
-
- boolean[][] coverage = new boolean[numHFrames][numVFrames];
- for (i = 0; i < size; i++) {
-
- rcb = (RpfCoverageBox) results.elementAt(i);
- if (rcb.percentCoverage == 100) {
- return 1.0f;
- }
-
- for (y = 0; y < numVFrames; y++) {
- for (x = 0; x < numHFrames; x++) {
- // degree location of indexs
- float yFrameLoc = (float) (lrlat + (y * frameLatInterval));
- float xFrameLoc = (float) (ullon + (x * frameLonInterval));
- if (coverage[x][y] == false) {
- if (rcb.within(yFrameLoc, xFrameLoc)) {
- coverage[x][y] = true;
- }
- }
- }
- }
- }
-
- float count = 0;
-
- for (y = 0; y < numVFrames; y++) {
- for (x = 0; x < numHFrames; x++) {
- if (coverage[x][y] == true) {
- // System.out.print("X");
- count++;
- } else {
- // System.out.print(".");
- }
- }
- // Debug.output("");
- }
-
- return count / (float) (numHFrames * numVFrames);
- }
-
- /**
- * Convert CRFPCoverageBox[] to vector of RpfCoverageBox.
- *
- * @param boxes CRFPCoverageBox[].
- * @return java.util.Vector
- */
- protected Vector translateCRFPCoverageBoxes(CRFPCoverageBox[] boxes) {
-
- Vector vector = new Vector();
- for (int i = 0; i < boxes.length; i++) {
- CRFPCoverageBox box = boxes[i];
- RpfCoverageBox rcb = new RpfCoverageBox();
- rcb.nw_lat = box.nw_lat;
- rcb.nw_lon = box.nw_lon;
- rcb.se_lat = box.se_lat;
- rcb.se_lon = box.se_lon;
- rcb.subframeLatInterval = box.subframeLatInterval;
- rcb.subframeLonInterval = box.subframeLonInterval;
- rcb.chartCode = box.chartCode;
- rcb.startIndexes = new Point(box.startIndexes.x, box.startIndexes.y);
- rcb.endIndexes = new Point(box.endIndexes.x, box.endIndexes.y);
- rcb.tocNumber = (int) box.tocNumber;
- rcb.entryNumber = (int) box.entryNumber;
- rcb.scale = box.scale;
- rcb.percentCoverage = box.percentCoverage;
- rcb.zone = box.zone;
- vector.addElement(rcb);
- }
- return vector;
- }
-
- /**
- * Given the indexes to a certain RpfTocEntry within a certain A.TOC, find
- * the frame/subframe data, decompress it, and return image pixels. The
- * tocNumber and entryNumber are given within the RpfCoverageBox received
- * from a getCoverage call. With the CORBA implementation, we are assuming
- * that the byte array is an encoded jpeg image.
- *
- * @param tocNumber the toc id for a RpfTocHandler for a particular frame
- * provider.
- * @param entryNumber the RpfTocEntry id for a RpfTocHandler for a
- * particular frame provider.
- * @param x the horizontal subframe index, from the left side of a boundary
- * rectangle of the entry.
- * @param y the vertical subframe index, from the top side of a boundary
- * rectangle of the entry.
- * @see #getCoverage(float ullat, float ullon, float lrlat, float lrlon,
- * CADRG p)
- * @return integer pixel data.
- */
- public int[] getSubframeData(int tocNumber, int entryNumber, int x, int y) {
- Server serv = getServer();
- if (serv == null)
- return null;
- byte[] jpegData;
- Debug.message("crfp", "CRFPClient: getting subframe data from server.");
-
- try {
- jpegData = serv.getSubframeData((short) tocNumber, (short) entryNumber, (short) x, (short) y, jpegQuality, clientID);
- if (Debug.debugging("crfpdetail")) {
- Debug.output("CRFPClient: got subframe data length " + jpegData.length);
- }
-
- // Need to check for the corba rendition of an allowable
- // null image (length 0)
- if (jpegData.length == 0)
- return null;
-
- ImageInputStream iis = new MemoryCacheImageInputStream(new ByteArrayInputStream(jpegData));
- BufferedImage bi = ImageIO.read(iis);
- int height = bi.getHeight();
- int width = bi.getWidth();
- int[] pixels = bi.getRGB(0, 0, width, height, null, 0, width);
- return pixels;
- } catch (IOException ioe) {
- Debug.error("CRFPClient: IOException decoding jpeg bytes");
- } catch (org.omg.CORBA.SystemException e) {
- handleCORBAError(e);
- }
- return null;
- }
-
- public RpfIndexedImageData getRawSubframeData(int tocNumber, int entryNumber, int x, int y) {
- Server serv = getServer();
- if (serv == null)
- return null;
-
- Debug.message("crfp", "CRFPClient: getting raw subframe data from server.");
-
- try {
- RawImage ri = serv.getRawSubframeData((short) tocNumber, (short) entryNumber, (short) x, (short) y, clientID);
-
- // Need to check for the corba rendition of an allowable
- // null image (length 0)
- if (ri.imagedata.length == 0 || ri.colortable.length == 0) {
- return null;
- }
-
- RpfIndexedImageData riid = new RpfIndexedImageData();
- riid.imageData = ri.imagedata;
- riid.colortable = new OMColor[ri.colortable.length];
-
- for (int i = 0; i < riid.colortable.length; i++) {
- riid.colortable[i] = new OMColor(ri.colortable[i]);
- }
- return riid;
-
- } catch (org.omg.CORBA.SystemException e) {
- handleCORBAError(e);
- return null;
- }
- }
-
- /**
- * Given the indexes to a certain RpfTocEntry within a certain A.TOC, find
- * the frame and return the attribute information. The tocNumber and
- * entryNumber are given within the RpfCoverageBox received from a
- * getCoverage call.
- *
- * @param tocNumber the toc id for a RpfTocHandler for a particular frame
- * provider.
- * @param entryNumber the RpfTocEntry id for a RpfTocHandler for a
- * particular frame provider.
- * @param x the horizontal subframe index, from the left side of a boundary
- * rectangle of the entry.
- * @param y the vertical subframe index, from the top side of a boundary
- * rectangle of the entry.
- * @see #getCoverage(float ullat, float ullon, float lrlat, float lrlon,
- * Projection p)
- * @return string.
- */
- public String getSubframeAttributes(int tocNumber, int entryNumber, int x, int y) {
-
- Server serv = getServer();
- if (serv == null)
- return "";
-
- Debug.message("crfp", "CRFPClient: getting subframe attributes from server.");
- try {
- return serv.getSubframeAttributes((short) tocNumber, (short) entryNumber, (short) x, (short) y, clientID);
- } catch (org.omg.CORBA.SystemException e) {
- handleCORBAError(e);
- }
- return "";
- }
-
- // ////////////// Corba management
-
- /**
- * get the server proxy.
- *
- * @return Server server or null if error.
- *
- */
- public Server getServer() {
- if (server == null)
- initServer();
- return server;
- }
-
- /**
- * bind to the server.
- *
- */
- private void initServer() {
- String ior = null;
- org.omg.CORBA.Object object = null;
-
- com.bbn.openmap.util.corba.CORBASupport cs = new com.bbn.openmap.util.corba.CORBASupport();
-
- try {
- object = cs.readIOR(iorURL);
- server = ServerHelper.narrow(object);
- } catch (IOException ioe) {
- if (Debug.debugging("crfp")) {
- Debug.output("CRFPClient.initServer() IO Exception with ior: " + iorURL);
- }
- server = null;
- return;
- }
-
- if (server == null) {
- object = cs.resolveName(naming);
-
- if (object != null) {
- server = ServerHelper.narrow(object);
- if (Debug.debugging("crfp")) {
- Debug.output("Have a RPF server:");
- Debug.output("*** Server: is a " + server.getClass().getName() + "\n" + server);
- }
- }
- }
-
- if (Debug.debugging("crfp")) {
- if (server == null) {
- Debug.error("CRFPClient.initServer: null server!\n IOR=" + ior + "\n Name = " + naming);
- } else {
- Debug.output("CRFPClient: server is golden.");
- }
- }
- }
-
- protected void handleCORBAError(org.omg.CORBA.SystemException e) {
- // don't freak out if we were only interrupted...
- if (e.toString().indexOf("InterruptedIOException") != -1) {
- Debug.error("CRFPClient server communication interrupted!");
- } else {
- Debug.error("CRFPClient caught CORBA exception: " + e + "\n" + "CRFPClient Exception class: " + e.getClass().getName()
- + "\n" + e.getMessage());
- e.printStackTrace();
- }
-
- server = null;// dontcha just love CORBA? reinit later
- }
-
-}
\ No newline at end of file
diff --git a/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPServer.java b/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPServer.java
deleted file mode 100644
index 1ab9d31ed..000000000
--- a/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPServer.java
+++ /dev/null
@@ -1,654 +0,0 @@
-// **********************************************************************
-//
-//
-//
-// BBN Technologies
-// 10 Moulton Street
-// Cambridge, MA 02138
-// (617) 873-8000
-//
-// Copyright (C) BBNT Solutions LLC. All rights reserved.
-//
-//
-// **********************************************************************
-//
-// $Source: /cvs/distapps/openmap/src/corba/com/bbn/openmap/layer/rpf/corba/CRFPServer.java,v $
-// $RCSfile: CRFPServer.java,v $
-// $Revision: 1.6 $
-// $Date: 2005/08/11 19:30:00 $
-// $Author: dietrick $
-//
-// **********************************************************************
-
-package com.bbn.openmap.layer.rpf.corba;
-
-import java.awt.event.ActionListener;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import javax.swing.Timer;
-
-import com.bbn.openmap.image.JPEGHelper;
-import com.bbn.openmap.layer.rpf.RpfCacheHandler;
-import com.bbn.openmap.layer.rpf.RpfColortable;
-import com.bbn.openmap.layer.rpf.RpfCoverageBox;
-import com.bbn.openmap.layer.rpf.RpfFrameCacheHandler;
-import com.bbn.openmap.layer.rpf.RpfIndexedImageData;
-import com.bbn.openmap.layer.rpf.RpfSubframe;
-import com.bbn.openmap.layer.rpf.RpfTocHandler;
-import com.bbn.openmap.layer.rpf.RpfViewAttributes;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.CRFPCADRGProjection;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.CRFPCoverageBox;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.CRFPViewAttributes;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.RawImage;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.ServerPOA;
-import com.bbn.openmap.layer.rpf.corba.CRpfFrameProvider.XYPoint;
-import com.bbn.openmap.proj.CADRG;
-import com.bbn.openmap.proj.coords.LatLonPoint;
-import com.bbn.openmap.util.Debug;
-import com.bbn.openmap.util.corba.CORBASupport;
-
-/**
- * The CRFPServer is a server implementation of the
- * CorbaRpfFrameProvider.idl. It realy implements most of the fuctions
- * of the RpfFrameProvider, but is not one. The CRFPClient is the
- * RpfFrameProvider.
- *
- *
- * This server requires the com.sun.image.codec.jpeg package.
- */
-public class CRFPServer extends ServerPOA implements ActionListener {
-
- protected static String iorfile = null;
- protected static String naming = null;
- /** A cache for every client. */
- Hashtable caches;
- /** View Attributes for every client. */
- Hashtable viewAttributeLists;
- /** The cache for the current client. */
- protected RpfFrameCacheHandler currentCache;
- /** The view attrbutes for the current client. */
- protected RpfViewAttributes currentViewAttributes;
- /** The paths to the RPF directories. */
- protected String[] rpfpaths;
- /** The Rpf Table of Contents handlers for the data. */
- protected RpfTocHandler[] tocs;
- /** Hashtable to keep track of how old certain caches are. */
- Hashtable timestamps;
- /**
- * Timer for clearing out caches from sloppy clients. It's only
- * enabled when the -timewindow flag is used.
- */
- Timer timer;
- /** 10, or the default number of active caches kept. */
- public final static int DEFAULT_MAX_USERS = 10;
- /** The number of caches kept by the server. */
- protected int maxUsers = DEFAULT_MAX_USERS;
- /** 5 minutes. The default timer cycle. */
- public final static int DEFAULT_TIME_WINDOW = 1000 * 60 * 5; // 5
- // minutes
- /**
- * The amount of time (milliseconds) reflecting how long an
- * inactive cache is kept
- */
- protected long timeWindow = DEFAULT_TIME_WINDOW;
-
- /**
- * Default Constructor.
- */
- public CRFPServer() {
- this("Default");
- }
-
- /**
- * The constructor that you should use.
- *
- * @param name the identifying name for persistance.
- */
- public CRFPServer(String name) {
- super();
- caches = new Hashtable();
- viewAttributeLists = new Hashtable();
- timestamps = new Hashtable();
- }
-
- /**
- * Get the current cache given a unique ID. If a cache is not
- * here, create it.
- *
- * @param uniqueID a unique identifier.
- */
- protected RpfFrameCacheHandler getCurrentCache(String uniqueID) {
- RpfFrameCacheHandler cache = (RpfFrameCacheHandler) caches.get(uniqueID);
- if (cache == null && tocs != null) {
- Debug.message("crfp", "CRFPServer: Creating cache for new client");
- cache = new RpfFrameCacheHandler(tocs);
- caches.put(uniqueID, cache);
- }
-
- timestamps.put(uniqueID, new Long(System.currentTimeMillis()));
- return cache;
- }
-
- /**
- * Get rid of any cache that is older than the time window.
- */
- protected void cleanCache(long timeWindow) {
- // OK, we need to get rid of one.
- long currentTime = System.currentTimeMillis();
- Enumeration keys = timestamps.keys();
-
- while (keys.hasMoreElements()) {
- Object tester = keys.nextElement();
- Long time = (Long) timestamps.get(tester);
-
- if ((currentTime - time.longValue()) >= timeWindow) {
- caches.remove(tester);
- timestamps.remove(tester);
- viewAttributeLists.remove(tester);
-
- if (Debug.debugging("crfp")) {
- Debug.output("Expired cache, removing, have "
- + caches.size() + " caches left.");
- }
- }
- }
- }
-
- /**
- * Create a spot in the cache for a new entry. If something is
- * removed from the cache, it is returned here.
- */
- protected RpfCacheHandler sweepCaches() {
- if (caches.size() < maxUsers) {
- return null;
- }
-
- // OK, we need to get rid of one.
- long diff = Long.MAX_VALUE;
- Enumeration keys = timestamps.keys();
- Object getRid = null;
-
- while (keys.hasMoreElements()) {
- Object tester = keys.nextElement();
- Long time = (Long) timestamps.get(tester);
-
- if (time.longValue() < diff) {
- getRid = tester;
- diff = time.longValue();
- }
- }
- boolean DEBUG = false;
- if (getRid != null) {
- if (Debug.debugging("crfp")) {
- DEBUG = true;
- }
- if (DEBUG)
- Debug.output("Removing cache for new user, was "
- + caches.size());
-
- caches.remove(getRid);
- timestamps.remove(getRid);
- viewAttributeLists.remove(getRid);
-
- if (DEBUG)
- Debug.output(" now " + caches.size());
- }
-
- if (caches.size() >= maxUsers) {
- return sweepCaches();
- } else {
- return (RpfCacheHandler) getRid;
- }
- }
-
- /**
- * Get the current view attributes given a unique ID. If view
- * attributes are not here, create them.
- *
- * @param uniqueID a client-unique identifier.
- */
- protected RpfViewAttributes getCurrentViewAttributes(String uniqueID) {
- RpfViewAttributes va = (RpfViewAttributes) viewAttributeLists.get(uniqueID);
- if (va == null) {
- Debug.message("crfp",
- "CRFPServer: Creating attributes for new client");
- va = new RpfViewAttributes();
- viewAttributeLists.put(uniqueID, va);
- }
- return va;
- }
-
- /**
- * Set the view attributtes for the current client.
- *
- * @param va the view attribute settings.
- * @param uniqueID a client-unique identifier.
- */
- public void setViewAttributes(CRFPViewAttributes va, String uniqueID) {
-
- currentViewAttributes = getCurrentViewAttributes(uniqueID);
- currentViewAttributes.numberOfColors = (int) va.numberOfColors;
- currentViewAttributes.opaqueness = (int) va.opaqueness;
- currentViewAttributes.scaleImages = va.scaleImages;
- currentViewAttributes.imageScaleFactor = va.imageScaleFactor;
- currentViewAttributes.chartSeries = va.chartSeries;
-
- if (Debug.debugging("crfp")) {
- Debug.output("CRFPServer: Setting attributes for client:\n "
- + currentViewAttributes);
- }
- }
-
- /**
- * Get the Coverage Boxes that fit the geographical area given.
- *
- * @param ullat NW latitude.
- * @param ullon NW longitude
- * @param lrlat SE latitude
- * @param lrlon SE longitude
- * @param p a CADRG projection
- * @param uniqueID a client-unique identifier.
- */
- public CRFPCoverageBox[] getCoverage(double ullat, double ullon, double lrlat, double lrlon,
- CRFPCADRGProjection p,
- String uniqueID) {
-
- Debug.message("crfp",
- "CRFPServer: Handling coverage request for client");
-
- currentCache = getCurrentCache(uniqueID);
- currentViewAttributes = getCurrentViewAttributes(uniqueID);
- currentCache.setViewAttributes(currentViewAttributes);
-
- LatLonPoint llpoint = new LatLonPoint.Double(p.center.lat, p.center.lon);
- CADRG proj = new CADRG(llpoint, p.scale, p.width, p.height);
-
- Vector vector = currentCache.getCoverage(ullat,
- ullon,
- lrlat,
- lrlon,
- proj);
-
- return vectorToCRFPCoverageBoxes(vector);
- }
-
- /**
- * Method that provides all the coverage boxes that could provide
- * coverage over the given area.
- *
- * @param ullat NW latitude.
- * @param ullon NW longitude
- * @param lrlat SE latitude
- * @param lrlon SE longitude
- * @param p a CADRG projection
- * @param uniqueID a client-unique identifier.
- */
- public CRFPCoverageBox[] getCatalogCoverage(double ullat, double ullon, double lrlat,
- double lrlon,
- CRFPCADRGProjection p,
- String chartSeriesCode,
- String uniqueID) {
-
- Debug.message("crfp", "CRFPServer: handling catalog request for client");
- currentCache = getCurrentCache(uniqueID);
- currentViewAttributes = getCurrentViewAttributes(uniqueID);
- currentCache.setViewAttributes(currentViewAttributes);
-
- LatLonPoint llpoint = new LatLonPoint.Float(p.center.lat, p.center.lon);
- CADRG proj = new CADRG(llpoint, p.scale, p.width, p.height);
- Vector vector = currentCache.getCatalogCoverage(ullat,
- ullon,
- lrlat,
- lrlon,
- proj,
- chartSeriesCode);
- return vectorToCRFPCoverageBoxes(vector);
- }
-
- /**
- * Convert a Vector of RpfCoverageBox to a CRFPCoverageBox array.
- *
- * @param vector vector of RpfCoverageBox.
- * @return array of CRFPCoverageBox.
- */
- protected CRFPCoverageBox[] vectorToCRFPCoverageBoxes(Vector vector) {
- int size = vector.size();
- CRFPCoverageBox[] rets = new CRFPCoverageBox[size];
-
- for (int i = 0; i < size; i++) {
- RpfCoverageBox box = (RpfCoverageBox) vector.elementAt(i);
- if (box != null) {
- rets[i] = new CRFPCoverageBox((float) box.nw_lat, (float) box.nw_lon, (float) box.se_lat, (float) box.se_lon, box.subframeLatInterval, box.subframeLonInterval, box.chartCode, (short) box.zone, new XYPoint((short) box.startIndexes.x, (short) box.startIndexes.y), new XYPoint((short) box.endIndexes.x, (short) box.endIndexes.y), (short) box.tocNumber, (short) box.entryNumber, box.scale, box.percentCoverage);
- }
- }
- return rets;
- }
-
- /**
- * Retrieve the subframe data from the frame cache, decompress it,
- * and convert it to a JPEG image.
- *
- * @param tocNumber the number of the RpfTocHandler for the
- * currentCache to use.
- * @param entryNumber the coverage box index that contains the
- * subframe.
- * @param x the horizontal location of the subframe. The
- * RpfCacheHandler figures this out.
- * @param y the vertical location of the subframe. The
- * RpfCacheHandler figures this out.
- * @param jpegQuality the compression parameter for the image.
- * @param uniqueID a client-unique identifier.
- * @return byte[] of jpeg image
- */
- public byte[] getSubframeData(short tocNumber, short entryNumber, short x,
- short y, float jpegQuality, String uniqueID) {
-
- Debug.message("crfpdetail",
- "CRFPServer: handling subframe request for client");
-
- try {
- currentCache = getCurrentCache(uniqueID);
-
- int[] pixels = currentCache.getSubframeData((int) tocNumber,
- (int) entryNumber,
- (int) x,
- (int) y);
- if (pixels != null) {
- byte[] compressed = null;
- try {
- compressed = JPEGHelper.encodeJPEG(RpfSubframe.PIXEL_EDGE_SIZE,
- RpfSubframe.PIXEL_EDGE_SIZE,
- pixels,
- jpegQuality);
- } catch (Exception e) {
- Debug.error("CRFPServer: JPEG Compression error: " + e);
- compressed = new byte[0];
- }
- if (Debug.debugging("crfpdetail")) {
- Debug.output("CRFPServer: subframe is " + compressed.length
- + " bytes");
- }
- return compressed;
- }
- } catch (OutOfMemoryError oome) {
- handleMemoryShortage();
- }
-
- return new byte[0];
- }
-
- public RawImage getRawSubframeData(short tocNumber, short entryNumber,
- short x, short y, String uniqueID) {
-
- Debug.message("crfpdetail",
- "CRFPServer: handling raw subframe request for client");
-
- RawImage ri = new RawImage();
- RpfIndexedImageData riid = null;
-
- try {
- currentCache = getCurrentCache(uniqueID);
-
- riid = currentCache.getRawSubframeData((int) tocNumber,
- (int) entryNumber,
- (int) x,
- (int) y);
- } catch (OutOfMemoryError oome) {
- handleMemoryShortage();
- riid = null;
- }
-
- if (riid == null || riid.imageData == null) {
- Debug.message("crfpdetail", "CRFPServer: null image data");
- ri.imagedata = new byte[0];
- ri.colortable = new int[0];
- } else {
- ri.imagedata = riid.imageData;
-
- RpfColortable colortable = currentCache.getColortable();
-
- ri.colortable = new int[colortable.colors.length];
- for (int i = 0; i < colortable.colors.length; i++) {
- ri.colortable[i] = colortable.colors[i].getRGB();
- }
- Debug.message("crfpdetail", "CRFPServer: GOOD image data");
- }
- return ri;
- }
-
- /**
- * Get the subframe attributes for the identified subframe.
- * Provided as a single string, with newline characters separating
- * features.
- *
- * @param tocNumber the number of the RpfTocHandler for the
- * currentCache to use.
- * @param entryNumber the coverage box index that contains the
- * subframe.
- * @param x the horizontal location of the subframe. The
- * RpfCacheHandler figures this out.
- * @param y the vertical location of the subframe. The
- * RpfCacheHandler figures this out.
- * @param uniqueID a client-unique identifier.
- * @return String with the subframe attributes.
- */
- public String getSubframeAttributes(short tocNumber, short entryNumber,
- short x, short y, String uniqueID) {
- Debug.message("crfpdetail",
- "CRFPServer: handling subframe attribute request for client");
-
- try {
- currentCache = getCurrentCache(uniqueID);
- return currentCache.getSubframeAttributes((int) tocNumber,
- (int) entryNumber,
- (int) x,
- (int) y);
- } catch (OutOfMemoryError oome) {
- handleMemoryShortage();
- }
- return new String();
- }
-
- /**
- * The signoff function lets the server know that a client is
- * checking out.
- *
- * @param uniqueID a client-unique identifier.
- */
- public void signoff(String uniqueID) {
- Debug.message("crfp", "CRFPServer: Client" + uniqueID + " signing off!");
- caches.remove(uniqueID);
- viewAttributeLists.remove(uniqueID);
- timestamps.remove(uniqueID);
- }
-
- protected void handleMemoryShortage() {
- Debug.error("CRFPServer out of memory! Dumping all caches!");
- caches.clear();
- viewAttributeLists.clear();
- timestamps.clear();
- }
-
- /**
- * Start the server.
- *
- * @param args command line arguments.
- */
- public void start(String[] args) {
- CORBASupport cs = new CORBASupport();
-
- if (args != null) {
- parseArgs(args);
- }
-
- cs.start(this, args, iorfile, naming);
- }
-
- /**
- * Set the maximum number of caches to given number, represented
- * in a string. If the string isn't a good number,
- * DEFAULT_MAX_USERS will be used.
- */
- public void setMaxUsers(String number) {
- try {
- setMaxUsers(Integer.parseInt(number));
- } catch (NumberFormatException nfe) {
- setMaxUsers(DEFAULT_MAX_USERS);
- }
- }
-
- /**
- * Set the maximum number of caches to given number. If the number
- * isn't a good, DEFAULT_MAX_USERS will be used.
- */
- public void setMaxUsers(int number) {
- if (number >= 1) {
- maxUsers = number;
- } else {
- Debug.output("Max users of " + number + " not supported, set to "
- + DEFAULT_MAX_USERS);
- maxUsers = DEFAULT_MAX_USERS;
- }
- }
-
- /**
- * Get the maximum number of caches allowed in the server. One per
- * user. Get it?
- */
- public int getMaxUsers() {
- return maxUsers;
- }
-
- /**
- * Set how long a user's cache will be kept around.
- */
- public void setTimeWindow(String number) {
- try {
- setTimeWindow(Long.parseLong(number));
- } catch (NumberFormatException nfe) {
- setTimeWindow(DEFAULT_TIME_WINDOW);
- }
- }
-
- /**
- * Set how long a user's cache will be kept around.
- */
- public void setTimeWindow(long number) {
- if (timer == null) {
- timer = new javax.swing.Timer((int) number, (ActionListener) this);
- }
-
- if (number >= 1) {
- timeWindow = number;
- Debug.output("Timer enabled, set to " + (number / 1000)
- + " seconds");
- } else if (number == 0) {
- // stop timer
- timer.stop();
- return;
- } else {
- timeWindow = DEFAULT_TIME_WINDOW;
- Debug.output("Timer enabled, set to "
- + (DEFAULT_TIME_WINDOW / 1000) + " seconds");
- }
-
- timer.start();
- }
-
- /**
- * The the time window for how long users caches are kept around.
- */
- public long getTimeWindow() {
- return timeWindow;
- }
-
- /**
- * Handle an ActionEvent from the Timer.
- *
- * @param ae action event from the timer.
- */
- public void actionPerformed(java.awt.event.ActionEvent ae) {
- if (Debug.debugging("crfp")) {
- Debug.output("Ping! checking cache...");
- }
- cleanCache(getTimeWindow());
- }
-
- /**
- */
- public void parseArgs(String[] args) {
- rpfpaths = null;
-
- try {
- for (int i = 0; i < args.length; i++) {
- if (args[i].equalsIgnoreCase("-ior")) {
- iorfile = args[++i];
- } else if (args[i].equalsIgnoreCase("-name")) {
- naming = args[++i];
- } else if (args[i].equalsIgnoreCase("-help")) {
- printHelp();
- } else if (args[i].equalsIgnoreCase("-rpfpaths")) {
- rpfpaths = getPaths(args[++i]);
- } else if (args[i].equalsIgnoreCase("-maxusers")) {
- setMaxUsers(args[++i]);
- } else if (args[i].equalsIgnoreCase("-timewindow")) {
- setTimeWindow(args[++i]);
- } else if (args[i].equalsIgnoreCase("-verbose")) {
- Debug.put("crfp");
- } else if (args[i].equalsIgnoreCase("-h")) {
- printHelp();
- }
- }
- } catch (ArrayIndexOutOfBoundsException aioobe) {
- printHelp();
- }
-
- // if you didn't specify an iorfile
- if (iorfile == null && naming == null) {
- Debug.error("CRFPServer: IOR file and name service name are null! Use `-ior' or '-name' flag!");
- System.exit(-1);
- }
-
- if (rpfpaths == null) {
- Debug.error("CRFPServer: No RPF directory paths specified! Use `-rpfpaths' flag!");
- System.exit(-1);
- } else {
- tocs = RpfFrameCacheHandler.createTocHandlers(rpfpaths);
- Debug.output("CRFPServer: CRFPServer! Running with paths => ");
- for (int j = 0; j < rpfpaths.length; j++) {
- Debug.output(" " + rpfpaths[j]);
- }
- }
- }
-
- private String[] getPaths(String str) {
- StringTokenizer tok = new StringTokenizer(str, ";");
- int len = tok.countTokens();
- String[] paths = new String[len];
- for (int j = 0; j < len; j++) {
- paths[j] = tok.nextToken();
- }
- return paths;
- }
-
- /**
- * printHelp should print a usage statement which reflects
- * the command line needs of your specialist.
- */
- public void printHelp() {
- Debug.output("usage: java CRFPServer [-ior || -name